MSS(최대 세그먼트 크기)란?

MSS(최대 세그먼트 크기)는 장치가 네트워크 연결에서 허용하는 가장 큰 데이터 페이로드입니다.

학습 목표

이 글을 읽은 후에 다음을 할 수 있습니다:

  • 패킷이 무엇이며 패킷 헤더가 무엇인지 이해하기
  • '페이로드'의 정의
  • MTU를 기반으로 MSS를 계산하는 방법 알아보기

관련 콘텐츠


계속 알아보시겠어요?

인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!

Cloudflare가 개인 데이터를 수집하고 처리하는 방법은 Cloudflare의 개인정보 취급방침을 참조하세요.

글 링크 복사

최대 세그먼트 크기(MSS)란?

최대 세그먼트 크기(MSS)는 인터넷과 같은 네트워크를 통해 이동하는 패킷 또는 작은 데이터 청크의 크기를 제한합니다. 네트워크를 통해 이동하는 모든 데이터는 패킷으로 나뉩니다. 패킷에는 내용과 대상에 대한 정보를 포함하는 여러 헤더가 연결되어 있습니다. MSS는 페이로드라고 하는 패킷의 헤더가 아닌 부분을 측정합니다.

데이터 패킷을 운송 트럭에 비유한다면, 헤더가 트럭 자체이고 페이로드가 트레일러 및 화물이며, MSS는 트레일러만 측정하는 저울과 같습니다. 트레일러가 너무 무거우면 트럭이 목적지까지 계속 갈 수 없습니다.

보다 구체적으로, MSS는 네트워크에 연결된 장치에서 수신할 수 있는 가장 큰 전송 제어 프로토콜(TCP) 세그먼트 크기입니다. MSS는 "세그먼트"를 연결된 헤더가 아닌 페이로드의 길이로만 정의합니다. MSS는 바이트 단위로 측정됩니다.

데이터 패킷 헤더 및 페이로드 - TCP 세그먼트 및 MSS

MSS는 패킷 크기와 관련된 다른 메트릭인 최대 전송 단위(MTU)에 의해 결정됩니다. MTU에는 TCP와 인터넷 프로토콜(IP) 헤더가 포함됩니다.비유를 계속해보자면, MTU는 트레일러와 화물만 측정하는 대신 트럭, 트레일러, 화물의 총 중량을 측정합니다.

기본적으로 MSS는 MTU에서 TCP 헤더 및 IP 헤더의 크기를 뺀 값과 같습니다.

MTU - (TCP 헤더 + IP 헤더) = MSS

MTU와 MSS의 주요 차이점 중 하나는 패킷이 장치의 MTU를 초과하면 해당 패킷이 더 작은 조각으로 분할, 즉 "분편화"된다는 것입니다. 대조적으로, 패킷이 MSS를 초과하면 삭제되고 전달되지 않습니다.

TCP란? TCP 헤더란?

전송 제어 프로토콜, 즉 TCP는 데이터 패킷이 삭제된 패킷 없이 순서대로 전달되고 수신되도록 하는 프로토콜입니다. 택배 서비스가 모든 소포 수취인에게 미리 전화해서 소포를 배달하기 전에 특정 시간에 집에 있는지 확인한 다음 발송인에게 배달되었음을 확인하는 메시지를 보낸다고 상상해보세요. TCP는 이와 다소 유사하게 데이터 패킷이 "패키지"로 함께 전달됩니다.

TCP는 TCP 핸드셰이크라는 프로세스를 통해 통신하는 두 장치 간의 연결을 수행하여 작동합니다. MSS는 TCP 핸드셰이크 중에 합의됩니다. 두 장치 모두 수신할 수 있는 패킷의 크기를 통신합니다(이를 "MSS 클램핑"이라고 할 수 있음. 아래 참조). TCP는 모든 패킷에 헤더를 추가하여 각 패킷이 속한 열린 연결과 패킷이 이동하는 순서를 나타냅니다.

TCP 헤더와 IP 헤더의 길이는?

TCP 헤더의 길이는 거의 항상 20바이트*입니다.IP 헤더에는 원본 및 대상 IP 주소와 같은 정보가 포함되며 길이는 역시 20바이트입니다.TCP 패킷과 IP 패킷에는 헤더를 더 길게 만들 수 있는 선택적 헤더 필드가 포함되어 있지만, 이 필드는 거의 사용되지 않습니다.

*컴퓨터 과학에서 바이트는 8개의 이진수를 나타내는 메모리 크기의 단위입니다. 즉, 1과 0의 조합 8개입니다.

TCP MSS의 예

네트워크 라우터의 MTU가 1,500이라고 가정하면 최대 1,500바이트 길이의 패킷만 수락합니다. (더 긴 패킷은 분편화됩니다.) 라우터의 MSS는 얼마로 설정해야 할까요?

MTU - (TCP 헤더 + IP 헤더) = MSS

1,500 - (20 + 20) = 1,460

라우터의 MSS는 1,460바이트로 설정해야 합니다. 페이로드 크기가 1,460바이트보다 큰 패킷은 삭제됩니다. (장치는 해당 장치와 다른 장치 사이에 있는 라우터의 MTU 및 MSS 설정을 인식하지 못하는 경우 실수로 이와 같이 지나치게 큰 패킷을 보낼 수 있습니다. 경로 MTU 검색이라고 하는 프로세스는 이러한 사고를 방지하는 데 도움이 됩니다.)

IPsec 사용은 MSS에 어떤 영향을 미칠까요?

인터넷 프로토콜 보안(IPsec)은 IP의 암호화된 버전입니다.IPsec을 사용하여 전송된 데이터 패킷은 연결된 두 장치만 해석할 수 있도록 변환되어 패킷을 가로챌 수 있는 모든 사람으로부터 페이로드 콘텐츠를 안전하게 보호합니다.IPsec은 가상 사설망(VPN)을 설정하는 데 자주 사용됩니다.

IPsec은 패킷 길이에 몇 바이트를 추가합니다. 이 암호화를 사용하는 연결에서 MSS는 IPsec도 고려해야 합니다.

MTU - (TCP 헤더 + IP 헤더 + IPsec) = MSS

MSS는 네트워크 계층일까요, 아니면 전송 계층 메트릭일까요?

MSS는 계층 4, 즉 전송 계층 메트릭입니다. MSS는 TCP, 즉 전송 계층 프로토콜과 함께 사용됩니다. 그렇지만 MSS는 계층 3( 네트워크 계층)에 적용되는 MTU와 밀접한 관련이 있습니다.

MSS 클램핑이란?

경우에 따라, 네트워크 경로에 있는 라우터의 MTU 값이 일반적인 1,500바이트보다 낮게 설정되어 있습니다. 이로 인해 패킷이 손실될 수 있으며 검색하기 어려울 수 있습니다.

이러한 상황에서도 패킷이 대상에 도달하도록 하려면, 한 가지 옵션은 수신 패킷 페이로드의 크기를 줄이는 것입니다. 이는 MSS 클램프를 적용하도록 서버를 구성함으로써 달성할 수 있습니다. TCP 핸드셰이크 동안, 서버는 수신하고자 하는 패킷에 대해 MSS에 신호를 보내고, 다른 서버로부터 최대 페이로드 크기를 "클램핑"할 수 있습니다. 예를 들어 서버 A와 B가 TCP 연결을 설정하고 서버 B가 1,436바이트의 MSS를 통신하는 경우, 서버 A는 연결 기간에 최대 페이로드 크기가 1,436바이트인 패킷을 보냅니다.

MSS 클램핑의 또 다른 적용 사례는 GRE 터널링의 경우로, 새 대상으로 전송하기 위해 원래 패킷에 24바이트 헤더가 추가됩니다. 원래 패킷이 1,476바이트보다 큰 경우 새 패킷이 일반적인 1,500바이트 MTU를 초과할 수 있습니다. MSS 클램프를 적용하여 GRE 헤더가 적용된 후에도 수신 패킷이 1,500바이트 미만이 되도록 요구할 수 있습니다.

MTU와 MSS에 대한 자세한 내용은 MTU란?을 참조하시기 바랍니다.