Packet anatomy

패킷은 헤더가 처리 규칙, 페이로드가 실제 데이터다

네트워크 장비는 전체 데이터를 한 덩어리로 보지 않는다. 각 계층은 자기 헤더를 읽어 다음 처리 방식을 결정하고, 안쪽 데이터는 그대로 페이로드로 넘긴다.

14B+

Ethernet header

목적지 MAC, 출발지 MAC, EtherType으로 같은 링크 안 전달을 결정

20B+

IP header

출발지/목적지 IP, TTL, protocol 값으로 라우팅과 상위 계층 식별

UDP 8B / TCP 20~60B

TCP/UDP header

포트 번호, 순서, 신뢰성 또는 datagram 전달 방식 지정

variable

Application payload

HTTP 요청, DNS 질의, 파일 조각처럼 애플리케이션이 보내려는 내용

4B

Frame trailer

FCS로 프레임 손상 여부를 확인하며 캡처 도구에는 안 보일 수 있음

L2 view

IP 패킷 전체가 payload

스위치와 NIC는 MAC 헤더와 FCS를 주로 본다.

L3 view

TCP/UDP segment가 payload

라우터는 IP 목적지와 TTL을 보고 다음 홉을 고른다.

L4 view

애플리케이션 데이터가 payload

운영체제는 포트 번호로 프로세스에 데이터를 전달한다.

L7 view

메시지 의미를 해석

브라우저와 서버는 HTTP method, path, body를 읽는다.

Encapsulation

내려갈수록 헤더가 붙는다

상위 계층 데이터는 아래 계층에서 payload로 감싸진다.

MTU

헤더도 전송 크기를 차지한다

헤더가 늘면 같은 MTU 안에서 실제 payload 공간은 줄어든다.

Capture

보이는 정보가 전부는 아니다

NIC offload와 FCS 제거 때문에 캡처 화면과 선로 위 프레임은 다를 수 있다.

같은 바이트도 어느 계층에서 보느냐에 따라 이름이 달라진다

IP 계층에서는 TCP 세그먼트가 payload이고, 이더넷 계층에서는 IP 패킷 전체가 payload다. 그래서 패킷 구조를 읽을 때는 “지금 어느 계층의 헤더를 보고 있는가”를 먼저 정해야 한다.