声明:本文为原创
#####请转贴时保留以下内容######
作者:GTT
本文档归属http://oldtown.cublog.cn/.转载请注明出处!
请提出宝贵意见Mail:mtloveft@hotmail.com
Linux Version:2.6.33
提示:本文是关于L2的Ethernet分析L3协议的过程!
先看看关于L2的Ethernet的协议格式,因为不了解格式,就不会了解为什么Linux要那么设计。
最好看看RFC,对协议更加透彻。

根据以上格式,要想解析Eth协议,关键要知道,Type和Length,所以Eth的头定义如下

h_proto 决定着上层协议是什么。它的内容如下:

所以当h_proto是0x0800时L3就是IP,如果是0x8100时,上层是Vlan Tag格式的数据报。
Ethernet的地址长度是6byte也就是Mac的地址。