반응형

 

위키백과에서는 전송할 수 있는 최대 프로토콜 데이터 단위의 크기를 MTU라고 합니다.

 

다른 말로는 패킷 또는 프레임 기반의 네트워크 전송될 수 있는 최대 크기의 패킷 또는 프레임입니다. Ethernet 프레임을 제외한 IP datagram(OSI 7 Layer 3계층에서 쓰이는 용어)의 최대 크기를 의미합니다. 또한 Maximun Transmission Unit이라는 이름 그대로 최대 전송 단위를 의미합니다. 

 

 

* Linux Ubunt 환경에서 쉘 창에 ifconfig를 입력하면 MTU를 찾아볼 수 있습니다. 

 

 

 

위와 같이 오른쪽에 mtu 1500이라는 내용을 찾아볼 수 있습니다. Ethernet 환경에서는 MTU의 기본값을 1500으로 고정해서 사용합니다. 임의로 사용자가 2000이나 다른 숫자로 변경해서 사용할 수도 있습니다. 한 때 이 MTU값을 크게 늘리면 속도가 더 빨라진다는 루머가 있었는데, 사실 여기서 MTU값을 아무리 늘린다 해도 다른곳으로 패킷이나 프레임을 전송,전송,전송 되어질 때 결국 다른 전송층에서 작게 쪼개야 하는건 변함이 없기 때문에 속도에는 변함이 없습니다. 그래서 기본값 1500을 그대로 사용하고 있습니다.

 

크기는 byte를 사용하고 있고(위에서는 1500byte네요), 이 MTU지표는 쉽게 말해서 통신을 할 때 데이터의 양이 많을 경우, 그것을 쪼개서 보낼 수 있는데 1500byte로 자르겠다는 의미입니다.

 

MTU가 1500이면 IP header 20byte를 기본적으로 가져가기 때문에 실제 사용할 수 있는 데이터는 1480byte가 됩니다. 그래서 4000byte인 데이터그램이 있다고 한다면 IP header 20byte를 쓰기 때문에 실제 사용할 수 있는 데이터그램은 3980byte가 됩니다.

 

 

* 용어정리

 

ID : 각 패킷의 ID값(sender)

Flag : fragmentation이 됐는지 안 됐는지 나타내주는 값

 - 1 : 뒤에 단편화 된 패킷이 존재한다.

 - 0 : 뒤에 단편화 된 패킷이 존재하지 않는다.

Offset : 전체 패킷에서의 위치

 - 첫번째 flag의 offset값은 0이다.

 - 두번째부터는 flag 전체 패킷값을 8로 나눈다. 이렇게 하는 이유는 양이 너무 많아서 줄이기 위함이다.

 

 

이제 MTU에 대한 이해가 어느정도 되었다면, 예시를 통해서 계산해보도록 하겠습니다.

 

 

* IP fragmentation 예제

 

ex. 3980byte의 데이터그램을  1500MTU로 분할해보기.

 

DATA가 3980byte이면 ip header값은 20byte이므로 전체 길이(lenth)는 4000이 된다.

ID는 sender의 id값인데 임의로 777이라고 설정할 수 있다.

Flag는 아직 fragmentation(분할해주는 작업)이 안 되었기 때문에 뒤에 단편화 된 패킷이 존재하지 않아 0이다.

Offset은 전체 패킷에서 첫번째에 위치해있기 때문에 0이다.

 

보기 쉽게 아래와 같이 적을 수 있다.

-> DATA  3980byte + ip | length = 4000 | ID=777 | flag = 0 | offset = 0

 

 

https://wogh8732.tistory.com/29

 

 

이제 1500 MTU로 분할하게 되면 아래와 같이 3개로 분할할 수 있다.


DATA1 1480byte + ip | length = 1500 | ID=777 | flag = 1 | offset = 0

DATA2 1480byte + ip | length = 1500 | ID=777 | flag = 1 | offset = 185(1480/8)

DATA3 1020byte + ip | length = 1040 | ID=777 | flag = 0 | offset = 370(1480+1480=2960)/8. 전체패킷이기 때문에 누적)

 

 

쉽게 생각해서 1500이 넘어서 분할을 해줘야 할 경우 flag가 1이며, 마지막이 0이 되는 것입니다. 더이상 분할할 것이 없기 때문. 그리고 offset은 전체 byte를 8로 나눠줍니다.

 

 

반응형

+ Recent posts