cs

MTU, MSS, PMTUD

ssoonn 2024. 6. 30. 23:43

MTU (Maximum Transmission Unit)

네트워크에 연결된 장치가 받아들일 수 있는 최대 데이터 패킷 크기

MTU보다 큰 패킷은 지나가지 못하지만, 큰 데이터 페킷을 분할하여 작게 자를 수 있음

 

패킷의 분할 

패킷은 다수의 네트워크 장비를 통해 전달되는데, 이 때 네트워크 장비의 MTU보다 큰 패킷(보통 1500byte)은 패킷이 분할된다. (패킷의 단편화)

  • 단편화가 안되는 경우
    • IPv6 패킷
      • 라우터에서의 분할을 허용하지 않는다(속도 향상).
      • IPv6를 지원하는 라우터는 MTU를 넘는 IPv6 패킷을 분할하지 않고 전달하지 않는다.
      • MTU를 넘게 되면, 그때서야 호스트에서 단편화를 진행한 후 패킷을 재전송한다.
    • IPv4
      • 패킷의 IP 헤더에 Don't Fragment 플래그가 활성화되어 있으면 분할을 하지 않는다.
  • 분할 과정
    • IP 패킷의 크기를 다음 라우터의 MTU와 비교
    • 다음 라우터의 MTU보다 크면 페이로드를 두개 이상의 패킷으로 분할
    • 각각 헤더를 붙이기 (패킷에 순서를 정함)

MSS (Maximum Segment Size)

TCP 세그먼트의 크기로, IP헤더, TCP 헤더를 제외한 실질적인 데이터 만의 크기(보통 1460byte).

  • 보통 TCP 연결 과정에서 MSS 값을 서로 지정하게 된다.

 

MTU와 MSS

MTU는 IP헤더와 TCP헤더의 크기까지 합치만 MSS는 데이터의 크기(payload의 크기)만을 가리킴

PMTUD

송수신자 간의 경로 상에서 패킷이 누락된 경우, 패킷의 크기를 낮추면서 MTU에 맞게끔 반복해서 보내는 과정.

IPv4와 IPv6 사용에 따라 작동 방식이 다르다.

 

IPv4 (분할 허용)

  1. PMTUD에서는 Don't Fragment 플래그를 켠 시험 패킷을 경로에 보냄
  2. 이후 패킷이 누락되면 ICMP 메세지와 MTU를 같이 돌려 보내고, 소스 장치는 MTU를 낮추고 다른 시험 패킷을 보냄
  3. 이는 패킷이 누락되지 않고 전체 네트워크를 통과할 수 있을때까지 반복.

IPv6

  1. IPv6는 Don't Fragment옵션이 없으므로 해당 플래그를 사용하지 않음
  2. 시험 패킷을 전송, 누락되면 ICMP 메세지를 전송.
  3. 이 후 전체 네트워크를 통과할 때 까지 MTU를 줄이는 과정을 반복한다.

 

ref.

https://velog.io/@yuyun0124/TCPIP-4%EA%B3%84%EC%B8%B5-2.-MTU%EC%99%80-MSS%EC%99%80-PMTUD

 

TCP/IP 4계층 #2. MTU와 MSS와 PMTUD

네트워크 스터디 1주차

velog.io

https://jhlee-developer.tistory.com/entry/CS-TCPIP-4%EA%B3%84%EC%B8%B5-2-MTU%EC%99%80-MSS%EC%99%80-PMTUD

 

[CS] TCP/IP 4계층 #2. MTU와 MSS와 PMTUD

TCP/IP 4계층 #2. MTU와 MSS와 PMTUD MTU(Maximum Transmission Unit)란 네트워크에 연결된 장치가 받아들일 수 있는 최대 데이터 패킷의 크기 이 크기를 기준으로 데이터는 쪼개져서 패킷화 됨. 네트워크 경로

jhlee-developer.tistory.com