一、ETHERNET 数据包的协议类型 TYPE 的值为 0x0800:IP协议,即:ETHERTYPE_IP,
该值在 /usr/include/net/ethernet.h中有定义。ETHERNET 数据包的格式又细分
为如下几种情况:
(1) IP 报头中的协议号码为 IPPROTO_TCP,其值为 6 。ETHERNET 数据包的格式如下:
|<------------ Ethernet Header ---------->|
-------------------------------------------------------------------------
|DST MAC ADDR |SRC MAC ADDR | TYPE | IP PACKET | TCP PACKET |
-------------------------------------------------------------------------
|<- 6 bytes ->|<- 6 bytes ->|<- 2 bytes ->|<- 20 bytes ->|<- 20 bytes ->|
如下例所示:
00 00 21 cd a8 48 00 0a 98 1f 0a 8a 08 00 45 00
-- -- -- -- -- -- -- -- -- -- -- -- -- --
00 28 38 13 40 00 7e 06 85 48 a6 6f e5 87 a6 6f
-- -- -- -- -- -- --
e5 0d 04 3a 01 95 bc 5d 5a 8b 25 69 20 82 50 11
-- -- -- -- -- --
41 87 cc 34 00 00 00 00 00 00 00 00 00 00 00 00
-- --
其中作如下说明:
00 00 --- 08 00 : ETHERNET PACKET,共 14 个字节
00 00 21 cd a8 48 : 接收方的 MAC 地址,6 个字节
00 0a 98 1f 0a 8a : 发送方的 MAC 地址,6 个字节
08 00 : 协议类型,2 个字节,
0x0800:IP协议,该值在/
该值在 /usr/include/net/ethernet.h中有定义。ETHERNET 数据包的格式又细分
为如下几种情况:
(1) IP 报头中的协议号码为 IPPROTO_TCP,其值为 6 。ETHERNET 数据包的格式如下:
|<------------ Ethernet Header ---------->|
-------------------------------------------------------------------------
|DST MAC ADDR |SRC MAC ADDR | TYPE | IP PACKET | TCP PACKET |
-------------------------------------------------------------------------
|<- 6 bytes ->|<- 6 bytes ->|<- 2 bytes ->|<- 20 bytes ->|<- 20 bytes ->|
如下例所示:
00 00 21 cd a8 48 00 0a 98 1f 0a 8a 08 00 45 00
-- -- -- -- -- -- -- -- -- -- -- -- -- --
00 28 38 13 40 00 7e 06 85 48 a6 6f e5 87 a6 6f
-- -- -- -- -- -- --
e5 0d 04 3a 01 95 bc 5d 5a 8b 25 69 20 82 50 11
-- -- -- -- -- --
41 87 cc 34 00 00 00 00 00 00 00 00 00 00 00 00
-- --
其中作如下说明:
00 00 --- 08 00 : ETHERNET PACKET,共 14 个字节
00 00 21 cd a8 48 : 接收方的 MAC 地址,6 个字节
00 0a 98 1f 0a 8a : 发送方的 MAC 地址,6 个字节
08 00 : 协议类型,2 个字节,
0x0800:IP协议,该值在/