최대 세그먼트 크기

Maximum segment size

최대 세그먼트 크기(MSS)는 컴퓨터나 통신 장치가 단일 TCP 세그먼트에서 수신할 수 있는 가장 많은 양의 데이터를 바이트 단위로 지정하는 TCP 헤더 옵션 필드의 매개변수다.TCP 헤더IP 헤더(예: IP 데이터그램의 MTU와 달리)를 계산하지 않는다.[1]TCP 세그먼트를 포함하는 IP 데이터그램은 단일 패킷 내에 자급자족하거나, 여러 조각으로 재구성될 수 있다. 어느 쪽이든 MSS 한계는 최종 재구성된 TCP 세그먼트에 포함된 총 데이터 양에 적용된다.

IP 계층의 단편화를 방지하려면 호스트가 처리할 수 있는 최대 IP 데이터그램에서 IP 및 TCP 헤더 크기를 뺀 값으로 최대 세그먼트 크기를 지정해야 한다.[2]따라서 IPv4 호스트는 536 옥텟(=576[3] - 20 - 20)의 MSS를 처리할 수 있어야 하며 IPv6 호스트는 1220 옥텟(= 1280[4] - 40 - 20)의 MSS를 처리할 수 있어야 한다.

MSS 값이 작으면 IP 단편화가 감소하거나 제거되지만 오버헤드가 높아진다.[5]

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

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

기본값

기본 TCP 최대 세그먼트 크기는 536이다.[6]호스트가 최대 세그먼트 크기를 기본값 이외의 값으로 설정하려는 경우, TCP 핸드셰이크 도중 TCP SYN 패킷에 초기에는 최대 세그먼트 크기가 TCP 옵션으로 지정된다.연결이 설정된 후에는 값을 변경할 수 없다.[7]

층간 통신

MSS를 다른 쪽 끝으로 통지하기 위해, 층간 통신은 다음과 같이 실시한다.[8]

  • 네트워크 드라이버(ND) 또는 인터페이스는 직접 연결된 네트워크의 MTU(Maximum Transmission Unit)를 알아야 한다.
  • IP는 네트워크 드라이버에게 최대 전송 장치를 요청해야 한다.
  • TCP는 IP에 MDDS(Maximum Datagram Data Size)를 요청해야 한다.MTU에서 IP 헤더 길이를 뺀 값(MDS = MTU - IPHDRLen).
  • 연결을 열 때 TCP는 MDDS - TCPHdrLen 값과 동일한 MSS 옵션을 전송할 수 있다.즉, 전송할 MSS 값은 MSS = MTU - TCPHdrLen - IPHdrLen이다.

TCP 세그먼트를 다른 쪽 끝으로 보내는 동안 계층간 통신은 다음과 같이 이루어진다.[9]

  • TCP는 MSS 옵션의 기본값 또는 수신된 값에서 최대 세그먼트 데이터 크기(MSDS)를 결정해야 한다.
  • TCP는 (IP에 물어봄으로써) 소스 조각화가 가능한지 그리고 바람직한지를 결정해야 한다.
    • 만일 그렇다면, TCP는 최대 MSDS + TCPHdrLen까지 IP, 세그먼트(TCP 헤더 포함)에 전달할 수 있다.
    • 그렇지 않은 경우, TCP는 (MSDS + TCPHdrLen) 및 MDDS의 하위 항목까지 IP, 세그먼트(TCP 헤더 포함)에 전달할 수 있다.
  • IP는 TCP에 의해 전달된 데이터의 길이를 확인한다.길이가 MDDS보다 작거나 같으면 IP는 IP 헤더를 부착하여 ND에 넘긴다.그렇지 않으면 IP는 소스 조각화를 수행해야 한다.

MSS 및 MTU

MSS는 때때로 기본 링크 계층의 특징인 MTU/PMTU와 혼동되는 반면 MSS는 TCP와 그에 따라 전송 계층에 특별히 적용된다.두 가지는 각각의 프로토콜 데이터 유닛(MTU를 위한 프레임, MSS를 위한 TCP 세그먼트)이 운반하는 페이로드의 최대 크기를 제한한다는 점에서 유사하며 MSS는 기본 링크의 MTU를 초과할 수 없기 때문에 관련된다(TCP 아래의 계층에 의해 추가된 헤더 오버헤드를 고려함).그러나 다른 계층에 적용하는 것 외에도 MSS는 양쪽 방향에서 다른 값을 가질 수 있으며 MTU를 초과하는 프레임은 패킷(분할을 캡슐화하는 것)이 네트워크 계층에 의해 단편화되는 반면 MSS를 초과하는 세그먼트는 간단히 폐기될 수 있다는 차이점이 있다.

추가 읽기

  • Comer, Douglas E. (2006). Internetworking with TCP/IP. Vol. 1 (5/E ed.). Upper Saddle River, NJ, USA: Prentice Hall.
  • Kozierok, Charles M. (2005-09-20). The TCP/IP Guide (3.0 ed.). Retrieved 2011-09-08.

참고 항목

참조

  1. ^ RFC 879, 2, 섹션 3 "MSS는 세그먼트에서 데이터 8진수만 계산하고 TCP 헤더나 IP 헤더는 계산하지 않는다."
  2. ^ RFC 2460, 28페이지, 섹션 8.3
  3. ^ RFC 879, 1페이지, 섹션 1
  4. ^ S. Deering; R. Hinden (July 2017). Internet Protocol, Version 6 (IPv6) Specification. IETF. doi:10.17487/RFC8200. STD 86. RFC 8200. 페이지 25. Obsoletes RFC 2460.
  5. ^ TCP/IP 가이드, TCP 최대 세그먼트 크기(MSS) 및 IP 데이터그램 크기와의 관계
  6. ^ RFC 879, 페이지 1, 섹션 1 "기본 TCP 최대 세그먼트 크기는 536이다."
  7. ^ RFC 793, 19페이지 섹션 3.1 "이 필드는 초기 연결 요청(즉, SYN 제어 비트가 설정된 세그먼트)에서만 전송되어야 한다."
  8. ^ RFC 879, 1페이지, 섹션 11
  9. ^ RFC 879, 1페이지, 섹션 11