MTU
MTU(Maximum Transmission Unit)이란 네트워크에 연결된 장치가 받아들일 수 있는 최대 데이터 패킷 크기이다. MTU보다 큰 패킷은 지나지 못하지만, 큰 데이터 패킷을 작은 조각으로 자를 수 있다(분할)
패킷의 분할
패킷은 다수의 네트워크 장비를 통해 전달되는데, 이 때 네트워크 장비의 MTU보다 큰 패킷(보통 1500byte)은 패킷이 분할된다.패킷의 단편화라고도 한다.
- 단편화가 안되는 경우
- IPv6 패킷의 경우 라우터에서의 분할을 허용하지 않는다(속도 향상). IPv6를 지원하는 라우터는 MTU를 넘는 IPv6 패킷을 분할하지 않고 전달하지 않는다. MTU를 넘게 되면, 그때서야 호스트에서 단편화를 진행한 후 패킷을 재전송한다.
- 패킷의 IP 헤더에 Don't Fragment 플래그가 활성화되어 있으면 분할을 하지 않는다.
- 분할 과정
IP 패킷의 크기를 다음 라우터의 MTU와 비교, 다음 라우터의 MTU보다 크면 페이로드를 두개 이상의 패킷으로 분할 후 각각 헤더를 붙여준다. 이때, 패킷에 순서를 정하게 된다.
MSS
TCP 세그먼트의 크기로, IP헤더, TCP 헤더를 제외한 실질적인 데이터 만의 크기를 의미한다(보통 1460byte).
- 보통 TCP 연결 과정에서 MSS 값을 서로 지정하게 된다.
PMTUD
송수신자 간의 경로 상에서 패킷이 누락된 경우, 패킷의 크기를 낮추면서 MTU에 맞게끔 반복해서 보내는 과정. IPv4와 IPv6 사용에 따라 작동 방식이 다르다.
IPv4
- IPv4는 분할을 허용하므로, PMTUD에서는 Don't Fragment 플래그를 켠 시험 패킷을 경로에 보낸다.
- 이후 패킷이 누락되면 ICMP 메세지와 MTU를 같이 돌려 보내고, 소스 장치는 MTU를 낮추고 다른 시험 패킷을 보낸다.
- 이는 패킷이 누락되지 않고 전체 네트워크를 통과할 수 있을때까지 반복된다.
IPv6
- IPv6는 Don't Fragment옵션이 없으므로 해당 플래그를 사용하지 않음
- 시험 패킷을 전송, 누락되면 ICMP 메세지를 전송.
- 이 후 전체 네트워크를 통과할 때 까지 MTU를 줄이는 과정을 반복한다.