概括:
主要来源于unp,可参考:http://blog.youkuaiyun.com/ysu108/article/details/7764461
疑惑:
1. 最小重组缓冲区大小:
ipv4为576,ipv6为1500.
我的理解:这句"任何实现都必须保证支持的最小数据包大小":
- 指ip层必须保证能被正确处理,而不会溢出tcp缓冲区;
- 小于它的包一定能被正确处理,而大于它的包不一定;
- 由对端决定,若对端不指出MSS设为536(减去头部后).
- ps: 似乎如今不采用这种策略,而是通过路径MTU决定.
- ps: 还是不理解,缓冲区是指tcp的缓冲区?ip层似乎没有缓冲区.(未看tcp详解)
2. 路径MTU发现:
主要参考:http://blog.youkuaiyun.com/u011130578/article/details/44629265
原因:过小浪费资源,过大则分片.
何时启用:大多时候发送数据时.
方法:发送pmtu包探测,设置不分片位(DF位).
三种结果:回复成功;回复应该分片(icmp包);不回复(被丢弃).
- 回复成功: 则下次发生再加大pmtu进行探测.
- 根据回复包中的mtu调整pmtu.
- 可能是防火墙不恢复icmp包或路由丢弃,减小pmtu再发送.(快重传快恢复)