MTU、MSS 与 以太网帧、TCP、IP报文长度之间的关系

来源:互联网 发布:软件开发管理制度 编辑:程序博客网 时间:2024/04/30 15:56

1.TCP报文头部没有声明长度的字段,所以理论上说TCP报文长度是无限制的。


2.IP报文头部有个16bits的Total length字段,表示IP报文的长度,故IP报文的长度最大可达65536字节


3.以太网帧的最大长度是MTU,为1500字节 


(可见,自顶向下,协议栈对长度的限制越来越大)


4.MSS是TCP报文中数据段的最大长度,前面说了可以是无限的,为什么又冒出个MSS呢?

其实这是考虑到传输的效率,每次传送的数据最大长度太小会增加开销,显然;太大的话在IP层要进行分片,终点时要重组,出错还要重传,所以都会增加开销。因此要合理选择一个最大报文长度,原则是尽可能大,只要到IP层不用分片即可。而IP数据包所经历的路径是动态变化的,因此不同路径上最大不用分片的MSS不同。一般情况下,在建立连接的时候告诉对方自己的MSS,若未填写,则默认为536字节。


5.一般情况下MSS取值使得以太网帧恰好不超过MTU,即若不考虑TCP和IP报文头的可选字段,则MSS与MTU的差值为40,即MSS=MTU-20字节TCP报头-20字节IP报头,那么在以太网环境下,MSS值一般就是1500-20-20=1460字节。

但是常见的服务器发给客户的SYN中通告的MSS的是1440,目前还不知道是为何。


参考资料:http://www.vants.org/?post=109

  http://blog.csdn.net/hldjf/article/details/7450565

0 0