tcp、udp、ip包长问题

时间 : 14-11-06 评论 : 0 点击 : 2,214 次

在一次抓包中,发现tcp ack包是54个字节,ack包是没有包体的,只有包头,tcp和ip包头最小都是20字节。这个包中,tcp和ip都是最小包头,一共是40字节,多出来的14字节是怎么回事呢?

14字节解释如下:

以太网封装IP数据包的最大长度是1500字节,也就是说以太网最大帧长应该是以太网首部加上1500,再加上7字节的前导同步码和1字节的帧开始定界符,具体就是:7字节前导同步吗+1字节帧开始定界符+6字节的目的MAC+6字节的源MAC+2字节的帧类型+1500+4字节的CRC校验。 按照上述,最大帧应该是1526字节,但是实际上我们抓包得到的最大帧是1514字节,为什么不是1526字节呢?原因是当数据帧到达网卡时,在物理层上网卡要先去掉前导同步码和帧开始定界符,然后对帧进行CRC检验,如果帧校验和错,就丢弃此帧。如果校验和正确,就判断帧的目的硬件地址是否符合自己的接收条件(目的地址是自己的物理硬件地址、广播地址、可接收的多播硬件地址等),如果符合,就将帧交“设备驱动程序”做进一步处理。这时我们的抓包软件才能抓到数据,因此,抓包软件抓到的是去掉前导同步码、帧开始分界符、CRC校验之外的数据,其最大值是6+6+2+1500=1514。

IP包的最大长度是:65535字节,内容部分最多65535-20=65515字节

UDP包的最大长度:同IP包

最大传输单元(Maximum Transmission Unit,MTU):TCP通常是1500,http://baike.baidu.com/view/26974.htm?fr=aladdin

TCP包最大长度:取决于MTU,通常是1500,数据区域最长1500-20-20=1460。当包长为1500时,因为前面说的14字节原因,抓包看到是1514。从一个webserver中实际得到的返回包,最长是1480而不是1500,原因还不清楚。

传输性能

tcp、udp、ip包长问题:等您坐沙发呢!

发表评论