|
楼主 |
发表于 2012-11-18 10:55:10
|
显示全部楼层
关于以太网数据帧格式,下载个抓包分析软件自己看看。。。有个软件叫“Wireshark”,官方下载地址 http://www.wireshark.org/download.html 这软件原来不叫这个名,原来好像叫“ethereal”,后来改的名(废话有点
多),抓一个包看看,,
0000 ff ff ff ff ff ff d4 be d9 99 c7 90 08 06 00 01 ........ ........
0010 08 00 06 04 00 01 d4 be d9 99 c7 90 0a ba 1b 63 ........ .......c
0020 00 00 00 00 00 00 0a ba 1b 01 00 00 00 00 00 00 ........ ........
0030 00 00 00 00 00 00 00 00 00 00 00 00 ........ ....
全是16进制,,看不懂啊。。
没关系,咱们一点一点分析,,以太网数据包是这样的,头48位,也就是头6字节是目标地址(以太网当然是MAC地址)上面这个包的头6个字节是ff ff ff ff ff ff,,这样的地址(全是ff,或都说全是二进制的1)是广播地
址,也就是说这个数据包在当前子网中会以广播的形式发送,子网中所有计算机都会收到。。
接下来的6字节是源地址,上面的例子是d4 be d9 99 c7 90,也就是发出这个数据包机器的MAC地址
接下来的2字节表示该帧数据类型,本例是08 06,查查参考书,,你就会知道,这个位置如果是0806的话,这表示当前数据包是ARP数据包。。
后面就是数据部分了。。。。
就这么简单,,目标地址、源地址、数据类型、数据。。。
果真这么简单吗??其实也不是。。除了这些,真正在网线上传输的还有其它内容,只不过这些容易与你无关,网卡都给你自动处理了(其实还有同步位,分隔分,校验位),你只关心我前面说的这些就够了,,除非你要搞
得更底层。。
还是上面的数据包,通过数据类型位置上的0806知道了他是一个ARP数据包,那咱们就戴上ARP眼镜分析一下他的数据部分,这些东西都是死的,没什么意思。。。:((
前2个字节表示硬件地址类型,咱这里是00 01 ,,00 01表示是以太网的硬件地址,即MAC地址
接下来2个字节表示要对应的协议地址类型,这里是08 00,表示是这个ARP的目的是要与IP地址对应,也就是说这前四个字节表示了,这个ARP数据包的目的是要做到MAC地址与IP地址进行对应,,即然这么说,说明ARP还可以
用在TCP/IP以外的网络。。
再接下来的1个字节是硬件地址的长度,这里是06,,,当然是说这里的MAC地址是6个字节表示的。
再接下来的1个字节是协议地址的长度,这里是04,,,是说IP地址用4个节节表示,,(注意如果是IPV6就不是4个字节了,这个地方也不应该是4了)
接来下的2个字节是操作字段,这里是00 01,00 01 表示这是一个ARP请求
接下来的6个字节是d4 be d9 99 c7 90,可能大家也看出来了,这是发送端的MAC地址
接下来的4个字节是发送端的IP地址,这里是0a ba 1b 63,换成IP地址的表示方法是10.186.27.99,
接下来的6个字节是目的以太网地址,这里是00 00 00 00 00 00,因为这是个ARP请求,目的就是要得到目的以太网地址,
接下来的4个字节是目的IP地址,这里是0a ba 1b 01,换成IP地址的形式是10.186.27.1
后面数据全是0,后面这部分是填充数据,因为以太网规定从源MAC地址开始,最小数据量为60字节,不够得填够,所以这里用0填充这部分空间,顺便说一句以太网最大是1514字节
综上,这是一个ARP请求包,一台计算机(IP是10.186.27.99,MAC是d4 be d9 99 c7 90)广播了一个ARP请求,请求得到目的IP为10.186.27.1的计算机的物理是址
这个数据包发出去后,接着看抓包软件,会抓到一个这样的数据包
0000 d4 be d9 99 c7 90 00 e0 fc 41 47 c1 08 06 00 01 ........ .AG.....
0010 08 00 06 04 00 02 00 e0 fc 41 47 c1 0a ba 1b 01 ........ .AG.....
0020 d4 be d9 99 c7 90 0a ba 1b 63 00 00 00 00 00 00 ........ .c......
0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
0040 00 00 00 00 ....
同样在以太网上,这是一个以太网数据包,那头6个字节是目的MAC地址,这里是d4 be d9 99 c7 90,,噢,,就是刚发ARP请求的那台机器的MAC地址,原来这个数据包是发给刚才那台机器的,
接下来往后看后6个字节,是源MAC地址是00 e0 fc 41 47 c1,也就是发这个数据包的计算机的MAC地址
接来的2个字节是该帧数据类型,同样是08 06,同样这是一个ARP数据包
后面是以太网帧格式的数据部分,因为知道了它是ARP数据包,所以用ARP的帧格式分析后面
数据部分的前两个字节是硬件地址类型,这里是00 01,前面有说明
接下来2个字节表示要对应的协议地址类型,这里是08 00,前面有说明
再接下来的1个字节是硬件地址的长度,这里是06,前面有说明
再接下来的1个字节是协议地址的长度,这里是04,前面有说明
接来下的2个字节是操作字段,这里与上面不同,这里是00 02,00 02表示这是一个ARP应答,这个数据包用来回复ARP请求的
接下来的6个字节是源MAC地址,这里是00 e0 fc 41 47 c1
接下来的4个字节是源IP地址,这里是0a ba 1b 01,即10.186.27.1
接下来的6个字节是目的MAC地址,这里是d4 be d9 99 c7 90
接下来的4个字节是目的IP地址,这里是0a ba 1b 63,即10.186.27.99
后面的数据全是0,是填充数据,,
根据上面这些信息,说明这是一个ARP应答数据包,他由10.186.27.1(MAC地址是00 e0 fc 41 47 c1)发出,定向发给10.186.27.99(MAC地址是d4 be d9 99 c7 90),告诉他自己的MAC地址。
好了,先到这里。。 |
|