为什么有了MTU,还需要MSS?
MTU
Maximum Transmit Unit,最大传输单元。由数据链路层提供给网络最大的一次传输数据的大小,一般MTU=1500Byte.
“车同轨”,保证底层数据包能在物理网络中顺利传输!!!
例如:IP层有<=1500Bytes数据需要发送,发送一个IP包就可以完成了;IP层有>1500Bytes数据需要发送,则需要分片才能完成发送,发送后的IP Header ID相同
MSS
Maximum Segment Size,TCP提交给IP层最大分段大小,只包含TCP payload,MSS是TCP用来限制应用层最大的发送字节数。
优化上层传输效率,避免不必要的IP分片
例如:MTU=1500Bytes,那么MSS=1500-20(IP Header)-20(TCP Header)=1460Byte。如果应用层有2000Bytes数据要发送,那么需要切片才能完成,第一个TCP切片=1460,第二个TCP切片=540
TCP宁愿自己进行数据分片
TCP三次握手期间就会协商MSS值:是根据路径MTU的值计算而出的MSS。
TCP会在数据传输前将这些数据分割成多个不超过MSS大小的段(segment)。这样做的好处是,每个TCP段都是独立可确认的,如果某个段在网络中丢失,TCP可以通过其自身的重传机制只重新发送丢失的那段数据,而不是整个原始的大数据包。
相比之下,如果数据在TCP层未经适当分段就直接交给IP层,而这个大数据包又超过了路径中的MTU,那么IP层将不得不进行分片。IP分片的问题在于,所有分片都必须全部到达目的地才能重组原始数据包,如果其中任何一个分片丢失,则整个数据包都需要重传(发送方重传!如果是因为单个IP分片丢失导致TCP数据段不完整,TCP无法知道这一点,它只会注

最低0.47元/天 解锁文章
1321

被折叠的 条评论
为什么被折叠?



