핵심 인사이트 (3줄 요약)

  1. 본질: IPv4 패킷은 알맹이 데이터(TCP/UDP)를 감싸는 껍질로, 라우터가 목적지를 찾아 배달할 수 있도록 이정표 역할을 하는 **'최소 20바이트에서 최대 60바이트' 크기의 헤더(Header)**를 가진다.
  2. 20바이트 고정 규격: 현대 네트워크에서 추가 옵션(Options) 필드는 보안 및 성능상의 이유로 거의 쓰이지 않기 때문에, 사실상 IPv4 헤더의 길이는 20바이트 고정이라고 봐도 무방하다.
  3. 헤더의 3대 역할: 20바이트의 공간은 크게 **[경로 설정(Source/Dest IP)], [단편화(Fragmentation) 조립 정보], [수명(TTL) 및 프로토콜 식별]**의 세 가지 핵심 구역으로 알차게 나뉘어 있다.

Ⅰ. 개요 및 필요성 (Context & Necessity)

  • 개념: OSI 3계층에서 데이터를 포장하는 규격서. IP 패킷의 맨 앞에 붙어서 전 세계 인터넷 망을 항해하기 위한 온갖 설정값을 담은 20바이트짜리 데이터 표다.

  • 필요성: 우체국에서 편지를 보낼 때, 맹목적으로 목적지 주소만 적는다고 능사가 아니다. "받는 사람 주소, 보내는 사람 주소, 우표(수명), 등기 여부, 편지봉투 크기"를 양식에 맞춰 빼곡히 적어야 우편집중국(라우터)의 기계가 스캔해서 착착 분류할 수 있다. IP 헤더는 라우터가 0.0001초 만에 뜯어보고 버릴지 보낼지 판단하는 전 세계 공통의 규격서다.

  • 💡 비유: IPv4 헤더는 택배 박스 겉면에 붙어있는 **"종합 송장 스티커"**와 같습니다. 스티커에는 보내는 사람(Source IP)과 받는 사람(Dest IP)은 물론이고, 박스 무게(Total Length), 내용물이 옷인지 책인지(Protocol), 그리고 유통기한(TTL)까지 박스를 배달하는 데 필요한 모든 정보가 암호 같은 숫자로 빼곡히 적혀 있습니다.

📢 섹션 요약 비유: IPv4 헤더는 20바이트라는 극도로 좁은 **"여권(Passport) 앞장"**에 이름, 국적, 생년월일, 만료일 등 라우터(출입국 심사관)가 요구하는 모든 필수 정보를 우겨 넣은 완벽한 디자인의 결정체입니다.


Ⅱ. IPv4 헤더 20바이트의 구조적 맵핑 (Deep Dive)

헤더는 보통 4바이트(32비트)씩 5줄(Row)로 그려서 외운다. 4 Bytes * 5 Rows = 20 Bytes

1. 첫 번째 줄 (4 Bytes) - 기본 명세서

  • Version (4비트): "나 IPv4야"라고 알리는 필드. 무조건 4 (0100)가 들어있다.
  • IHL (Header Length, 4비트): 헤더 전체의 길이를 4바이트 단위로 적는다. 옵션이 없으면 항상 20바이트이므로, 20 ÷ 4 = 5 (0101)가 들어간다.
  • TOS / DSCP (1바이트): VIP 패킷(음성 등)을 빨리 처리해 달라고 부탁하는 우선순위(QoS) 딱지.
  • Total Length (2바이트): 헤더와 데이터를 합친 이 패킷의 전체 길이. (최대 65,535바이트)

2. 두 번째 줄 (4 Bytes) - 단편화 (Fragmentation) 퍼즐 정보

패킷이 뚱뚱해서 여러 조각으로 찢어졌을 때(단편화), 목적지에서 다시 조립하기 위한 번호표다.

  • Identification (식별자, 2바이트): "우리는 원래 같은 100번 박스에서 찢어진 형제들이야!"라는 고유 번호.
  • Flags (플래그, 3비트): "나 찢어질 거야(DF)", "내 뒤에 찢어진 조각 더 있어(MF)"를 알리는 신호탄.
  • Fragment Offset (단편화 오프셋, 13비트): "나는 원래 박스의 300바이트째부터 시작하는 조각이야!"라는 조립 위치 번호.

3. 세 번째 줄 (4 Bytes) - 생존과 식별

  • TTL (Time To Live, 1바이트): 패킷의 수명. 라우터를 하나 지날 때마다 1씩 깎이며, 0이 되면 우주 미아(Looping) 방지를 위해 즉시 폐기(Drop)된다.
  • Protocol (1바이트): 내 뱃속(페이로드)에 들어있는 내용물이 TCP(6)인지, UDP(17)인지, ICMP(1)인지 상위 4계층 모듈을 알려주는 식별표.
  • Header Checksum (2바이트): 이동 중에 20바이트 헤더가 깨졌는지 검사하는 에러 검출 코드.

4. 네 번째 & 다섯 번째 줄 (8 Bytes) - 주소

  • Source IP Address (4바이트): 보내는 놈의 32비트 IP 주소.
  • Destination IP Address (4바이트): 받는 놈의 32비트 IP 주소.
 ┌─────────────────────────────────────────────────────────────┐
 │                IPv4 헤더 (20 Bytes 고정부) 도식               │
 ├─────────────────────────────────────────────────────────────┤
 │                                                             │
 │   0                   15                  31 (Bits)         │
 │   ┌────┬────┬────────┬──────────────────────┐ (4B)          │
 │   │VER │IHL │  TOS   │     Total Length     │               │
 │   ├────┴────┴────────┼────┬─────────────────┤ (4B)          │
 │   │  Identification  │Flag│ Fragment Offset │               │
 │   ├────────┬─────────┼────┴─────────────────┤ (4B)          │
 │   │  TTL   │ Protocol│   Header Checksum    │               │
 │   ├────────┴─────────┴──────────────────────┤ (4B)          │
 │   │         Source IP Address (32bit)       │               │
 │   ├─────────────────────────────────────────┤ (4B)          │
 │   │      Destination IP Address (32bit)     │               │
 │   └─────────────────────────────────────────┘               │
 │        ... [ Options (0~40B) - 거의 안 씀 ] ...               │
 └─────────────────────────────────────────────────────────────┘

📢 섹션 요약 비유: 라우터는 우체국 초고속 스캐너입니다. 패킷이 날아오면 1행에서 박스 크기를 재고, 2행에서 박스가 찢어졌는지 확인하고, 3행에서 유통기한(TTL)을 살핀 뒤, 4/5행의 도착지 주소(IP)를 보고 컨베이어 벨트를 튕겨냅니다. 이 완벽한 5줄의 조합이 전 세계 인터넷을 돌아가게 합니다.