以太网(Ethernet)最大的数据帧是1518字节。以太网帧的帧头的14字节和帧尾CRC校验4字节共占了18字节,剩下的承载上层协议的地方也就是Data域最大就只剩1500字节.这个值我们就把它称之为MTU。MTU的全称是maximum transmission unit(最大传输单元)。MTU可以认为是网络层能够传输的最大IP包。
而MSS(Maximum segment size)可以认为是传输层的概念,也就是TCP数据包每次能够传输的最大量。为了达到最佳的传输效能,TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小值确定为这次连接的最大MSS值。
MSS为1460是由1500-20(IP头)-20(TCP头)计算出的。但是在实际场景下,TCP包头中会带有12字节的选项–时间戳(用户在发送每一个TCP报文的时候都放置一个时间戳,接受方在确认中返回这个时间戳值。发送方就可以根据这个时间戳来计算RTT(往返传输时间–发送端从发送TCP包开始到接收到它的立即响应所耗费的传输时间.)。从而使得RTT更加精确,减少不必要的重传。减低网络的负载。)
这样,单个TCP包实际传输的最大量就缩减为1448字节。1448=1500-20(IP头)-32(20字节TCP头和12字节TCP选项时间戳)。