인캡슐레이션과 디캡슐레이션이란?
인캡슐레이션은 보내는 쪽, 디캡슐레이션은 받는 쪽이다.
- 인캡슐레이션: 애플리케이션에서 데이터를 데이터 플로 계층(1~4계층)으로 내려보내면서 패킷에 데이터를 넣을 수 있도록 분할하는 과정
- 디캡슐레이션: 패킷을 다시 애플리케이션에서 사용할 수 있는 큰 데이터 형태로 결합해 사용하는 과정
Flow
데이터는 상위 -> 하위로 전달되며 다시 하위 -> 상위 계층으로 전달되고 헤더정보는 각 계층끼리 전달된다. 데이터 하나 개를 전송하는 작업은 생각보다 복잡해 데이터 플로 계층(1~4계층)에서만 3개의 헤더 정보가 추가된다. 각 계층 헤더를 이용해 송신자 계층과 수신자 계층 간 논리적인 통신이 가능하다.
- 인캡슐레이션
- 애플리케이션에서 데이터를 데이터 플로 계층으로 보낸다.
- 트랜스포트 계층을 시작으로 아래 계층으로 보낼 때 각각 자신이 필요한 헤더 정보를 추가해서 전기신호로 변환한다.
- 패킷에 데이터를 넣을 수 있도록 분할한다.
- 2진수 비트단위로 전송한다.
- 디캡슐레이션
- 받은 전기 신호를 데이터 형태로 만들어 2계층으로 올려보낸다.
- 2계층에서는 송신자가 작성한 2계층 헤더에 포함된 정보를 확인한다.
- LAN카드가 확인하여 만약 2계층에 적힌 정보 중 목적지가 자신이 아니라면 자신에게 온 패킷이 아니므로 버린다.
- 상위 계층으로 올려보낼 때 방금 확인한 헤더 정보는 벗겨내고 올려보낸다.
- 최종적으로 애플리케이션 계층으로 올려보낸다.
각 계층에서 넣는 헤더에는 어떤 것들이 있나
헤더에는 반드시 두 가지 정보가 포함되어야 디캡슐레이션을 제대로 할 수 있다.
-
현재 계층에서 정의하는 정보
계층(Layer) 기본 용어 헤더 정보 4 트랜스포트 계층
(전송 계층)시퀀스(Sequence), 애크(ACKnowledgement) 번호 3 네트워크 계층 논리적인 주소인 출발지, 도착지 IP 주소 2 데이터 링크 계층 물리적인 주소인 출발지, 도착지 MAC 주소 - 1계층인 피지컬 계층은 전기신호를 잘 전달해주는 역할만 하고 헤더 정보는 없다.
-
상위 프로토콜 지시자
-
프로토콜 스택은 상위 계층으로 올라갈수록 종류가 많아진다. 3계층 프로토콜인 IP는 4계층에서는 다시 TCP와 UDP로 나뉘고 그보다 더 상위 계층에서는 FTP, HTTP, SMTP, POP3 등 더 다양한 프로토콜로 다시 나뉜다.
-
인캡슐레이션 과정에서는 상위 프로토콜이 아무리 많아도 문제가 없지만 디캡슐레이션하는 목적지 쪽에서는 헤더에 아무 정보가 없으면 어떤 상위 프로토콜로 올려보내 주어야 할지 결정할 수 없다.
-
예를 들어 3계층에서 목적지 IP 주소를 확인하고 4계층으로 데이터를 올려보낼 때 헤더에 상위 프로토콜 정보가 없다면 TCP로 보내야 할지, UDP로 보내야 할지 구분할 수 없다. 이런 문제가 발생하지 않도록 인캡슐레이션하는 쪽에서는 헤더에 상위 프로토콜 지시자 정보를 포함해야 한다.
-
ref
IT 엔지니어를 위한 네트워크 입문(고재성, 이상훈 지음)을 읽고 정리한 포스트입니다.
Previous
‘[Network] OSI 7계층’ -> Previous
Next
‘[Network] LAN과 MAN과 WAN’ -> Next