Ethernet header
목적지 MAC, 출발지 MAC, EtherType으로 같은 링크 안 전달을 결정
네트워크 장비는 전체 데이터를 한 덩어리로 보지 않는다. 각 계층은 자기 헤더를 읽어 다음 처리 방식을 결정하고, 안쪽 데이터는 그대로 페이로드로 넘긴다.
아래 계층은 바깥 헤더만 읽고 안쪽 덩어리를 payload로 넘긴다. 그래서 같은 바이트도 보는 계층에 따라 header, payload, segment 이름이 바뀐다.
목적지 MAC, 출발지 MAC, EtherType으로 같은 링크 안 전달을 결정
출발지/목적지 IP, TTL, protocol 값으로 라우팅과 상위 계층 식별
포트 번호, 순서, 신뢰성 또는 datagram 전달 방식 지정
HTTP 요청, DNS 질의, 파일 조각처럼 애플리케이션이 보내려는 내용
FCS로 프레임 손상 여부를 확인하며 캡처 도구에는 안 보일 수 있음
스위치와 NIC는 MAC 헤더와 FCS를 주로 본다.
라우터는 IP 목적지와 TTL을 보고 다음 홉을 고른다.
운영체제는 포트 번호로 프로세스에 데이터를 전달한다.
브라우저와 서버는 HTTP method, path, body를 읽는다.
상위 계층 데이터는 아래 계층에서 payload로 감싸진다.
헤더가 늘면 같은 MTU 안에서 실제 payload 공간은 줄어든다.
NIC offload와 FCS 제거 때문에 캡처 화면과 선로 위 프레임은 다를 수 있다.
IP 계층에서는 TCP 세그먼트가 payload이고, 이더넷 계층에서는 IP 패킷 전체가 payload다. 그래서 패킷 구조를 읽을 때는 “지금 어느 계층의 헤더를 보고 있는가”를 먼저 정해야 한다.