PDU(protocol data unit) 란?
각 계층의 데이터 단위
- 애플리케이션 계층: 메시지
- 전송 계층: 세그먼트(TCP), 데이터그램(UDP)
- 세그먼트: 메세지 + TCP/UDP 헤더 (Source Port+Destination Port)
- 인터넷 계층: 패킷
- 패킷: 세그먼트 + IP 헤더 (Source IP+Destination IP)
- 링크 계층: 프레임(데이터 링크 계층), 비트(물리 계층)
- 프레임: 패킷 + MAC헤더(출발지 MAC 주소+목적지 MAC 주소)/트레일러
[MAC 헤더] + [IP 헤더] + [TCP 헤더] + 데이터 + [트레일러 (CRC)]
MTU (Maximum Transmission Unit) 란?
네트워크 계층(IP) 에서 한번에 전송 가능한 최대 패킷의 크기
MSS(Maximum Segment Size) 란?
전송 계층(TCP) 에서 헤더를 제외한 전송 가능한 데이터 (순수 payload) 의 최대 크기 MSS = MTU - (IP헤더길이) - (TCP헤더길이)
L3 인터넷 계층에서 조각화가 일어나지 않는 경우
- IPv6 처럼 기본적으로 조각화를 허용하지 않는 경우 PMTUD를 통해 조각화를 최소화할 수 있음
- IPv4 헤더의 특수 필드 설정으로 인해 조각화가 불가능한 경우, 패킷이 MTU 보다 클 때 조각화하지 않고 패킷을 보내온 쪽으로 ICMP 메세지 (’나 전송 못 해’)를 전송함 (PMTUD와 유사 방식)
PMTUD (Path MTU Discovery) 란?
네트워크 경로에서 가장 작은 MTU를 자동으로 탐색하여 최적의 패킷 크기를 결정하는 기술
동작 방식
- 출발지에서 IP 헤더의 DF(Don’t Fragment) 플래그 비트를 1로 설정
- DF(Don’t Fragment) 플래그 비트 1 = ‘이 패킷은 조각화 불가능~’
- 중간 라우터에서 패킷이 MTU보다 크면 ICMP ‘Fragmentation Needed’ 메세지를 출발지로 반환
- 메시지 안에 해당 라우터에서 허용 가능한 최대 MTU도 같이 전송
- 출발지는 ICMP 메시지를 받고 MTU를 줄여서 다시 보냄
→ 이 과정을 통해 경로에서 가장 작은 MTU(Path MTU)를 자동으로 발견
PMTUD 방식의 한계 = 보안 장비가 ICMP를 차단하는 경우 ’출발지에서 ICMP 메세지 받지 못하잖아 ㅠㅠ’
PLPMTUD (Packetization Layer PMTU Discovery) 등장
ICMP 메세지 없이 전송 계층(TCP)에서 경로 MTU를 자동으로 탐색하는 기술
동작 방식
패킷을 점진적으로 큰 크기로 전송하면서 경로의 최대 MTU를 탐색
→ 수신자는 패킷을 정상적으로 수신하면 ACK 응답을 반환
→ 응답이 없으면 이전 단계의 MTU로 다시 전송