Netexpert FAQ 网络分析专家学习建议入口 @netexpert成员申请指南
网络分析时代 netexpert积分规则的说明 Netis招贤纳士(2008年11月22日更新)
发新话题
打印

为什么ethereal抓到小于60的包还不认为是错误包呢

为什么ethereal抓到小于60的包还不认为是错误包呢

书上不时说64就是包最小的长度了吗

TOP

coolyukai

正是因为能在以太网中传输的包最小的包长为64 所以小于64的认为是错误包哦

TOP

当太网中传输的frame长度不够64时会使用填充手段!
估计PC的普通网卡的驱动是会忽略填充数据的!
就像普通网卡不会把VLAN tag信息上传到OS内核一样.
参看:如何让sniffer程序在PC上抓到802.1Q Frame:
http://www.netexpert.cn/viewthread.php?tid=11776

使用下列过滤条件:
frame.pkt_len < 60

在ethereal下可以看到arp,tcp(fin,ack,)都是很小的包!
All gone with the wind!

TOP

恩 并不是所有的驱动程序都会把小于64字节的填充到64

  drivers\net\e1000\
  我的机器用的这个驱动,浏览了下代码,没看到有填充,可能是我没看到

  但我写测试程序结果是,没有填充
  测试程序发送一个arp请求,请求222.222.222.222这个ip的mac地址

  下边who-has 222.222.222.222 (Broadcast) tell 111.111.111.111这个arp
请求是我的程序发出去的,注意它的长度,是没有填充过的
    14 + 8 + 20 = 42字节

     tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
17:06:02.843498 arp who-has 222.222.222.222 (Broadcast) tell 111.111.111.111
        0x0000:  ffff ffff ffff aaaa aaaa aaaa 0806 0001  ................
        0x0010:  0800 0604 0001 aaaa aaaa aaaa 6f6f 6f6f  ............oooo
        0x0020:  ffff ffff ffff dede dede                 ..........
17:06:02.979678 arp who-has 192.168.14.215 tell 192.168.8.91
        0x0000:  ffff ffff ffff 0011 5be6 2a08 0806 0001  ........[.*.....
        0x0010:  0800 0604 0001 0011 5be6 2a08 c0a8 085b  ........[.*....[
        0x0020:  0000 0000 0000 c0a8 0ed7 2020 2020 2020  ................
        0x0030:  2020 2020 2020 2020 2020 2020            ............
17:06:03.043638 arp who-has 192.168.9.74 tell 192.168.8.8
        0x0000:  ffff ffff ffff 00c0 9f40 48e6 0806 0001  .........@H.....
        0x0010:  0800 0604 0001 00c0 9f40 48e6 c0a8 0808  .........@H.....
        0x0020:  0000 0000 0000 c0a8 094a 0000 0000 0000  .........J......
        0x0030:  0000 0000 0000 0000 0000 0000            ............
17:06:03.744124 arp who-has 192.168.9.23 tell 192.168.8.20
        0x0000:  ffff ffff ffff 0040 0513 61e3 0806 0001  .......@..a.....
        0x0010:  0800 0604 0001 0040 0513 61e3 c0a8 0814  .......@..a.....
        0x0020:  0000 0000 0000 c0a8 0917 9e5f 0b15 5018  ..........._..P.
        0x0030:  43d8 30c4 0000 0000 0054 ff53            C.0......T.S
Quit
本帖最近评分记录
  • scz 威望 +15 您的发言很有意义 2007-1-24 08:35

TOP

引用:
原帖由 chinit 于 2007-1-19 18:51 发表
恩 并不是所有的驱动程序都会把小于64字节的填充到64

  drivers\net\e1000\
  我的机器用的这个驱动,浏览了下代码,没看到有填充,可能是我没看到

  但我写测试程序结果是,没有填充
  测试程序发送一 ...
你用tcpdump -n -s 1514 -w arp.cap ... 抓一些包贴上来看看
说了世上一无牵挂为何有悲喜
说了朋友相交如水为何重别离
说了少年笑看将来为何常回忆
说了青春一去无悔为何还哭泣

TOP

网络上很多小于64字节的数据包
如PPPoE,最小好像36还是34字节,忘了.....
静以修身,俭以养德

TOP

[root@stat07 tmp]# tcpdump -n -s 1514 -w arp.cap host 111.111.111.111
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 1514 bytes
5 packets captured
5 packets received by filter
0 packets dropped by kernel
[root@stat07 tmp]# tcpdump -xxx -r arp.cap
reading from file arp.cap, link-type EN10MB (Ethernet)
13:07:25.235310 arp who-has 222.222.222.222 (Broadcast) tell 111.111.111.111
        0x0000:  ffff ffff ffff aaaa aaaa aaaa 0806 0001  ................
        0x0010:  0800 0604 0001 aaaa aaaa aaaa 6f6f 6f6f  ............oooo
        0x0020:  ffff ffff ffff dede dede                 ..........
13:07:27.236293 arp who-has 222.222.222.222 (Broadcast) tell 111.111.111.111
        0x0000:  ffff ffff ffff aaaa aaaa aaaa 0806 0001  ................
        0x0010:  0800 0604 0001 aaaa aaaa aaaa 6f6f 6f6f  ............oooo
        0x0020:  ffff ffff ffff dede dede                 ..........
13:07:29.238038 arp who-has 222.222.222.222 (Broadcast) tell 111.111.111.111
        0x0000:  ffff ffff ffff aaaa aaaa aaaa 0806 0001  ................
        0x0010:  0800 0604 0001 aaaa aaaa aaaa 6f6f 6f6f  ............oooo
        0x0020:  ffff ffff ffff dede dede                 ..........
13:07:31.239788 arp who-has 222.222.222.222 (Broadcast) tell 111.111.111.111
        0x0000:  ffff ffff ffff aaaa aaaa aaaa 0806 0001  ................
        0x0010:  0800 0604 0001 aaaa aaaa aaaa 6f6f 6f6f  ............oooo
        0x0020:  ffff ffff ffff dede dede                 ..........
13:07:33.241534 arp who-has 222.222.222.222 (Broadcast) tell 111.111.111.111
        0x0000:  ffff ffff ffff aaaa aaaa aaaa 0806 0001  ................
        0x0010:  0800 0604 0001 aaaa aaaa aaaa 6f6f 6f6f  ............oooo
        0x0020:  ffff ffff ffff dede dede                 ..........

TOP

引用:
原帖由 chinit 于 2007-1-23 13:08 发表
# tcpdump -n -s 1514 -w arp.cap host 111.111.111.111
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 1514 bytes
5 packets captured
5 packets received by filter
0 packets ...
我倒,是说你存成cap文件,然后用附件形式贴上来,并不是想看你的这个屏幕输出啊。
说了世上一无牵挂为何有悲喜
说了朋友相交如水为何重别离
说了少年笑看将来为何常回忆
说了青春一去无悔为何还哭泣

TOP

那个,确实是我比较晕 这个行么?加了host 111.111.111.111

tcpdump host 111.111.111.111 -n -s 1514 -w arp.cap
附件: 您所在的用户组无法下载或查看附件

TOP

多谢。

你不说我还真没注意过,居然有没填充的情形。刚才在自己机器上抓包也观察了一下,我的这个网卡驱动也没有填充到60字节(不包括CRC)。
说了世上一无牵挂为何有悲喜
说了朋友相交如水为何重别离
说了少年笑看将来为何常回忆
说了青春一去无悔为何还哭泣

TOP

不是没填充,应该是抓包工作在填充之前。假设在A机发送类似楼上伪造的arp包,在B机抓包看看,是否还是42字节呢?
本帖最近评分记录
  • scz 威望 +15 您的发言很有意义 2007-2-2 09:49

TOP

嗯,实测了一下,是你说的这么回事。绕了一圈,把我被颠覆的概念又修正回老样子。多谢。
说了世上一无牵挂为何有悲喜
说了朋友相交如水为何重别离
说了少年笑看将来为何常回忆
说了青春一去无悔为何还哭泣

TOP

果然是这样,受教了

TOP

好像网卡会做这些事的。驱动什么的都可以不用做的。

好像网卡会做这些事的。驱动什么的都可以不用做的。

TOP

发新话题
版块跳转