现在的位置: 首页 > 综合 > 正文

TCP/IP协议中的包头问题

2013年10月07日 ⁄ 综合 ⁄ 共 665字 ⁄ 字号 评论关闭

一、TCP/IP协议中的包头问题

在TCP/IP网络中,底层协议是一回事,应用层协议又是一回事。所以作为应用层协议的HTTP,自身可以传输多大的内容,以及如何传输(例如
HTTP包一般以48K为界限,超过48K时会出现应用层的分包,即所谓的multipart)这些都是由应用层来约定的。而在底层协议中,链路层与传输
层对“传多大的包”有各自的约定。简单的说,传输层约定了IP数据包的MSS(最大分段尺寸),链路层约定了MTU(最大传输单元)。如果一个IP数据包
的大小超过MTU(即MSS+TCP报头+IP报头>MTU),则在链路层会将IP数据包拆成多个信息包传输。

 

MSS与不同的传输环境相关,有两个推荐值。一般来说,
 - 目标地址非本地地址(与源地址在不同一个网段)时,MSS默认值通常是536;否则,
 - MSS默认值通常为1460。
MTU与网络环境相关,也有两个推荐值。一般来说,
 - 串口为576字节;
 - 以太网为1500字节。

MTU/MSS的两种推荐值中都有40个字节的差异,即是(TCP报头+IP报头)的一般值,该值以120
bytes为上限(20+20字节的IP/TCP头部;40+40字节IP/TCP可选头部)。所以在复杂的网络环境中,应用层的网络协议可用的单个数据
包的大小,最佳值应小于536-80=456字节,尽量限制在1460-80 =
1380字节以内。这样的限制,是综合考虑传输层与链路层协议的结果。不过一些常见的建议中,也会用536/1460这两个值,与这里的讨论没有太本质的
差异。

 

摘自:前端要给力之:URL应该有多长

抱歉!评论已关闭.