brunch

You can make anything
by writing

C.S.Lewis

by Dana Oct 19. 2023

[Network] 2. 네트워크 아키텍처와 TCP/IP

TCP/IP의 4계층 구조와 호칭, 헤더, 캡슐화, 역캡슐화


네트워크 아키텍처

네트워크 아키텍처는 네트워크 프로토콜과 통신을 OSI 7계층모델, TCP/IP 모델 등과 같이 계층으로 분류 및 도식화하여 표현하는 방식이다. 1970년대 초반, 네트워크는 보통 정부 또는 특정 벤더에서 독점적으로 개발되어 왔으나 점차 다른 나라나 다른 기업들까지 개발범위가 넓혀져 가며 공개형 모델이 필요함을 인지하게 되며 등장했다. 


TCP/IP를 알아보자

TCP와 IP 모두 프로토콜의 종류이다.


앞서 알아봤듯 컴퓨터들이 통신하는 언어와 규칙을 우리는 프로토콜이라고 부르며, 복수의 프로토콜의 조합을 네트워크 아키텍처라고 부른다. TCP/IP 모델은 1960년대 말 방위고등연구계획국 이라는 곳에서 연구되어, 1990년대 네트워크 표준이 ISO 모델과 TCP/IP모델 두가지로 좁혀지게 되었다. TCP와 IP는 현재 수많은 프로그램들이 인터넷으로 통신하는데 있어 가장 기반이 되는 프로토콜로, 실제 우리가 사용하는 PC와 스마트폰의 OS(운영체제) 에도 TCP/IP가 내장되어 있을만큼 현재 대부분의 네트워크는 TCP/IP 아키텍처를 이용하고 있다. 


자세히 기술하기 전 간단하게 알아보자면, TCP/IP는 악어와 악어새 같은 관계이다.

IP는 데이터를 최대한 빨리 목적지로 보내는 프로토콜로, 정확도보다 속도를 추구한다. 그저 빨리 보내는 것에 목적을 두고 있기 때문에, 데이터를 패킷이라고 하는 작은 단위로 잘게 쪼개서 날려버린다. IP는 목적지에 데이터가 정상적으로 도착했는지 안했는지, 순서가 바뀌었는지, 누락되었는지 등등의 여부는 IP가 보증하지 않으며, 그저 보내는데 집중한다.


TCP는 Tranmission Control Protocol / 전송 제어 프로토콜로, 속도보다 정확도를 추구한다. IP가 보낸 데이터 조각 패킷들을 점검하여 줄을 세우고, 망가졌거나 빠진 조각이 있는지 확인해서 누락된 데이터 조각이 있으면 IP한테 빠진 부분을 다시 보내달라고 요청한다. 한마디로, TCP와 IP는 서로를 보완해주는 관계이다.



TCP/IP의 4계층구조

먼저, 네트워크는 각각의 역할에 따라 계층이 분리되어 있다는 개념을 먼저 잡자.


네트워크는 계층으로 이루어져있다.

통신주체인 애플리케이션이 데이터를 주고받게 하려면 복수의 프로토콜을 조합해야 하는데, TCP/IP 네트워크 아키텍처에서는 다음과 같이 네 개의 프로토콜을 조합한다. 아래로 갈수록 기계가 이해할 수 있는 언어 , 위로 갈수록 사람이 이해할 수 있는 언어라고 보면 편하다. TCP/IP 모델은 이와 같이 프로토콜에 따른 4계층으로 분류되어 있으며, 아래서부터 네트워크 인터페이스 계층, 인터넷 계층, 전송계층, 응용계층으로 부른다. 각 계층에 포함되는 프로토콜이 모두 정상적으로 제 기능을 해야만 비로소 네트워크 통신이 이루어지고, 또한 어떤 계층이 정상적으로 동작하려면 그 하위 계층이 정상적으로 동작해야만 한다. 



1계층, 네트워크 인터페이스 계층 (Network Interface Layer)

네트워크 인터페이스 계층의 역할은 '같은 네트워크' 안에서 데이터를 전송하는 것이다.

네트워크 인터페이스 게층은 0과 1의 디지털 데이터를 전기신호와 같은 물리적 신호로 변환하여 다른 전송매체로 보낸다. 1계층은 보통 기계적 속성들을 정의하며, 예시로 케이블, 인터페이스, 허브, 리피터 등이 속한다. 110V 콘센트를 220V 콘센트에 연결할 수 없는 것처럼, 자기에게 맞는 인터페이스와 연결이 되어야 하는 것이다. USB, 케이블 등등 모두 인터페이스로 칭한다. 1계층의 주요 프로토콜은 이더넷과 무선 LAN (Wi-Fi), PPP 등이 있다.


2계층, 인터넷 계층 (Internet Layer)

하나의 '같은 네트워크'에 모든 기기가 연결되는 것은 아니다. 우리집 와이파이 공유기에 옆 동네 주민이 연결할 수 없는 것과 같다. 세상에는 많은 네트워크가 존재하고, 다양한 기기들이 각각의 네트워크에 연결되어 있다. 인터넷 계층은 '각각의 네트워크' 사이에서 데이터를 전송해주는 역할을 한다. 

'같은 네트워크' 를 기술적인 관점에서 말하자면 라우터와 레이어3 스위치(L3 스위치) 로 구획되는 범위, 또는 라우터와 레이어2 스위치(L2 스위치)로 구획되는 범위를 말한다. 하나의 네트워크를 다른 네트워크와 연결해서 데이터를 전송하도록 도와주는 기기가 라우터이며, 출발지와 도착지 사이의 데이터 전송을 가리켜 엔드투엔드 통신이라고 부른다. 계속 나올 용어들이니 미리 익혀두자. 인터넷 계층에 포함되는 프로토콜은 IP, ICMP, ARP, OSPF 등이 있다. 엔드투엔드 통신에 이용하는 프로토콜은 IP이고, ICMP와 ARP는 IP를 도와주는 프로토콜이다.

 

3계층, 전송 계층 (Transport Layer)

인터넷 계층을 통해 다른 네트워크로부터 데이터를 전달받았으면, 전송계층은 수많은경로로 들어온 다양한 데이터를 적절한 애플리케이션에 배분하는 역할을 한다. 데이터를 단순히 받는 것 뿐만 아니라 최종 목적지를 지정해주는 역할을 하는 것이다. TCP/IP에 포함되는 프로토콜은 TCP와 UDP이다. 

TCP는 엔드투엔드 통신의 신뢰성을 확보해준다는 특징을 갖는다. 풀어말하면, 어떤 이유로 데이터가 유실되어도 그 사실을 검출해 데이터를 다시 보내주는 역할을 하는 것이다. 그 밖에도 데이터를 분할하고 조합하는 역할도 한다. 


4계층, 응용 계층 (Application Layer)

응용계층은 사용자와 가장 밀접한 소프트웨어로, 애플리케이션이 기능을 실행하기 위해 데이터의 형식과 처리 절차 등을 결정하도록 한다. 데이터는 컴퓨터 용어인 0과 1로 이루어져있기 때문에, 사람이 이해할 수 있는 텍스트와 이미지 등으로 데이터를 표현한다. 응용 계층에 포함되는 프로토콜은 HTTP, SMTP, POP3, DHCP, DNS 등등..이 있다.

우리에게 가장 친숙한 HTTP는 여러 웹브라우저에서 이용되며, SMTP와 POP3는 Outlook과 같은 전자메일 소프트웨어에서 이용한다. 단, 응용계층에 포함된 프로토콜이라고 해서 반드시 애플리케이션에서 사용되는 것은 아니며, DHCP와 DNS는 애플리케이션 통신을 준비하기 위한 프로토콜이다.



TCP/IP의 데이터 송·수신 규칙



1. 헤더를 씌우고 벗겨내는 캡슐화, 역캡슐화



각 프로토콜에는 각각의 기능을 실현하기 위한 정보가 필요한데, 이를 헤더라고 부른다.

예를 들어, 데이터를 전송하는 2. 인터넷 계층의 프로토콜이라면 2계층 헤더에는 데이터 전송을 위한 출발지와 도착지에 대한 주소가 지정되어 있다. 데이터를 보내기 위해 데이터 위에 헤더를 씌우는 과정을 캡슐화(인캡슐레이션) 라고 부르며, 데이터를 처리하기 위해 데이터 위에 씌워져 있는 헤더를 벗겨내서 처리하는 과정을 역캡슐화(디캡슐레이션) 라고 한다. 데이터를 전송할 때는 4계층에서 1계층으로 내려가며 헤더를 추가하며, 데이터를 받을 때는 1계층에서 4계층으로 헤더를 Detach, 벗겨낸다.


캡슐화와 역캡슐화는 왜필요할까?

우리가 보는 데이터는 텍스트. 이미지와 같은 사람용 데이터지만, PC간 데이터를 주고받을 때에는 0과 1의 컴퓨터용 데이터로의 변환이 필요하다. 각 계층의 헤더들은 0과 1의 컴퓨터용 데이터를 우리가 알아보기 쉬운 사람용 데이터로 바꾸는 과정에서 변환에 필요한 정보들을 담는다.


예를 들어, PC1이 PC2로 데이터를 보낸다고 가정해보자. PC1의 데이터를 PC2로 보내기 위해, 가장 먼저 4계층에서 데이터가 HTTP라는 브라우저로 열릴 수 있도록 정보를 담은 HTTP 헤더를 추가하여 아래로 내린다. 3계층은 [HTTP헤더+데이터] 를 받아 PC2가 데이터를 받았을 때 PC1의 신뢰성 있는 데이터라는 것을 인지할 수 있도록 TCP헤더를 추가하여 아래로 내린다. 2계층은 [TCP헤더+HTTP헤더+데이터]를 받아 PC2로 데이터를 빠르게 보내기 위한 IP헤더를 추가하여 아래로 내린다. 1계층은 [IP헤더+TCP헤더+HTTP헤더+데이터] 를 받아 물리적인 전기신호로 데이터를 변환하기 위해 이더넷 규격에 대응하는 이더넷 헤더와, FCS (Frame Chech Sequence) 를 추가하면 PC2로 보낼 데이터 전체가 완성된다.


이제  PC2가 PC1에게 데이터를 받았다고 가정해보자. PC2의 1계층은 이더넷 헤더를 참조해 물리적인 전기신호를 먼저 0과 1의 데이터로 변환하고, FCS를 참조해 데이터에 오류가 없는지 확인한다. 이상이 없으면 이더넷 헤더와 FCS를 떼어버리고 위로 올린다. 2계층은 IP헤더의 출발지와 목적지 정보를 참조해 이 데이터가 자기 앞으로 온 데이터가 맞는지 확인한다. 이상이 없으면 IP헤더를 떼어버리고 위로 올린다. 3계층은 TCP헤더를 참조해 어느 애플리케이션으로 데이터를 넘겨야하는지 확인한다. 이상이 없으면 TCP 헤더를 떼어버리고 해당하는 애플리케이션으로 올린다. 이렇게해서 4계층까지 도달하면 HTTP헤더를 확인해 웹브라우저의 형태로 데이터가 표현되는 것임을 확인하여 사람이 알아볼 수 있는 텍스트, 이미지 등으로 데이터를 변환한다.



 2. 계층별로 데이터를 부르는 방법이 다르다.



앞서 설명했듯 데이터를 [TCP헤더+HTTP헤더+데이터] 이런 식으로 부르기가 너무 복잡하기 때문에, TCP/IP 네트워크 아키텍처는 TCP/IP의 각 계층을 거치면서 데이터에 여러 프로토콜이 추가됨에 따라 명칭을 다르게 부르기로 했다. 같은 데이터라도 하더라도, 계층에 따라 응용 계층은 메시지, 전송 계층은 세그먼트, 인터넷 계층은 패킷, 네트워크 인터페이스 계층은 프레임이라고 한다. 


위 이미지와 같이 각각의 계층에 프로토콜이 존재한다면, 데이터에 HTTP헤더가 추가되면 HTTP 메시지가 된다. HTTP 메시지에 TCP헤더가 추가되면 TCP세그먼트가 된다. TCP세그먼트에 IP헤더가 추가되면 IP패킷이 되고, IP패킷에 이더넷 헤더가 추가되면 이더넷 프레임이 된다.


이처럼 계층에 따라 부르는 방법에 차이를 두게 되면서, 우리는 데이터의 구분이 편해졌을 뿐만 아니라 네트워크 통신을 위한 기기들이 어느 계층을 바라보고 있는지 더욱 명확히 알 수 있게 되었다. 예를 들어, 라우터라는 네트워크 장비는 IP패킷을 전송하는 기능을 하는 기기이다. 즉, 라우터를 이해하려면 인터넷 계층의 데이터 전송을 이해하면 된다. 레이어2 스위치라는 네트워크 장비는 이더넷 프레임을 전송하는 역할을 하는 기기이다. 즉, 라우터2 스위치를 이해하려면 네트워크 인터페이스 계층을 이해하면 된다.



작가의 이전글 [Network] 1. IT의 기본은 네트워크
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari