학습자료/네트워크 2013. 6. 17. 15:32

MTU (Maximum Transmission Unit)

1. MTU(Maximum Transmission Unit)이란…

MTU란 TCP/IP네트웍 등과 같이 패킷 또는 프레임 기반의 네트웍에서 전송될 수 있는 최대 크기의 패킷 또는 프레임을 말합니다.

한번에 전송할 수 있는 최대 전송량(Byte)인 MTU 값은 매체에 따라 달라집니다.

예를 들어 Ethernet 환경이라면 MTU default 값은 1500 이고 FDDI 인 경우 FDDI는 4000 정도 되고, X.25는 576, Gigabit MTU는 9000 정도 등 매체 특성에 따라 한번에 전송량이 결정됩니다.

2. 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

3. 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를 설정됩니댜.

4. MTU값 조정

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

) ifconfig hme0 mtu 1400

ifconfig eth0 mtu 1300

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

MSS (Maximum Segment Size)

MSS Maximum Segment Size의 약어로 TCP상( TCP/UDP 가 아니라 그냥 TCP입니다 )에서의 전송할 수 있는 사용자 데이타의 최대크기입니다.

MSS 값은 기본적으로 설정된 MTU 값에 의해 결정됩니다.

MSS= MTU-(IP header크기) - (TCP header크기)

그러므로 Ethernet 일 경우, MTU 1500에 IP 헤더크기 20byte TCP 헤더 크기 20byte를 제외하면 1460 이 MSS 값으로 됩니다.

TCP로 통신할 때는 통신 양단간에 서로 MSS값을 주고 받습니다.

TCP는 3-way 핸드쉐이킹으로 session을 establish 하며 이 과정 중에 상대방에게 자신의 MSS 값을 알려 주게 됩니다.

< 3-way Hand shaking 과정 >

Client Server
< SYN, MSS=1380 >
( MTU 1420 ) -------------------------------------> ( MTU 1500 )
< SYN,ACK, MSS=1460>

<-------------------------------------
< ACK >

------------------------------------->

위의 그림처럼 Client 의 MTU 가 1420 이고 Server 의 MTU가 1500 라고 가정할때 클라이언트가 초기 TCP 세션을 성립하기 위해 Syn패킷을 서버로 보낼때 TCP Header의 option 필드에 MSS값을 설정하여 서버로 전달합니다.

그러면 서버는 SYN, ACK 를 보내면서 역시 TCP 헤더 옵션에 자신의 MSS 값을 보냅니다. 그러면 세션이 성립되어 패킷을 전달할때 실제 단위 패킷의 사이즈가 1420을 초과하지 않게 패킷을 나누어서 전송하게 됩니다.

서버는 자신의 MTU가 1500 이라고 해서 패킷을 1500 단위로 나누지 않습니다. 만약 패킷을 1500 크기로 보내면 client에서는 자신의 용량을 초과하기 때문에 데이타를 수신할 수 없게 됩니다.

 

 

'학습자료 > 네트워크' 카테고리의 다른 글

스위치 콘솔 연결(시리얼 포트 연결)  (0) 2013.11.06
vlan 설정(ubuntu)  (0) 2013.11.06
zero-copy[펌]  (0) 2013.02.27
netstat 명령어 사용법 - 펌  (0) 2013.02.13
zero configuration networking  (1) 2013.02.12
posted by cozyboy
: