본문 바로가기
CS/네트워크

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

by Johnny's 2023. 10. 14.

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

MTU(Maximum Transmission Unit)란 네트워크에 연결된 장치가 받아들일 수 있는 최대 데이터 패킷의 크기

이 크기를 기준으로 데이터는 쪼개져서 패킷화 됨. 네트워크 경로 상에 있는 아무 장치나 MTU보다 패킷이 크면 그 패킷은 분할될 수도 있음

 

Router C의 MTU가 1400바이트이기 때문에 패킷이 분할되는 모습

 

패킷이 분할되지 않는 경우

패킷을 분할할 수 없어 네트워크 경로 상에 있는 어떠한 라우터나장치의MTU를초과할때 분할해서 전달하는 것이 아니라 전달을 아예 하지 않을 수도 있음

 

IPv6

IPv6은 분할을 허용하지않음

 

IPv4

IPv4 헤더에는 flags라는 필드가 있는데 여기서 bit 이 1이되면 "Don't Fragment" 플래그가 활성화된다라는 의미

이 때 분할은 불가능

 

MTU와 MSS

MTU와 MSS의 차이를 보면 다음과 같이 MTU는 IP헤더와 TCP헤더의 크기까지 합치만 MSS(Maximum Segment Size)는 데이터의 크기(payload의 크기)만을 가리 킴

일반적으로 MTU는 1500바이트이며 MSS는 1460바이트

따라서 네트워크를 통해 데이터를 보낼 때 MTU가 1500이라도 데이터는 보통 1460바이트 이하의 크기로 보내야 전달됨

다만, TCP를 쓰지 않는다는 등의 이유로 달라질 수도 있음

 

실습 : ping을 통한 MTU 확인

ping www.google.com -f -l 1500

 

앞의 코드는 1500바이트씩 패킷을 보낸다는 의미이며 DF는 패킷분할이 안되는 "Don't Fragment”를 의미

손실률 100%임

 

 ping www.google.com -f -l 1472

 

여기서 ping의 경우 IP 헤더(20바이트) + ICMP 헤더(8바이트)로 요청을 보내는 것이기 때문에 MSS는 1472(1500 - 28)까지 됩니다. 따라서 1472바이트씩 데이터를 보내면 올바르게 송수신되는 것 확인

 

실습 : netsh를 통한 MTU 확인

 netsh interface ipv4 show interfaces

MTU가 1500인 것 확인

 

PMTUD

PMTUD(Path MTU Discovery)는 수신자와 송신자의 경로 상에서 장치가 패킷을 누락한 경우 테스트 패킷의 크기를 낮추면서 MTU에 맞게끔 반복해서 보내는 과정

 

* 참고

- CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조 -인프런

댓글