네트워크 TCP/IP 4계층 - MTU, MSS,PMTUD

이강용·2024년 6월 9일
0

CS

목록 보기
43/109

MTU(Maximum Transmission Unit)

  • 네트워크를 통해 전송될 수 있는 최대 패킷 크기
  • 이 크기는 링크 계층에서 정의되며 일반적으로 이더넷에서는 1500 바이트로 설정되어 있음
  • MTU가 너무 크면 패킷이 네트워크 장비에서 잘려나가서 여러 조각으로 나뉘어야 하므로 성능이 저하될 수 있음
  • 반대로 MTU가 너무 작으면 오버헤드가 많아져 효율성이 떨어짐

Router C의 MTU가 1400 바이트이기 때문에 패킷이 분할되는 모습

패킷이 분할되지 않는 경우

경우설명
MTU 값이 경로상의 모든 링크에서 허용되는 크기일 때경로상의 모든 네트워크 링크가 동일한 MTU 값을 갖고 있거나, 보내는 패킷의 크기가 경로상의 최소 MTU 값 이하일 경우, 패킷은 분할되지 않습니다. 이는 특히 로컬 네트워크에서 동일한 네트워크 장비와 동일한 설정을 사용할 때 자주 발생합니다.
PMTUD (Path MTU Discovery) 사용PMTUD를 통해 경로상의 최소 MTU 값을 발견한 후, 그 값을 기반으로 패킷 크기를 조정하면 패킷이 분할되지 않습니다. 이 경우 송신 측에서 MTU 값을 적절히 조정하여 패킷을 전송하게 됩니다.
Fragmentation 비트를 설정한 경우IPv4 헤더의 Don’t Fragment (DF) 비트를 설정하면, 패킷이 경로상의 MTU보다 클 경우 라우터가 패킷을 분할하지 않고, 대신 패킷을 드롭하고 ICMP Fragmentation Needed 메시지를 송신 측으로 반환합니다. 이를 통해 송신 측에서 패킷 크기를 조정하게 됩니다.
고정 크기의 패킷 전송애플리케이션이 패킷 크기를 네트워크 경로상의 최소 MTU 값 이하로 설정하여 데이터를 전송하는 경우, 패킷은 분할되지 않습니다.

MSS(Maximum Segment Size)

  • TCP 세그먼트에서 전송될 수 있는 데이터의 최대 크기

  • TCP 계층에서 정의되며 IP 헤더와 TCP 헤더를 제외한 순수 데이터의 크기를 의미

  • 일반적으로 MSS는 MTU에서 IP 헤더(20 바이트)와 TCP 헤더(20 바이트)를 뺀 크기로 설정

    • 그렇기 때문에 MTU가 1500이라도 데이터는 보통 1460 바이트(IP 헤더, TCP 헤더의 크기를 뺀 값) 이하의 크기로 보내야 전달이 됨

  • 이더넷 헤더 14 바이트, FCS(Frame Check Sequence) 4 바이트가 포함된 것을 통틀어 이더넷 프레임이라고 하고 FCS는 데이터의 에러 검출을 돕기 위해 삽입되는 필드

    • 따라서, 이더넷 프레임의 크기는 일반적으로 1518바이트

ping -D -s 1472 www.google.com

  • ping의 경우 IP 헤더(20 바이트) + ICMP 헤더(8 바이트)로 요청을 보내는 것이기 때문에 1472바이트(1500 - 20 - 8) 사용

PMTUD(Path MTU Discovery)

  • 송신 측에서 목적지까지의 경로 상에서 사용 가능한 가장 작은 MTU를 발견하기 위해 사용하는 프로토콜
  • PMTUD는 IP 패킷을 Don't Fragment 비트를 설정하여 전송하고 경로 중간에 MTU가 작은 링크가 있으면 해당 링크에서 ICMP Fragmentation Needed 메시지를 반환하여 송신 측에서 MTU 크기를 조정하게 됨
  • 이를 통해 패킷이 경로 상에서 조각나는 것을 방지하고 최적의 전송 크기를 유지할 수 있음
profile
HW + SW = 1

0개의 댓글