为什么抓包有的包的大小才有54B
为什么抓包有的包的大小才有54B
为Wireshark过滤了这两段数据。网卡要先去掉前导和定界符,才对帧进行检验。
如果校验正确则将帧交给设备驱动程序做进一步处理,这个时候抓包软件才能抓到数据。
因此抓包软件抓到的是去掉前导码、帧前定界符、帧校验字段之外的数据,所以并不是帧的长度不合法。
那为什么会抓到比60B小的数据呢?比如54B?
A:因为以太网封装原则是数据最小为46B,那么如果上层的数据小于46B 会怎么办呢?以太网会默认使用0进行填充至46B,假设上层的数据为tcp空包(IP头+TCP头=40B 没有数据),那么以太网层会进行填充,到达接收端之后,接收端的网卡 CRC 校验之后,将填充也丢弃。此时wireshark 抓包,得到的就是54B 数据包。
以太网最大的数据帧是1518字节,这样刨去帧头14字节和帧尾CRC校验部分4字节,那么剩下承载上层IP报文的地方最大就只有1500字节,这个值就是以太网的默认MTU值。
IP报文头固定20字节。
最小值被限制在 64 = *46*(IP包大小) + 14 (以太网头) + 4 (尾部校验和 FCS)
为什么是 64 呢?
这个其实和以太网帧在半双工下的碰撞有关。
64 字节的说法,我想大家应该都知道是什么样的组成。
14 字节 ( Ethernet II 首部长度 ) + 46 字节 ( 数据字段最小长度要求 ) + 4 字节 ( CRC ) = 64 字节。
最小长度
众所周知,以太网帧最小长度为 64 字节,而一般捕获到的数据包是不包含有 FCS ,所以数据包最小长度是 60 字节,其中数据字段最小长度便是 46 字节,也便是往常所说的 MTU 最小值 。
14 字节 ( Ethernet II 首部长度 ) + 46 字节 ( 数据字段最小长度要求 ) + 4 字节 ( FCS ) = 64 字节
那么关于一个规范的纯 ACK (不带数据)来说,它是多大呢?54 字节 ,显着小于数据包最小长度 60 字节的要求,
14 字节 ( Ethernet II 首部长度 ) + 20 字节 ( IPv4 首部长度 ) + 20 字节(TCP 首部长度) = 54 字节
2、本资源基本为原创,部分来源其他付费资源平台或互联网收集,如有侵权请联系及时处理。
3、本站大部分文章的截图来源实验测试环境,请不要在生产环境中随意模仿,以免带来灾难性后果。
转载请保留出处: www.zh-cjh.com珠海陈坚浩博客 » 为什么抓包有的包的大小才有54B
作者: cjh
手机扫一扫,手机上查看此文章: |
一切源于价值!
其他 模板文件不存在: ./template/plugins/comment/pc/index.htm