MTU&MSS

什么是MTU?

Maximum Transmission Unit,缩写MTU,中文名是:最大传输单元。

属于OSI哪一层

MTU属于OSI-7层网络协议模型中的数据链路层协议,MTU限制的是数据链路层的payload,也就是上层协议的大小,如IP数据包。通常情况下MTU值为1500字节,为什么是1500?其实一个标准的以太网数据帧大小是:1518,头信息有14字节,尾部校验和FCS占了4字节,所以真正留给上层协议传输数据的大小就是:1518 - 14 - 4 = 1500。

MSS介绍

MSS是TCP中的定义,也就是在第四层传输层的概念。MSS:maximum segment size,最大分节大小,也可以叫做最大报文段长度,为TCP数据包每次传输的最大数据分段大小,一般由发送端向对端TCP通知对端在每个分节中能发送的最大TCP数据。

TCP在连接建立的时候,即在发送SYN段的时候,同时会将MSS发送给对方(MSS选项只能出现在SYN段中),告诉对端他期望接收的TCP报文段数据部分最大长度。

这个听上去和MTU有点类似,那这两个到底有什么区别,有什么关系吗?

MTU是定义在链路层,上面还有网络层、传输层,在网络层需要封装IP头部(20 Byte),传输层需要封装TCP头部(20 Byte),因此,可以很简单的计算出单次传输的最大有效数据长度=MTU-IP头部-TCP头部,通常情况下就是1500-20-20=1460。

那如果MSS>1460会发生什么呢?这意味着传输一个MSS大小的数据在TCP层没有做分包处理,但到了链路层,发现数据包超过了MTU,必须进行分片处理,这种分片显然有额外的开销。为了避免分片开销,MSS通常就定义为1460,如果是PPPOE网络,MSS建议为1452。

举报
评论 0