들어가기 전에
IP 헤더는 패킷의 목적지, 발신지, 생명 주기, 단편화 여부 등 중요한 정보를 가지고 있습니다.
이를 통해 패킷이 올바른 경로로 전달될 수 있습니다.
1. IP 헤더란?
IP 헤더는 IP 패킷의 맨 앞에 위치하며, 패킷 전달에 필요한 메타데이터를 포함하고 있습니다.
네트워크 계층(3계층)에서 동작하며, 라우터가 IP 헤더를 읽어 경로를 설정합니다.
2. IP 헤더의 주요 필드
| 필드 | 크기 (비트) | 설명 |
|---|
| Version | 4 | IP 버전 (4: IPv4, 6: IPv6) |
| Header Length (IHL) | 4 | IP 헤더의 길이 (IPv4: 20~60 bytes) |
| Type of Service (ToS) | 8 | QoS(Quality of Service) 우선순위 설정 |
| Total Length | 16 | IP 헤더 + 데이터의 전체 길이 |
| Identification | 16 | 패킷 단편화 시 순서 식별 |
| Flags | 3 | 단편화 허용 여부 설정 (DF, MF) |
| Fragment Offset | 13 | 단편화된 패킷의 순서 |
| Time to Live (TTL) | 8 | 패킷 생존 시간. 라우터를 지날 때마다 1씩 감소 |
| Protocol | 8 | 상위 계층 프로토콜 식별 (TCP: 6, UDP: 17, ICMP: 1) |
| Header Checksum | 16 | IP 헤더의 오류 검출 |
| Source IP Address | 32 | 발신지 IP 주소 |
| Destination IP Address | 32 | 목적지 IP 주소 |
| Options (Optional) | 가변 | 특수한 네트워크 옵션 (사용 빈도 낮음) |
| Padding | 가변 | 32비트 배수를 맞추기 위한 여유 공간 |
3. 주요 필드 설명
(1) Version
- IPv4(4) 또는 IPv6(6)을 나타냅니다.
- IPv4는 32비트 주소, IPv6는 128비트 주소를 사용합니다.
- IP 헤더의 길이를 나타냅니다.
- 일반적으로 IPv4는 20바이트, 옵션이 추가될 경우 최대 60바이트까지 확장됩니다.
(3) Type of Service (ToS)
- 네트워크 서비스의 우선순위를 지정합니다.
- 예를 들어, 실시간 스트리밍 같은 경우 우선순위를 높여 전달 속도를 보장합니다.
(4) Total Length
- IP 헤더 + 데이터 전체의 길이를 나타냅니다.
- 최대 65,535바이트(64KB)까지 전송할 수 있으며, 이를 넘을 경우 단편화(Fragmentation)가 발생합니다.
(5) Identification
- 단편화된 패킷이 다시 조립될 때 순서를 식별하는 고유 값입니다.
- 동일한 패킷에 대해 동일한 ID가 부여됩니다.
(6) Flags
- DF(Don't Fragment): 단편화를 허용하지 않음
- MF(More Fragments): 뒤에 더 많은 조각이 있음을 나타냄
[000] → 단편화 없음
[001] → 단편화 가능
[010] → 마지막 조각
(7) Fragment Offset
- 단편화된 패킷이 원본 데이터의 어느 위치에 속하는지를 나타냅니다.
- 조각난 순서대로 다시 조립하기 위해 사용됩니다.
(8) Time to Live (TTL)
- 패킷의 생명 주기를 나타내며, 각 라우터를 지날 때마다 1씩 감소합니다.
- TTL이 0이 되면 패킷은 폐기되며, 송신자는 ICMP Time Exceeded 메시지를 받습니다.
이를 통해 패킷의 무한 루프 방지합니다.
(9) Protocol
- 상위 계층의 프로토콜을 식별합니다.
- 예를 들어 TCP(6), UDP(17), ICMP(1) 등으로 구분됩니다.
- 라우터가 다음 계층에서 어떤 프로토콜로 전달할지 결정합니다.
- IP 헤더에 오류가 있는지 검사합니다.
- 데이터(payload)는 검사하지 않으며, 헤더 부분만 오류 검출을 수행합니다.
(11) Source IP Address / Destination IP Address
- 발신지와 목적지의 IP 주소를 명시합니다.
- 라우터는 목적지 IP를 기준으로 라우팅 경로를 탐색합니다.
4. IP 단편화(Fragmentation)와 재조립(Reassembly)
(1) 단편화가 필요한 이유
- MTU(Maximum Transmission Unit): 네트워크 장비가 한 번에 전송할 수 있는 최대 크기 → 일반적으로 이더넷의 MTU는 1500바이트
- IP 패킷이 MTU보다 클 경우, 단편화(Fragmentation)가 이루어진다. → 패킷을 여러 조각으로 나누어 전송
(2) 단편화 시 변경되는 헤더 값
- Identification: 각 조각에 동일한 식별자(ID)가 부여된다.
- Fragment Offset: 원본 데이터의 어느 위치에 있는지 기록한다.
- Flags:
DF(Don't Fragment): 단편화 금지 (만약 단편화가 필요하면 폐기됨)
MF(More Fragments): 뒤에 더 많은 조각이 있음을 표시
(3) 재조립(Reassembly)
- 최종 목적지에서만 재조립된다.
- 중간 라우터는 단편화를 수행하지만, 재조립하지 않는다.
- Fragment Offset 값을 기준으로 순서를 정렬하여 완성된 패킷을 복구한다.
- 만약 단편 중 일부가 손실되면 전체 패킷이 손실된 것으로 간주한다.
면접 대비 요약
| 핵심 질문 | 설명 포인트 |
|---|
| IP 헤더의 역할은? | 패킷의 발신지, 목적지, TTL, 단편화 정보 등을 담아 최적 경로로 전달 |
| TTL은 왜 필요한가? | 무한 루프 방지. 라우터를 지날 때마다 1씩 감소 |
| Flags 필드의 역할은? | 단편화 여부와 순서 식별을 설정 |
| 단편화는 어디서 재조립되나? | 최종 목적지에서만 재조립된다 |
| Protocol 필드는 무엇을 나타내는가? | 상위 계층의 프로토콜 (TCP, UDP 등) |
| Checksum은 어디를 검사하나요? | IP 헤더의 무결성을 검사 (Payload는 검사하지 않음) |
| Fragment Offset의 역할은? | 조각난 패킷의 순서를 맞추기 위한 위치 정보 |
| Flags의 DF와 MF의 의미는? | DF: 단편화 금지, MF: 추가 조각이 존재함 |