MTU (Maximum Transmission Unit) 은 인터넷에 연결된 장치가 수용할 수 있는 최대 데이터 패킷 크기(단위: 바이트)입니다.
이 글을 읽은 후에 다음을 할 수 있습니다:
관련 콘텐츠
인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!
글 링크 복사
네트워킹에서 MTU(Maximum Transmission Unit)이란 네트워크에 연결된 장치가 받아들일 수 있는 최대 데이터 패킷 크기를 말합니다. 지하도로나 터널의 높이 제한처럼 생각할 수 있습니다. 높이 제한보다 높은 차량은 이를 통과하지 못하는 것처럼 네트워크의 MTU보다 큰 패킷은 해당 네트워크를 통과하지 못합니다.
하지만 차량과는 달리 MTU보다 큰 데이터 패킷은 작은 조각으로 잘라 MTU에 맞출 수 있습니다. 이 과정을 분할이라고 합니다. 분할된 패킷은 목적지에 도착하면 다시 조립됩니다.
MTU의 단위는 바이트입니다. "바이트"는 8개 비트의 정보(즉, 8개의 0과 1)를 의미합니다. 최대 MTU 크기는 1,500바이트입니다.
인터넷을 통해 발송되는 모든 데이터는 패킷이라는 작은 조각으로 나뉘어집니다. 예를 들어, 웹 페이지가 웹 서버에서 사용자 노트북으로 보내지면 웹 페이지를 구성하는 데이터는 인터넷을 따라 일련의 패킷으로 전달됩니다. 이제 패킷은 노트북에서 다시 원본으로 조립됩니다.
데이터 패킷에는 헤더와 페이로드의 두 가지 부분으로 구성됩니다. 헤더에는 패킷의 소스와 목적지 주소에 대한 정보가 포함되며 페이로드는 패킷의 실제 내용입니다. 헤더는 소포에 붙이는 발송 라벨이고 페이로드는 소포의 내용물입니다. (소포와 달리 인터넷의 패킷에는 다수의 네트워킹 프로토콜에 의해 다수의 헤더가 부착됩니다.)
MTU는 거의 언제나 계층 3* 패킷(IP(Internet Protocol)를 이용하는 패킷)을 참조하여 이용됩니다. MTU는 모든 헤더와 페이로드를 포함해 패킷을 전체로 측정합니다. 여기에는 IP 헤더와 TCP(Transport Control Protocol) 헤더가 포함되며 전체 길이에 40바이트가 추가됩니다.
*OSI 모델은 인터넷이 작동할 수 있도록 하는 기능을 7개 계층으로 나눕니다. 계층 3은 네트워크 계층으로 여기에서 라우팅이 일어납니다.
두 개의 컴퓨팅 장치가 연결을 열고 패킷 교환을 시작하면 이들 패킷은 다수의 네트워크를 거쳐 라우팅됩니다. 통신을 하는 양쪽 끝은 두 장치의 MTU만이 아니라 중간의 모든 라우터, 스위치, 서버를 고려해야 합니다. 네트워크 경로 상에 있는 아무 장치나 MTU보다 패킷이 크면 그 패킷은 분할됩니다.
서버 A와 컴퓨터 A가 연결되어 있지만 서로 주고 받는 데이터가 라우터 B와 라우터 C를 거쳐야 한다고 가정하겠습니다. 서버 A, 컴퓨터 A, 라우터 B 모두 MTU가 1,500바이트인데, 라우터 C는 MTU가 1,400바이트입니다. 서버 A와 컴퓨터 A가 라우터 C의 MTU를 모르고 1,500바이트의 패킷을 보낸다고 하면 모든 데이터 패킷은 중간 단계의 라우터 B에 의해 분할됩니다.
분할로 대기 시간이 조금 늘어나고 비효율도 커지므로 가능한 한 분할은 피해야 합니다. (오래된 네트워크 장비는 "죽음의 핑"처럼 분할을 악용하는 서비스 거부 공격에 취약할 수 있습니다.)
모든 네트워크 라우터는 수신하는 모든 IP 패킷의 크기를 이 패킷을 받게 될 다음 라우터의 MTU와 비교합니다. 패킷이 다음 라우터의 MTU보다 크면 이 라우터는 페이로드를 두 개 이상의 패킷으로 분할하고 각각 헤더를 더합니다.
새 패킷마다 (원래의 소스 및 목적지 IP 주소가 포함되도록) 원래 패킷에서 복사된 헤더가 더해지는데 중요한 변경 사항이 있습니다. 라우터는 패킷이 분할되어 재조립이 필요하다는 사실과 패킷가 몇 개가 있는지, 어떤 순서로 발송되는지를 알리기 위해 특정한 필드들을 편집합니다.
운송회사에서 회사 시설 중 한 곳의 중량 한계를 초과하는 소포를 처리한다고 가정한다면, 운송을 거부하는 것이 아니라 소포의 내용물을 세 개의 작은 패킷으로 나누는 것입니다. 또한 발송 라벨을 똑같이 복제하고 각 소포는 동시에 도착해야 하는 일련의 소포 중 하나라며 3개 중 1번, 3개 중 2번 하는 식으로 번호를 붙이는 것입니다(운송 회사의 경우 이렇게 하면 사생활 보호를 위반하는 것이므로, 실생활에서는 이런 일이 일어날 수 없습니다).
패킷을 분할할 수 없어 네트워크 경로 상에 있는 어떠한 라우터나 장치의 MTU를 초과하는 경우 전달되지 않는 경우도 있습니다.
IP 헤더는 소포를 보낼 때 소비자가 작성하는 양식과 같다고 생각하면 됩니다. 이 양식에는 보낸 사람 주소, 받는 사람 주소, 소포를 얼마나 빨리 배달해야 하는지 등과 배달원에게 전하는 특별한 지침이 포함됩니다.
"Don't Fragment" 플래그는 라우터에 대한 특별한 지침으로 IP 헤더의 "양식"에서 선택할 수 있는 옵션입니다. 이 플래그가 설정되면 첨부된 패킷은 분할할 수 없습니다.
해당 패킷을 받은 라우터는 헤더를 분석하고 "Don't Fragment" 플래그를 검사합니다. 이 플래그가 켜져 있고 패킷이 MTU보다 크면 라우터는 패킷을 분할하지 않고 전달하지 않습니다.
이 라우터는 해당 패킷을 누락시키면서 패킷을 보낸 곳에 ICMP 메시지를 보냅니다. ICMP 메시지는 상태 업데이트를 보내는 매우 작은 데이터 패킷을 말합니다. 이 경우에는 본질적으로 "이 패킷들이 너무 크고 분할할 수 없으므로 이 라우터/장치가 전송할 수 없습니다"라고 말합니다.
경로 MTU 발견(PMTUD)는 네트워크 경로 상의 모든 장치, 라우터, 스위치의 MTU를 찾아내는 과정을 말합니다. 위 예에서의 컴퓨터 A와 서버 A가 PMTUD를 이용하고 있었다면, 라우터 B의 MTU 요구 사항을 알아냈을 것이고 분할을 피하기 위해 패킷 크기를 조정했을 것입니다.
PMTUD는 연결된 장치가 IPv4를 이용하는지 IPv6를 이용하는지에 따라 작동 방식이 다소 다릅니다.
IPv4: IPv4는 분할을 허용하므로 IP 헤더에 Don't Fragment 플래그를 포함합니다. IPv4에서의 PMTUD는 Don't Fragment 플래그를 켠 채 시험 패킷을 경로에 보내는 식으로 작동합니다. 경로 상의 라우터 또는 장치가 패킷을 누락한 경우 ICMP 메시지와 MTU를 같이 돌려 보냅니다. 소스 장치는 MTU를 낮추고 다른 시험 패킷을 보냅니다. 이러한 과정은 시험 패킷이 누락되지 않고 전체 네트워크를 통과할 수 있도록 작아질 때까지 반복됩니다.
IPv6: 분할을 허용하지 않는 IPv6의 경우에도 PMTUD 작동은 거의 유사합니다. 가장 큰 차이는 IPv6 헤더에는 Don't Fragment 옵션이 없어 이 플래그를 설정하지 않는다는 점입니다. IPv6를 지원하는 라우터는 IPv6 패킷을 분할하지 않으므로 시험 패킷이 MTU도다 크면 라우터는 패킷을 누락하면서 Don't Fragment 플래그에 체크하지 않고 해당 ICMP 메시지를 다시 보냅니다. IPv6 PMTUD는 IPv4에서처럼 시험 패킷 크기를 줄여가면서 전체 네트워크 경로를 통과할 때까지 반복합니다.
MSS는 최대 세그먼트 크기를 말합니다. MSS는 계층 3이 아닌 계층 4에서 TCP가 사용하며 MSS는 각 패킷 내의 페이로드 크기에만 관련되어 있습니다. 이는 MTU에서 TCP 및 IP 헤더 길이를 빼서 계산합니다.
라우터의 MTU보다 큰 패킷은 분할되거나 누락되지만 MSS보다 큰 패킷은 항상 누락됩니다.
MTU와 MSS에 대한 자세한 내용은 MSS란 무엇인가요?를 참조하시기 바랍니다.