융융이'Blog

MTU (Maximum Transmission Unit 최대 전송 단위) 본문

2022이전/네트워크

MTU (Maximum Transmission Unit 최대 전송 단위)

바로퇴장 2020. 8. 16. 17:23

MTU(Maximum Transmission Unit)

데이터링크에서 하나의 프레임 또는 패킷에 담아 운반 가능한 최대 크기

MTU란 TCP/IP 네트워크 등과 같은 패킷 또는 프레임 기반의 네트워크에서 전송될 수 있는 최대 크기의 패킷 또는 프레임을 말한다. 한번에 전송할 수 있는 최대 전송량(Byte)인 MTU 값은 매체에 따라 달라진다. 예를 들어 Ethernet환경이라면 MTU 기본값은 1500, FDDI 인 경우 4000, X.25는 576, Gigabit MTU는 9000정도 등 매체 특성에 따라 한번에 전송량이 결정된다.

MTU값 계산

MTU는 Ethernet프레임을 제외한 IP datagram의 최대 크기를 의미한다. 즉, MTU가 1500이라고 할 때 IP Header의 크기 20byte 와 TCP Header의 크기 20byte를 제외하면 실제 사용자 data는 최대1460까지 하나의 패킷으로 전송될 수 있다.
Window 계열에서는 PC의 기본 MTU가 1500으로 설정되어 있으며 레지스터리에 특정 값을 적어주지 않으면 자신의 MTU값을 1500으로 설정된다. 그러나 Win2000부터 Media의 특성을 인식하여 dynamic하게 MTU를 설정하게 된다.

패킷 단편화

TCP세그먼트는 IP 데이터그램으로 묶인다. 데이터그램에는 크기 한계가 있으며 하위 네트워크의 최대 송신 단위(MTU) 이상은 송신할 수 없다. 만약 TCP세그먼트가 너무 크다면 단편화하지 않고는 데이터그램으로 송신할 수 없을 것이다. 단편화를 사용하면 효율이 떨어질 뿐 아니라 TCP 세그먼트를 잃어버릴 확률이 높아져 결국 모든 세그먼트를 다시 재전송해야 할지도 모른다.

MSS(Maximum Segment Size)

MSS는 Maximum Segment size의 약어로 TCP상에서의 전송할 수 있는 사용자 데이터의 최대크기이다. MSS값은 기본적으로 설정된 MTU 값에 의해 결정된다. 예를들어 Ethernet일 경우 MTU 1500에 IP 헤더크기 20byte TCP 헤더 크기20byte를 제외한 1460이 MSS 값이다.

MSS = MTU – IP Header의 크기(최소 20byte) – TCP Header의 크기(최소 20byte)

MSS의 선택

TCP Header는 20byte 이상을 사용한다. IP Header 역시 20byte 이상이다. 따라서 Header로 최소 40byte를 써야 하는데 모두 데이터와 관련 없는 과부하이다. 만약MSS를 너무 작게 하면 대역폭을 비효율적으로 쓰게 된다. 예를 들어 MSS를 40byte로 한다면 데이터의 비율이 최대50%밖에 안 된다. 나머지는 그냥 Header일 뿐이다. 많은 세그먼트 데이터 그램은 더 비효율적으로 송신될 것이다.

image-20200816163002818
 ※ 운영체제별 MTU 확인
     - 윈도우 : netsh interface ip show interface
     - Linux  : ifconfig

출처 :

https://lyb1495.tistory.com/68

http://www.ktword.co.kr/abbr_view.php?m_temp1=638