Basic Security/_Networks2007.02.06 16:19
출처 : http://www.redwiki.net/wiki/wiki.php/MTU

MTU(Maximum Transmission Unit)
이란?

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


ADSL에서의 MTU값


ADSL은 PPPOE와 PPPOA를 사용합니다. 외장형모뎀과 PC Lan 카드를 사용하는 형태는 PPPOE(PPP over Ethernet)라고 합니다. PC에서 만들어진 Ethernet frame 이 ADSL serial 구간을 그냥 통과하지 못하기 때문에 이더넷 Frame 안에 PPP frame을 포함해서 전송하기 때문에 1500 보단 작아야 합니다. 참고로 접속프로그램중 Winpoet은 MTU를 1420으로 설정하고 Ethernet 프로그램은 MTU를 1416 정도로 설정합니다.

<일반적인 Ethernt 에서의 TCP/IP 패킷 >

Ethernet Header | IP Header | TCP Header | Data

< PPPOE 에서의 TCP/IP 패킷 >

Ethernet Header | PPPoE Header | IP Header | TCP Header | Data


MTU값 계산


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


MTU값 조정


Unix, Linux 계열에서는 ifconfig 명령어로 쉽게 변경할 수 있습니다.
ifconfig hme0 mtu 1400
ifconfig eth0 mtu 1300

Windows 계열은 레지스터리를 수정하면 되며 OS 버전에 따라 설정값이 달라집니다.


최대 UDP datagram 크기


이론적인 IP datagram의 최대 크기는 65535byte이다. 여기서 IP header 20byte, UDP header 8byte를 제외하면, UDP datagram의 최대 크기는 65507byte가 된다. 하지만 Socket API의 버퍼 크기 제한을 통해서 변화될 수 있다. 일반적으로 UDP socket은 8192 byte 이상이다. 또한 Kernel의 구현에 의해 크기가 변화될 수 있다. 일반적으로 UDP 프로그램들은 512 byte이다.

신고
Posted by Proneer
TAG

댓글을 달아 주세요


티스토리 툴바