MTU와 MSS에 대해 알아보자.
MTU (Maximun Transmission Unit)란 무엇인가?
MTU는 데이터링크 계층에서 하나의 프레임 또는 패킷에 담아 운반할 수 있는 "최대 데이터 크기(Byte)"를 말한다.
마치 택배 회사의 최대 취급 상자 크기 규정과 같다.
상자가 너무 크면 배송 차량에 들어가지 않을 것이다.
기본값: 우리가 흔히 쓰는 일반적인 이더넷(Ethernet) 환경의 기본 MTU 값은 1500 바이트다.
점보 프레임 (Jumbo Frame): 1500 바이트를 초과하여 최대 9000 바이트까지 전송할 수 있게 만든 환경을 점보 프레임 이라고 부른다.
영향: MTU가 너무 작으면 헤더 비율이 높아져 효율이 떨어지고, 너무 크면 장비가 처리하지 못해 패킷이 쪼개지거나 버려진다.
MSS (Maximum Segment Size)란?
MTU가 상자 전체의 크기라면, MSS는 상자 안에 들어가는 실제 내용물의 최대 크기를 뜻한다.
TCP/IP 통신을 하려면 데이터 앞에 반드시 IP 헤더와 TCP 헤더를 붙여야 한다.
- IP 헤더의 최소 크기 = 20 바이트
- TCP 헤더의 최소 크기 = 20 바이트
따라서, 이더넷 환경에서 TCP 통신을 할 때 실제 보낼 수 있는 최대 데이터(MSS)는 다음과 같다.
MSS = MTU (1500) - IP 헤더 (20) - TCP 헤더 (20) = 1460 바이트
패킷이 MTU보다 크다면?
만약 3000 바이트짜리 데이터를 MTU가 1500인 구간으로 보낸다면 어떻게 될까?
라우터는 이 패킷을 1500 크기에 맞게 쪼갠다.
이를 IP 단편화(Fragmentation)라고 부른다.
- 단편화의 문제점: 패킷을 쪼개고 도착지에서 다시 조립하는 과정에서 라우터의 자원을 소모하며 오버헤드와 지연(Latency)이 발생한다. 쪼개진 조각 중 하나라도 유실되면 전체를 다시 보내야 해서 비효율적이다.
- 해결책:PMTUD (Path MTU Discovery): 단편화를 막기 위해 출발지와 목적지 사이의 전체 경로중에서 가장 작은 MTU(Path MTU)를 미리 찾아내어, 처음부터 그 크기에 맞춰 패킷을 보내는 기술이다.
꿀팁: VPN 환경에서의 MTU 조절
VPN(IPsec)이나 GRE 터널링을 사용하면 원본 패킷에 터널링 헤더가 추가로 붙게 된다.
1500 꽉 채워서 보냈는데 헤더가 추가되면 1500을 훌쩍 넘겨 단편화가 발생한다.
따라서 VPN 환경에서는 일반적으로 MTU 값을 1400~1450 바이트 정도로 낮춰서 설정해야 한다.
실습

CMD에서 해봤다.
ping -f -l 1500 <<
패킷 조각화가 필요하지만 DF가 설정되어 있습니다.라며 100% 손실이 발생합니다.
이유는 -l 옵션은 실제 데이터의 크기만 지정하기 때문이다.
데이터 1500바이트 + IP 헤더(20바이트) + ICMP 헤더(8바이트) 가 더해져 총 패킷 크기는 1528 바이트가 된다.
이더넷의 기본 MTU인 1500을 초과하므로 라우터가 패킷을 쪼개야(단편화) 하는데,
내가 -f 옵션 ( Don't Fragment)을 주었기 때문에 그냥 전송을 포기해 버렸다.
ping -f -l 1472
지연 시간과 함께 정상적으로 응답이 돌아왔다.
전체 MTU 1500에서 IP 헤더와 ICMP 헤더의 크기인 28바이트를 빼면 정확히 1472바이트가 나온다.
즉, 데이터를 1472바이트로 꽉 채워서 보내면 전체 패킷 크기가 MTU 1500에 딱 맞게 떨어지기 때문에,
패킷이 쪼개지지 않고 잘 갔다.
문제 풀어보자
MSS 1460이고, MTU 100일 경우 해당 패킷은 몇 개로 조각화되는가?
정답은..... 19개다.
먼저 쪼개야 할 원본 데이터의 전체 크기를 구해보자.
MSS가 1460바이트라는 것은 순수 데이터의 크기를 의미한다.
IP 게층에서 이 데이터를 쪼개기 전 상태를 보면, 데이터 앞에 TCP 헤더 20바이트가 붙어있다.
따라서 IP 게층이 잘라야 하는 전체 데이터는 순수 데이터 1460바이트 + TCP 헤더 20바이트 = 1480이다.
패킷 한 개에 담을 수 있는 최대 데이터 크기를 구하자.
MTU 100바이트라는 것은 IP 헤더를 포함한 전체 패킷 크기의 최댓값이 100바이트라는 뜻이다.
조각난 패킷들 앞에도 항상 IP 헤더 20바이트가 무조건 들어가야 하므로,
실제로 조각 패킷 하나에 담을 수 있는 알맹이 데이터 크기는 100 - 20 = 80바이트다.
전체 데이터를 조각 패킷 하나의 크기로 나누자.
1480바이트를 80바이트짜리 상자에 나누어 담으면 된다.
1480 나누기 80을 하면 18.5가 나온다.
80바이트로 꽉 채운 상자가 18개 만들어지고, 남은 40바이트를 담기 위해 상자가 1개 더 필요하다
즉 총 19개의 조각으로 단편화가 진행된다.
결론
MTU와 MSS는 네트워크 패킷이 병목 없이 매끄럽게 흐르기 위한 가장 기본적인 규격이다.
꼭 알고 가자~
'Infra > 네트워크' 카테고리의 다른 글
| 이더채널(EtherChannel)이란? (0) | 2026.02.17 |
|---|---|
| DHCP(동적 호스트 구성 프로토콜) 완벽 정리 (0) | 2026.02.11 |
| Trunk Port란? (실습까지) (0) | 2026.01.20 |
| 트랜스패런트 브리징(Transparent Bridging)이란? (0) | 2026.01.19 |
| 패킷 트레이서(Packet Tracer)란? (0) | 2026.01.15 |