최근에 모두의 네트워크라는 책을 읽었는데, 네트워크 기초 지식을 스승과 제자가 대화하는 형식으로 풀어낸 책이라 재미있게 읽었다. 태블릿으로 끄적끄적하다가, 복습도 할 겸 이 책 내용을 기반으로 네트워크 상에서 데이터를 주고받을 때 일어나는 일을 정리해보려 한다.


프로토콜(Protocol)

본론으로 들어가기 전 먼저 프로토콜에 대해 간단히 짚고 넘어가자. 우체국을 통해 편지를 주고받기 위해선 대략 다음과 같은 절차를 밟는다.

  1. 편지 봉투에 수신지, 발신지를 적는다.
  2. 우표를 붙여 우체통에 넣는다.
  3. 우체부 아저씨가 수거해서 배달한다.
  4. 수신지의 편지함에 집어넣는다.
  5. 봉투를 열어서 내용물을 확인한다.

이건 편지라는 데이터를 주고받기 위해 사람들이 만들어낸 규칙에 해당된다. 잘못된 주소를 적는다던가, 우표를 붙이지 않는다던가, 일련의 절차 중 하나라도 문제가 생기면 편지 전달에 실패한다.

 

왜냐면... 그것이 약속이니까...!

이는 컴퓨터 세계에서도 마찬가지다. 컴퓨터 간 데이터를 주고받을 때 상호 간에 수행하는 절차가 다르면 정상적으로 통신을 할 수 없다. 프로토콜은 네트워크 상에서 컴퓨터 간 통신하기 위한 약속에 해당된다.

 

패킷(Packet)

나름 최선을 다해 그린 트럭과 승용차

통신을 할 때 데이터는 패킷이라는 단위로 나눠져서 전송된다. 이차선 도로를 대형 트럭이 점령해버리면, 도로에선 교통 정체가 일어나게 된다. 비슷한 원리로 덩치가 큰 데이터를 쪼개지 않고 그대로 전송하게 되면 그 데이터가 대역폭을 모두 점유해버려서 그동안 다른 기기는 회선을 사용할 수 없게 된다. 이런 문제를 막기 위해 통신 데이터를 패킷으로 분할하여 보낸다.

 

TCP/IP

TCP/IP는 인터넷 세계에서 표준으로 사용되고 있는 네트워크 프로토콜을 의미한다. 인터넷을 사용하는 수많은 프로그램이 TCP와 IP 기반으로 이루어졌기에 인터넷 프로토콜 그 자체를 표현하는 용어이기도 했고, 다양한 프로토콜이 개발된 현시점에도 사실상 인터넷 프로토콜을 대표하는 용어로 사용 중이다.

 

이름에 포함되어 있듯, TCP/IP는 IP(Internet Protocol)를 중심으로 한 여러 프로토콜의 집합체이기도 하다. 여기서 '여러 IP를 중심으로 한 프로토콜'엔 HTTP, FTP, SMTP, TCP, UDP 등등.. 다양한 종류가 존재한다. 짐작하다시피 여기서 끝에 오는 P는 모두 Protocol의 약자다. 통신의 종류나 주고받는 데이터 종류에 따라 다양한 종류의 프로토콜이 존재한다.

 

TCP/IP 5계층

TCP/IP 5 계층은 네트워크의 기본 구조를 5개의 계층으로 나눠서 표준화한 것이다. 네트워크를 이용한 통신은 서로 다른 역할을 갖고 있는 5개의 계층을 통해 일어난다.

 

그림과 같이 응용(Application), 전송(Translate), 네트워크(Network), 데이터링크(Data Link), 물리(Physical) 계층으로 구성되어 있다. 각각의 계층은 독립적이므로 데이터가 전달되는 동안에 다른 계층의 영향을 받지 않는다. 각 계층별 역할은 다음과 같다.

  • 1 계층 - 물리 : 물리적인 연결과 전기 신호 변환/제어를 담당한다.
  • 2 계층 - 데이터링크 : 네트워크 기기 간 데이터 전송 및 물리 주소를 결정한다.
  • 3 계층 - 네트워크 : 다른 네트워크와 통신하기 위한 경로를 설정하고 논리 주소를 결정한다. IP 주소라는 개념이 이 계층에 위치한다.
  • 4 계층 - 전송 : 네트워크 계층에서 보내온 데이터 정렬, 오류 정정 등을 수행하고 신뢰할 수 있는 통신을 확보한다. TCP/UDP 같은 프로토콜이 이 계층에 위치한다.
  • 5 계층 - 응용 : 이메일, 웹 브라우저, 파일 전송 등 통신하기 위해 필요한 서비스를 제공한다.

데이터를 전송하는 쪽은 데이터를 보내기 위해 상위 계층(5 계층) 하위 계층(1 계층)으로 데이터를 전달한다. 반대로 데이터를 수신하는 쪽은 하위 계층 상위 계층으로 각 계층을 통해 전달된 데이터를 받게 된다.

 

캡슐화/역캡슐화

서로 다른 계층 간 데이터를 주고받는 과정에서 캡슐화와 역캡슐화가 발생하게 된다.
응용 계층에서 처음 요청 데이터가 생성되고 나면, 데이터가 응용 전송 네트워크 데이터 링크 순으로 전달 된다. 이때 계층 별로 맡은 역할에 따라 추가적으로 정보가 생성되며, 이것을 헤더의 형태로 하나씩 붙여나가게 된다. 이렇게 헤더를 차례대로 붙여가는 과정을 캡슐화라고 한다.

반대로 데이터를 수신하는 쪽에서는 수신받은 데이터가 데이터 링크  네트워크 전송 응용 계층 순으로 타고 올라간다. 이 과정에서 양파껍질 벗기듯 헤더를 차례대로 제거하면서 데이터를 전달하는 과정을 역캡슐화라고 한다.

 

이해를 돕기 위한 이미지

데이터 송신

데이터의 송신 과정

  1. 응용 계층에서 요청 데이터가 만들어진다.
  2. 전송 계층에서 신뢰할 수 있는 통신을 구현하기 위한 헤더를 데이터에 붙인다. 이렇게 만들어진 데이터를 세그먼트라고 한다.
  3. 네트워크 계층에서 다른 네트워크와 통신하기 위한 헤더를 세그먼트에 붙인다. 이렇게 만들어진 데이터를 패킷 또는 데이터그램이라고 한다.
  4. 데이터 링크 계층에서 물리적인 통신 채널을 열기 위해 패킷에 헤더와 트레일러를 붙인다. 여기서 트레일러는 데이터를 전달할 때 데이터 끝부분에 붙이는 정보로, 주로 에러 검출에 쓰인다. 이렇게 만들어진 데이터를 프레임이라고 한다.
  5. 이렇게 만들어진 프레임을 최종적으로 물리 계층에서 0, 1의 비트로 구성된 전기 신호로 변환해 수신 컴퓨터 쪽에 전송한다.

데이터 수신

데이터의 수신 과정

데이터를 수신할 땐 반대로 헤더를 차례대로 제거하면서 데이터를 전달하는 역캡슐화가 발생한다.

 


여기까지 TCP/IP 5계층에서 어떻게 데이터를 주고받는지 개요를 살펴봤다.

송신 ↔ 수신 과정에서 계층 별로 어떤 일을 하고있는지 더 구체적인 설명은 다음 글에서 마저 작성하겠다.

 

다음 글 : [네트워크] TCP/IP 5계층에서 일어나는 일 (2)