TCP fragmentation[mss&mta]

2023. 3. 21. 00:55Network

# fragentation 

MTU보다 작은 크기로 분할을 하는 것을 단편화라고 한다.

MTU가 큰 네트워크에서 MTU가 작은 네트워크로 데이터그램이 전송될 경우 나누어 보내져야한다.

단편화한 후  수신지에서는 재조립을 수행해야된다. 추가적으로 이 단편화를 재조립하는 과정에서 수신자가 재조립이 어려운 단편화를 재조립하면서 다운 되는 단편화 공격을 할 수 도 있다. 

ipv4헤더를 보면 2번째 라인들이 단편화와 관련된 필드들이다.

이 단편화는 L4에서 할수도 있고 L3에서도 할 수 가있다. 하지만 패킷이 더 많이 붙는 L3보다 L4에서 단편화 하는 것이 오버헤드가 적다. 또한 만약 L4에서 단편화를 못했다 하더라도 L3에서 할 수 있기때문에 L4에서 단편화 하는 것은 필수가 아니다. 

 

3개의 필드를 정리해보면 아래그림처럼 나온다.[A(Identification), 녹색(IP FLAGS), 노란색(Fragment Offset)]

쉽게 풀어 설명하면 A부분의 데이터크기14567을 3개로 단편화를 할 건데 A의 1번째 조각이고 뒤에 또다른 조각이 있다는 표시로 1을 표시한다. 2번째 조각도 A.2[번째].1[뒤에조각있음]으로 나타내고 마지막 3번째 조각에는 뒤에 어떠한 조각이 없으므로 0으로 표시된다. 

뒤에 조각이 있을때 플래그값[좌], 없을때 플래그값[우]

Fragment Offset값이 저렇게 나오는 이유는 아래와 같다. 만약 4000byte의 데이터를 단편화 한다고 했을때 

[ㅁ   ㅁ   ㅁ   ㅁ   ㅁ    ㅁ     ㅁ]

↑                                             ↑

byte0000                              byte3,999         

 

1st

[ㅁ   ㅁ   ㅁ   ㅁ   ㅁ    ㅁ     ㅁ]                    offset = 0000/8 = 0

↑                                             ↑

byte0000                              byte1,399 

 

2st

[ㅁ   ㅁ   ㅁ   ㅁ   ㅁ    ㅁ     ㅁ]                    offset = 1,400/8 = 175

↑                                             ↑

byte0000                              byte2,799        

 

3st

[ㅁ   ㅁ   ㅁ   ㅁ   ㅁ    ㅁ     ㅁ]                    offset = 2,800/8 = 350

↑                                             ↑

byte0000                              byte3,999        

                  

 

단편화를 내면은 비트마다 번지값이 매겨진다. 1번째는 0000~1,399 2번째는 0000~1,400 3번째는 0000~2,800으로 번지값이 매겨진다. 각 시작 번지를 8로 나누면 일정한 배수로 증가하면서 떨어져 나온다.

단편화1~3의 offset이 일정배수로 증가하는 것을 확인

# mtu[maxium transfer unit] 

약어 그대로 네트워크기기가 전송할 수 있는 최대크기를 의미한다.

위 그림처럼 수많은 렌카드가 있지만 현재 국내에서는 이데넷 렌카드를 가장 많이 이용한다.  이 이더넷[Ethernet V2]의 크기는 1500바이트이므로 최대 전송할 수 있는 크기가 1500바이트 의미랑 같다. 그 이상의 크기인 바이트가 바로 렌카드로 들어오면 1500바이트만 남기고 나머지는 폐기하므로 단편화작업이 꼭필요하다. 

 

 

 

# mss[maxium segmentation size] 

TCP상에서 전송할 수 있는 사용자의 최대 크기를 의미한다. 

MSS = MTU - IP Header 크기 (최소 20 Byte) - TCP Header 크기 (최소 20 Byte)

위 그림처럼 MTU는 2계층의 헤더/트레일러 크기를 고려하지 않으며 

MSS : 3, 4계층의 헤더/트레일러 크기를 고려하지 않는다. 

'Network' 카테고리의 다른 글

about snmp  (0) 2023.05.21
routing protocal  (0) 2023.05.20
Unicast & Broadcast & Multicast  (0) 2022.05.10
MAC address  (0) 2022.04.21
Subnet mask  (0) 2022.04.20