최대 세그먼트 크기

최대 세그먼트 크기(Maximum segment size, MSS)는 TCP 헤더의 옵션 필드에 있는 매개변수로, 컴퓨터 또는 통신 장치가 단일 TCP 세그먼트에서 수신할 수 있는 최대 데이터 양(바이트 단위)을 지정한다. TCP 헤더나 IP 헤더는 여기에 포함되지 않는다(IP 데이터그램의 MTU와는 다르다). TCP 세그먼트를 포함하는 IP 데이터그램은 단일 패킷에 자체적으로 포함될 수도 있고, 여러 조각으로 분할되어 재구성될 수도 있다. 어느 경우든 MSS 제한은 최종적으로 재구성된 TCP 세그먼트에 포함된 총 데이터 양에 적용된다.

IP 계층에서 조각화를 방지하려면 호스트는 최대 세그먼트 크기를 호스트가 처리할 수 있는 가장 큰 IP 데이터그램에서 IP 및 TCP 헤더 크기를 뺀 값으로 지정해야 한다. IETF RFC에는 최소 필수 MSS가 정의되어 있지 않지만 최소 MTU가 있으므로 기본 MSS는 MTU에서 최소 IP 및 TCP 헤더 크기를 빼서 계산된다. 예를 들어, IPv4 호스트는 일반적으로 기본적으로 536옥텟(= 576 - 20 - 20)의 MSS를 사용하고, IPv6 호스트는 일반적으로 1220옥텟(= 1280 - 40 - 20)의 MSS를 처리할 수 있다.

MSS 값이 작으면 IP 단편화가 줄어들거나 없어지지만 오버헤드가 증가한다.The TCP/IP Guide, TCP Maximum Segment Size (MSS) and Relationship to IP Datagram Size

데이터 흐름의 각 방향은 서로 다른 MSS를 사용할 수 있다.

대부분의 컴퓨터 사용자에게 MSS 옵션은 운영체제에 의해 설정된다.

TCP 옵션이 활성화된 경우, TCP 옵션 크기(변수 0~320비트, 32비트 단위)를 MSS 크기에서 빼야 한다. 예를 들어, TCP 타임스탬프는 리눅스 플랫폼에서 기본적으로 활성화된다.

 기본값 
IPv4의 기본 TCP 최대 세그먼트 크기는 536이다. IPv6의 경우 1220이다. 호스트가 최대 세그먼트 크기를 기본값 이외의 값으로 설정하려는 경우, 최대 세그먼트 크기는 TCP 옵션으로 지정되며, TCP 핸드셰이크 중 TCP SYN 패킷에 처음 포함된다. 연결이 설정된 후에는 값을 변경할 수 없다.

 관련 문헌 



 같이 보기 
 경로 MTU 탐색

 각주 

분류:패킷