앞서 언급했듯, 패킷은 네트워크 상에서 전달되는 데이터를 통칭하는 표현이자 블록 단위를 의미한다. 헤더에는 제어 정보, 주소 정보 등이 들어가고 페이로드에 사용자의 실질적인 데이터가 들어간다. 추가로 푸터가 붙을 수도 있지만 잘 붙는 편은 아니다.
일례로, HTTP 프로토콜을 페이로드로 해서 TCP 프로토콜을 헤더에 붙인 형태(1)를 하나의 페이로드로 삼아서 IPv4 프로토콜을 헤더로 붙인 형태(2)가 존재할 수 있으며, 이 형태(2)를 페이로드라 삼아서 Ethernet 프로토콜을 헤더로 삼을 수 있다. 이렇게 패킷은 여러 프로토콜들로 캡슐화가 되는 흡사 마트료시카 인형과도 같은 양상을 보인다. 위와 같은 양상을 캡슐화(Encapsulation)라고 한다. 캡슐화의 과정은 (수치상) 상위 계층에서 하위 계층으로 향하면서 캡슐화되는 것이 원칙이다. 뜬금없이 이더넷 헤더(OSI 2계층)가 존재하는 패킷 페이로드에서 갑자기 TCP 헤더(OSI 4계층)가 붙을 수는 없는 것이다.
최종적으로 받아서 캡슐화의 반대 방향으로 프로토콜을 하나씨 확인하면서 패킷 페이로드를 확인하는 과정은 디캡슐화(Decapsulation)이라고 한다.
계층별로 프로토콜 데이터 단위 이름이 다른데, 헤더에 OSI 4계층(TCP)이 붙은 패킷은 세그먼트(Segement)라 부르고, 헤더에 OSI 3계층(IPv4)이 붙은 패킷은 패킷(이 패킷은 현재 보고 있는 패킷과 동음이의어)이라 부르고, 헤더에 OSI 2계층(Ethernet)이 붙은 패킷은 프레임이라고 부른다.
터미널에 ping 8.8.8.8
을 입력하면 구글 공용 DNS 서버로 Echo 리퀘스트를 보내고 리스폰스에 그 결과로 응답 시간, 네트워크 속도 등이 표시된다.
이때 보내는 리퀘스트 패킷은 ICMP 패킷이다. 이것을 Wireshark로 포착해보면 아래와 같은 패킷 캡처를 확인할 수 있다.
사진을 보면 밑에서부터 ICMP(OSI 3계층), IPv4(OSI 3계층), Ethernet(OSI 2계층)으로 구성된 것을 볼 수 있다.
ICMP가 IPv4를 헤더로 삼은 페이로드가 되고, 이 전체를 Ethernet이 헤더로 삼은 전체 패킷이 존재하는 셈이다. 아까 위에서 말한 수치상 상위 계층에서 하위 계층으로 캡슐화(패킷으로 덮고 패킷으로 덮고 패킷으로 덮고...)가 이뤄지는 형태다. 그리고 최종 헤더가 2계층이므로 Frame이 붙은 형태다.
참고로 ICMP가 먼저 패킷 캡슐이 되고 그다음에 IPv4가 패킷 캡슐이 되는 것이 원칙이다. 또한, IPv4와 ARP가 같이 쓰이지는 않는다.