[Network] 단편화, MTU, MSS

공부한 내용 정리하는 공간입니다.

틀린 내용이 있을 수 있습니다.

모든 지적, 첨언 환영합니다.

단편화

3계층에서 크기가 큰 데이터를 나누는 것

재조립은 수신지 호스트에 의해서만 수행

전송 중 재조립되지 않음 → 중개장비는 단편화된 데이터를 재조립하지않고 그대로 전송

단편화 공격 : 데이터를 비정상적으로 작게 나눠서 재조립 과부하를 발생시키는 공격

단편화 관련 IP Header Field : Identification, Flags, Fragmentation offset

    >단편화된 데이터는 식별자가 같음

    >식별자가 같은 데이터는 단편화된 데이터인지 확인 필요

 


MTU (Maximum Transfer Unit)

네트워크 기기 (LAN card) 가 전송할 수 있는 최대 전송 단위 (최대 패킷 크기)

일반적으로 LAN card로 Ethernet v2가 사용되기 때문에  MTU = 1500byte로 통용됨

실제로 LAN card가 전송하는 크기 : 1518byte

    >Ethernet Header + FCS = 14 + 4 = 18byte

    >MTU + Ethernet Header + FCS = 1500 + 18 = 1518byte

재조립 시 ID, Flags, Offset 확인

ex1) UDP 기반 애플리케이션 데이터 4000byte를 전송할 때

4계층

UDP Header
8byte
4000byte

    >UDP는 데이터 단편화 진행 X

3계층

MTU = 1500byte

IP Header
20byte
1480byte
UDP Header
8byte
1472Byte

 

IP Header
20byte
1480byte
UDP Header
8byte
1472Byte

 

IP Header
20byte
1064byte
UDP Header
8byte
1056Byte

    >MTU 기준으로 단편화 진행

 

ex2) TCP 기반 애플리케이션 데이터 4000byte를 전송할 때 MSS=5000byte

4계층

TCP Header
20byte
4000byte

    >MSS>Data size 이기 때문에 4계층에서 데이터 크기 조절 X

3계층

MTU = 1500byte

IP Header
20byte
1480byte
TCP Header
20byte
1460Byte

 

IP Header
20byte
1480byte
TCP Header
20byte
1460Byte

 

IP Header
20byte
1100byte
TCP Header
20byte
1080Byte

    >MTU 기준으로 단편화 진행


 

MSS (Maximum Segment Size)

TCP에서 전송할 수 있는 데이터 (payload) 의 최대 크기

재조립 이슈 방지를 위해 4계층에서 MSS를 이용해서 데이터 크기 조절 

MTU처럼 처음부터 정해져있지 않기 때문에 효율적인 전송을 위해 적절한 설정 필요

    >MSS를 너무 작게 설정하면 4계층에서 단편화가 진행되어도 3계층에서 또 단편화가 진행될 수 있어서 비효율적임

MSS = MTU - IP Header - TCP Header

일반적인 MTU=1500, IP Header=최소 20byte, TCP Header=최소 20byte 이므로 MSS = 1500 - 20 - 20 = 1460

MSS > Data size : 4계층에서 단편화 진행되지 않음

재조립 시 Sequence number 확인

ex) TCP 기반 애플리케이션 데이터 4000byte를 전송할 때 MSS=1400byte

4계층

TCP Header
20byte
MSS
1400byte

 

TCP Header
20byte
MSS
1400byte

 

TCP Header
20byte
1200byte

    >MSS<Data size 이기 때문에 4계층에서 MSS 기준으로 데이터 크기 조절

3계층

MTU = 1500byte

IP Header
20byte
1420byte
TCP Header
20byte
1400Byte

 

IP Header
20byte
1420byte
TCP Header
20byte
1400Byte

 

IP Header
20byte
1220byte
TCP Header
20byte
1200Byte

    >IP Header + TCP Header + MSS < MTU 이므로 3계층에서는 단편화 진행 X