
저번 포스팅에 이어 이번엔 네트워크 계층의 핵심 프로토콜인 IP(Internet Protocol)에 대해 알아보자.
네트워크 계층의 데이터 단위는 '패킷' 또는 '데이터그램' 이라고 불리며, 복잡한 네트워크 경로에서 패킷이 유실되거나 순서가 뒤바뀔 수 있다.
‼️IP 데이터그램(IP Datagram)이란?
IP 데이터그램은 IP 프로토콜이 전송하는 기본 데이터 단위다. 목적지와 출발지 IP 주소 등 라우팅에 필요한 정보가 포함된 헤더와 실제 데이터로 구성된다. 각 데이터그램은 다른 데이터그램과 독립적으로 전송되며, 동일한 출발지와 목적지 간의 데이터그램이라도 서로 다른 경로로 전송될 수 있다. IP의 'Datagram'이라는 용어는 바로 이런 독립적인 패킷 단위를 의미한다.
현재 널리 사용되는 IP 버전은 IPv4와 IPv6이 있으며, IPv4 주소 고갈 문제를 해결하기 위해 IPv6로의 전환이 진행 중이다.
| 필드 | 크기 | 설명 |
|---|---|---|
| 버전(Version) | 4비트 | IP 프로토콜의 버전 정보 (IPv4는 4) |
| 헤더 길이(IHL) | 4비트 | IP 헤더의 길이 (32비트 워드 단위) |
| 서비스 유형(TOS/DSCP) | 8비트 | 패킷의 우선순위나 QoS 정보 |
| 전체 길이(Total Length) | 16비트 | 헤더와 데이터를 포함한 패킷 전체 길이 |
| 식별자(Identification) | 16비트 | 단편화된 패킷들을 그룹화하는 ID |
| 플래그(Flags) | 3비트 | 단편화 관련 제어 플래그 |
| 단편 오프셋(Fragment Offset) | 13비트 | 단편화된 패킷의 원래 위치 |
| 생존 시간(TTL) | 8비트 | 패킷이 네트워크에서 살아있을 수 있는 최대 홉 수 |
| 프로토콜(Protocol) | 8비트 | 상위 계층 프로토콜 식별자(TCP=6, UDP=17) |
| 헤더 체크섬(Header Checksum) | 16비트 | 헤더의 무결성 검사, 목적지에서 체크섬이 일치하지 않으면 패킷이 손상된 것으로 간주하고 폐기 |
| 출발지 IP 주소(Source Address) | 32비트 | 송신자의 IP 주소 |
| 목적지 IP 주소(Destination Address) | 32비트 | 수신자의 IP 주소 |
| 옵션(Options) | 가변길이 | 선택적 필드 (라우팅, 타임스탬프 등) |

‼️Hop Limit(IPv6)/TTL(IPv4):
IPv4에서는 TTL(Time To Live)이라고 부르며,
IPv6에서는 Hop Limit이라는 이름으로 동일한 기능을 수행한다.
패킷이 네트워크에서 무한히 순환하는 것을 방지하는 카운터다.
각 라우터를 통과할 때마다 1씩 감소하며, 0이 되면 패킷은 폐기되고 ICMP 오류 메시지가 발신자에게 전송된다.
일반적으로 운영체제에 따라 64, 128, 255 등의 초기값을 사용한다.
traceroute 명령어는 이 필드를 이용해 패킷이 통과하는 라우터의 경로를 추적한다.
‼️오버헤드(overhead)로 인해 발생할 수 있는 문제들
1. 대역폭 효율성 감소: 실제 데이터 대비 헤더 비율이 높아져 네트워크 대역폭의 낭비를 가져올 수 있다.
2. 처리 시간 증가/ 자원소모: 라우터와 엔드포인트가 더 많은 패킷과 헤더를 처리해야 하므로 지연이 발생하며, 단편화와 재조립 과정은 라우터와 호스트의 메모리 및 처리 자원을 더 많이 소모하게 된다.
3. 재조립 복잡성: 수신 측에서 단편화된 패킷들을 원래 메시지로 재조립하는 과정이 필요해 복잡성이 증가된다.
4. 패킷 손실 위험 증가: 단편화된 여러 패킷 중 하나라도 손실되면 전체 데이터를 재전송해야 할 수 있음.

‼️IP 기반의 주요 프로토콜
ICMP(Internet Control Message Protocol): 네트워크 진단 및 오류 보고용
IGMP(Internet Group Management Protocol): 멀티캐스트 그룹 관리
ARP(Address Resolution Protocol): IP 주소를 MAC 주소로 변환
DHCP(Dynamic Host Configuration Protocol): 동적 IP 주소 할당