深入解析ETHERNET数据包格式:IP协议与TCP协议详解
1。以太网数据包的协议类型类型值为0x0800:IP协议,即Ethertype_ip,
此值在/usr/include/net/ethernet.h中定义。以太网数据包的格式进一步细分
以下情况是:
(1)IP标头中的协议编号为ipproto_tcp,其值为6。以太网数据包的格式如下:
||
------------------------------------------------------------------------------------------------------------------------
| DST MAC ADDR | SRC MAC ADDR |类型| IP数据包| TCP数据包|
------------------------------------------------------------------------------------------------------------------------
||||||||
如以下示例所示:
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 00 00 00
-----
做出以下解释:
00 00 --- 08 00:以太网包,总计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中
它在值中具有一个定义:Ethertype_ip
45 00 --- E5 0D:IP数据包,总计20个字节
06:协议类型,1是ICMP,6是TCP,17是UDP
A6 6F E5 87:发件人IP地址,4个字节,十进制:166.111.229.135
A6 6F E5 0D:接收器IP地址,4个字节,十进制:166.111.229.13
04 3a ---- 00 00:TCP包,总计20个字节
04 3a:发件人的端口号,2个字节,其十进制表示为:1082
01 95:接收器的端口号,2个字节,其小数为:405
41 87:TCP数据包窗口尺寸
(2)IP标头中的协议编号为ipproto_udp,其值为17。以太网数据包的格式如下:
||
----------------------------------------------------------------------------------------------------------------------
| DST MAC ADDR | SRC MAC ADDR |类型| IP数据包| UDP数据包|
----------------------------------------------------------------------------------------------------------------------
||||||||
如以下示例所示:
FF FF FF FF FF FF FF 00 80 C8 F7 0B 99 08 00 45 00
-------------------------
00 4E 0B 46 00 00 80 11 24 FF C0 A8 44 0A C0 A8
- -
44 FF 00 89 00 89 00 3A FA 63 80 37 01 10 00 01
------------------
00 00 00 00 00 00 00 20 45 4E 46 44 45 49 45 50 45
4E 45 46 43 41 43 41 43 41 43 43 41 43 41 43 41 41 43 41 43
41 43 41 43 41 42 4C 00 00 20 00 01
做出以下解释:
以太网数据包和IP数据包的标题格式与(1)相同。
其中:第二行中的11表示IPPROTO_UDP协议。
00 89 --- FA 63:UDP包,总计8个字节
00 89:发件人的端口号,2个字节,其十进制表示为:137
00 89:接收器的端口号,2个字节,其十进制表示为:137
00 3A:UDP数据包长度,其十进制表达式为:58
FA 63:UDP检查和
(3)IP标头中的协议编号为ipproto_icmp,其值为1。以太网数据包的格式如下:
||
------------------------------------------------------------------------------------------------------------------------
| DST MAC ADDR | SRC MAC ADDR |类型| IP数据包| ICMP数据包|
------------------------------------------------------------------------------------------------------------------------
||||||||
如以下示例所示:
00 0A 98 1F 0A 8A 00 00 21 CD A8 48 08 00 45 00
00 54 00 00 40 00 40 01 D0 97 A6 6F F9 0D CA 70
- -
00 24 08 00 BC 04 1B 21 00 01 C3 E6 2B 41 3B AE
------------------
0B 00 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15
16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25
26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35
36 37
做出以下解释:
以太网数据包和IP数据包的标题格式与(1)相同。
其中:第二行中的01代表IPPROTO_ICMP协议。
08 00 --- 00 01:ICMP数据包,总计8个字节
08:ICMP_TYPE,1个字节。
00:ICMP_CODE,1个字节。
BC 04:ICMP检查和
1B 21:ICMP ID
00 01:ICMP数据包序列号
2。以太网数据包的协议类型类型值为0x0806:ARP协议,即:Ethertype_arp,
此值在/usr/include/net/ethernet.h中定义。以太网包的格式如下:
||
-----------------------------------------------------------------------------------------
| DST MAC ADDR | SRC MAC ADDR |类型| ARP协议数据包|
-----------------------------------------------------------------------------------------
||||||
如以下示例所示:
FF FF FF FF FF FF FF FF FF 00 0A 98 1F 0A 8A 08 06 00 01
----------------------------
08 00 06 04 00 01 00 0A 98 1F 0A 8A A6 6 6F E5 01
----------------------------
00 00 00 00 00 00 A6 6F E5 58 00 00 00 00 00 00 00 00 00 00 00
---------------------
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
做出以下解释:
FF FF --- 08 06:以太网包,总计14个字节
FF FF FF FF FF FF FF FF FF FF:接收器的MAC地址,6个字节
00 0A 98 1F 0A 8A:发件人的Mac地址,6个字节
08 06:协议类型,2个字节,
0x0806:arp协议,in/usr/include/net/ethernet.h
它在值中具有一个定义:ethertype_arp
00 01 --- F9 58:ARP包,总计28个字节
00 01:硬件地址格式,2个字节
08 00:协议地址格式,2个字节
06:硬件地址长度,1个字节
04:协议地址长度,1个字节
00 01:可选,2个字节,0x0001:arpop_request,
0x0002:arpop_reply
此值在/usr/include/net/if_arp.h中定义
00 0A 98 1F 0A 8A:发件人的Mac地址,6个字节
A6 6F E5 01:发件人的IP地址,4个字节,十进制:166.111.229.1
00 00 00 00 00 00 00:接收器的MAC地址,6个字节
A6 6F E5 58:接收器的IP地址,4个字节,十进制:166.111.229.88