免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: solu

以太网帧最小长度是? [复制链接]

论坛徽章:
0
发表于 2013-04-08 13:28 |显示全部楼层
把第一个包完整打开贴出来看看

论坛徽章:
0
发表于 2013-04-08 15:00 |显示全部楼层
本帖最后由 Cyberman.Wu 于 2013-04-08 15:05 编辑

看不到完整数据,猜一下,你的第一个包是自己电脑向外发的包吧?抓包工具在这种情况下是抓的实际发送到以太网MAC层之前的处理(驱动中的数据),
第二个包则是本机收到的外部的数据?

所谓的64字节,通常是指从DA开始,包含后面的4字节CRC(FCS)的长度。通常CPU集成的网口或网卡都会自动处理FCS,所以能收到的最小包是60
字节,这个通常是发送端保证的,如果说软件给硬件的实际长度小于这个长度,硬件向外发送时要填充到这个长度的。

你可以用PF_PACKET发一个短的以太网帧,分别在本端和对端抓包看一下。

而实际的以太网速率计算,还保含了IFG + Preamble(12 + 8字节,希望没记错;这个抓包一般也是看不到的),不是指传的用户数据的速率。

有些CPU上集成的网口可以配置为由软件填写FCS,甚至把Preamble也能由软件处理(这样可以通过软件兼容PON协议,只是速率要打折扣)。

论坛徽章:
1
丑牛
日期:2013-09-29 19:04:50
发表于 2013-04-10 11:12 |显示全部楼层
Cyberman.Wu 发表于 2013-04-08 15:00
看不到完整数据,猜一下,你的第一个包是自己电脑向外发的包吧?抓包工具在这种情况下是抓的实际发送到以太 ...


你好, 你说如果是本机往外发包的话, 抓包抓到的是发往以太网MAC层之前的数据 ?   那就是没有封装以太网帧头咯? 为什么这个包仍然能够看出以太网帧头?
而且,你看都有本机MAC地址和目的MAC地址。 如果是MAC层之前的数据,那不会有这些东西吧 ?

论坛徽章:
0
发表于 2013-04-10 17:45 |显示全部楼层
本帖最后由 Cyberman.Wu 于 2013-04-10 17:46 编辑

回复 13# solu


MAC头是软件填写的,DA + SA + Type都是软件填写的,硬件不会做这些事情的,否则如何发广播包?
如果由硬件自动填写,那么还是再定义它和软件之间的接口;并且收上来的数据是不是应该把这个所谓
头部也直接去掉?

硬件的MAC层一般是处理IFG、Preamble、FCS等。数据长度不够时,它也会自动补齐。对于IP协议,
因为它自身有长度,所以这些补齐的无用数据可以丢掉;但如果是自定义的协议,那么要看协议具体
怎么字了,如果上层协议没有长度的表示,那么收到一个最小帧是无法判断它有没有被自动补齐的。

论坛徽章:
1
丑牛
日期:2013-09-29 19:04:50
发表于 2013-04-10 18:37 |显示全部楼层
Cyberman.Wu 发表于 2013-04-10 17:45
回复 13# solu



那么帧的头 mac+mac+type 是在哪一层封装的?

论坛徽章:
0
发表于 2013-04-11 18:26 |显示全部楼层
回复 15# solu


具体在哪填写要看实现的吧,好像没什么硬性规定。如果用PF_PACKET的RAW模式,完成是应用程序填写以太网头的。

论坛徽章:
0
发表于 2013-04-16 10:51 |显示全部楼层
solu 发表于 2013-03-28 20:08
下图的54字节是怎么来的?不是说以太网一个帧最小64(18+46)字节吗?

第二张图又是60字节了,似乎填满了 ...

第一个图是在发包机上抓的,第二个图是在客户机上抓的吧?
协议栈发送时不会有填充数据,但数据经过链路层传输时会自动 padding,收到的时候会有填充
一个最小数据包的 size 是 64 字节,另外还有 12 字节的帧间隙和 8 字节的前导码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP