网络协议之以太网帧
以太网(Ethernet)介绍
以太网(Ethernet)是一种计算机局域网组网技术,wiki 有相关介绍,请移步这里。
Ethernet V2 是世界上最早的以太网标准协议。目前IEEE802.3为以太网标准。Ethernet V2 协议与 IEEE802.3 标准只有很小的差别,
可以将 802.3 局域网简称为“以太网”。Ethernet V2是目前广泛使用的以太网协议。
以太帧格式
目前我们最经常使用的其实是1982年发布的Ethernet II标准,Ethernet II标准的帧格式如下:
当使用六个字节的源地址字段时,前三个字节表示由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