网络协议之以太网帧

以太网(Ethernet)介绍

以太网(Ethernet)是一种计算机局域网组网技术,wiki 有相关介绍,请移步这里

Ethernet V2 是世界上最早的以太网标准协议。目前IEEE802.3为以太网标准。Ethernet V2 协议与 IEEE802.3 标准只有很小的差别,

可以将 802.3 局域网简称为“以太网”。Ethernet V2是目前广泛使用的以太网协议。 

以太帧格式

目前我们最经常使用的其实是1982年发布的Ethernet II标准,Ethernet II标准的帧格式如下:
           

从上图可以看到 Ethernet II帧,目的地址、源地址字段各占6个字节,目的地址字段确定帧的接收者,源地址字段标识帧发送者。
当使用六个字节的源地址字段时,前三个字节表示由IEEE分配给厂商的地址,将烧录在每一块网络接口卡的ROM中。而制造商通
常为其每一网络接口卡分配后字节。其实目的、源地址就是我们经常说的MAC地址,比如00:1A:A0:31:39:D4就是一个MAC地址。
类型字段,为2字节,用来标识上一层所使用的协议类型,如IP协议(0x0800),arp(0x0806)等。
数据字段 以太网包最小规定为64字节,不足的也会填充到64字节。以太网包的最大长度是1518字节,数据字段长度范围为46到1500,
这是为什么呢?因为以太网包最小规定为64字节,不足的也会填充到64字节。而以太网帧格式的其他部分加起来是6+6+2+4=18字节,
所以数据部分的最小长度为64-18=46字节;而以太网包的最大长度是1518字节,因此1518-18=1500字节。

FCS字段是帧校验字段,即Frame Check Sequence,用来保存CRC(循环冗余校验)校验值。


前导码和帧开始符,从物理线路上看到的帧,除其他信息外,还可看到前导码和帧开始符。任何物理硬件都会需要这些信息。

一个帧以7个字节的前导码和1个字节的帧开始符作为帧的开始。在帧的前面插入的 8 字节中的第一个字段共 7 个字节,是前同步码,

用来迅速实现 MAC 帧的比特同步。第二个字段是帧开始定界符,表示后面的信息就是MAC 帧,如下图。

                

Ethernet II 网络包分析

linux平台上可以使用tcpdump进行分析了,关于tcpdump的使用参考这里

键入命令 sudo tcp -i eth0 -nn -e 'ip' -w ip.pcap -c 2

截获2个Ip包 到 文件 ip.pcap中。

sudo tcp -i eth0 -nn -e -X 'ip' -r ip.pcap 回放,结果如下图。

 

可见源MAC为  00:1A:A0:31:39:D4 目的MAC为 C8:0A:A9:FA:B0:B5 。

此外也可以在windows平台上利用可视化工具分析网络协议包,比如wireshark等。

我以前做过 “基于WinPcap的包截获和分析系统 ” 有兴趣的可以 移步这里

基于WinPcap的包截获和分析系统主要针对windows平台上的网络包截获与分析。也可以对捕获的.cap .pcap格式的

网络包进行分析。


参考:

网络协议课件

http://hi.baidu.com/luolired/item/890417bd18ce9bf863388e58

posted @ 2014-03-22 13:12  Net-Spider  阅读(1068)  评论(0编辑  收藏  举报