핵심 인사이트 (3줄 요약)
- 본질: IPv4 패킷은 알맹이 데이터(TCP/UDP)를 감싸는 껍질로, 라우터가 목적지를 찾아 배달할 수 있도록 이정표 역할을 하는 **'최소 20바이트에서 최대 60바이트' 크기의 헤더(Header)**를 가진다.
- 20바이트 고정 규격: 현대 네트워크에서 추가 옵션(Options) 필드는 보안 및 성능상의 이유로 거의 쓰이지 않기 때문에, 사실상 IPv4 헤더의 길이는 20바이트 고정이라고 봐도 무방하다.
- 헤더의 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줄의 조합이 전 세계 인터넷을 돌아가게 합니다.