加载中……
老师好,请教个问题:
以下是我理解的:
MTU:是指整个IP数据包(包含IP头和IP数据两部分)的最大值
MSS: 是TCP数据部分(不包含TCP头)的最大值
场景:
比如在以太网下MTU是1500,握手协商出来的MSS是1460,如果TCP层把1460字节数据放到TCP数据部分,组装步骤如下
步骤1、TCP报文=TCP头(20)+TCP数据(1460)=1480
步骤2、IP报文=IP头(20)+TCP segement=1500
这个是正好1500,没有问题。
有另个疑问:
因为TCP和IP的基本头部都是固定20字节,但TCP和IP都有扩展头部,所以会有大于20字节的时候
1、在步骤1中:如果TCP还有扩展头部(4个字节)要发送,TCP头=20+4,TCP层是会把数据部分减去4字节保证最终segment大小是1480,还是会封装成1484的TCP包给IP层
2、如果TCP包是1480,到IP层有扩展头部(总头部大于20字节),IP层就会分组后再传给数据链路层吧?
作者回复: 理解没问题。避免IP分片是TCP的重要工作,TCP选项当然也是IP的负载,所以不能1484字节给IP层