TCP的MSS
MSS(Maximum Segment Size,最大报文段长度)表示可以被终点接收的TCP报文段的最大长度。在TCP首部中可以有多达40字节的选项信息,选项中的内容有很多种,MSS是其中的一种,其格式如图1.31所示。
图1.31 MSS选项的格式
虽然MSS是最大报文段长度,但它定义的是数据的最大长度,不包括TCP首部。
前面讲到的IP分片,是基于MTU对IP数据包进行分片的。在实际应用中应该尽量避免IP分片,TCP考虑到了这一点。为了尽量避免IP层的分片,TCP首先基于MSS对过长的TCP报文进行分段。因此,MSS与MTU是有关联的,一般来说,MSS=MTU-20(IP首部长度)-20(TCP首部长度)。例如,以太网的MTU为1500字节,那么主机在建立TCP连接时通报的MSS是1460字节。
MSS是在连接建立阶段确定的,在建立TCP连接时,每一方在SYN报文中通报它将在连接期间接收的报文段的MSS,然后选取最小的MSS作为双方协商的结果。如果双方都不通报或有一方不通报,一般选择MSS的默认值为536字节。