標籤:
ETHERNET資料包格式( IP & UDP & ICMP & ARP )ETHERNET資料包格式一、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
中有定義,其值為:ETHERTYPE_IP
45 00 --- e5 0d : IP PACKET ,共 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 PACKET,共 20 個位元組
04 3a : 發送方的連接埠號碼,2 個位元組,其十進位表示為:1082
01 95 : 接收方的連接埠號碼,2 個位元組,其十進位表示為:405
41 87 : TCP PACKET 的視窗大小
(2) IP 前序中的協議號碼為 IPPROTO_UDP,其值為 17 。ETHERNET 資料包的格式如下:
|<------------ Ethernet Header ---------->|
------------------------------------------------------------------------
|DST MAC ADDR |SRC MAC ADDR | TYPE | IP PACKET | UDP PACKET |
------------------------------------------------------------------------
|<- 6 bytes ->|<- 6 bytes ->|<- 2 bytes ->|<- 20 bytes ->|<- 8 bytes ->|
如下例所示:
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 20 45 4e 46 44 45 49 45 50 45
4e 45 46 43 41 43 41 43 41 43 41 43 41 43 41 43
41 43 41 43 41 42 4c 00 00 20 00 01
其中作如下說明:
ETHERNET PACKET、IP PACKET 的前序格式同 (1) ,
其中:第二行的 11 表示 IPPROTO_UDP 協議。
00 89 --- fa 63 : UDP PACKET,共 8 個位元組
00 89 : 發送方的連接埠號碼,2 個位元組,其十進位表示為:137
00 89 : 接收方的連接埠號碼,2 個位元組,其十進位表示為:137
00 3a : UDP 包長度,其十進位表示為:58
fa 63 : UDP 檢查和
(3) IP 前序中的協議號碼為 IPPROTO_ICMP,其值為 1 。ETHERNET資料包的格式如下:
|<------------ Ethernet Header ---------->|
-------------------------------------------------------------------------
|DST MAC ADDR |SRC MAC ADDR | TYPE | IP PACKET | ICMP PACKET |
-------------------------------------------------------------------------
|<- 6 bytes ->|<- 6 bytes ->|<- 2 bytes ->|<- 20 bytes ->|<- 8 bytes ->|
如下例所示:
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
其中作如下說明:
ETHERNET PACKET、IP PACKET 的前序格式同 (1) ,
其中:第二行的 01 表示 IPPROTO_ICMP 協議。
08 00 --- 00 01 : ICMP PACKET,共 8 個位元組
08 : ICMP_TYPE,1 個位元組。
00 : ICMP_CODE,1 個位元組。
bc 04 : ICMP 檢查和
1b 21 : ICMP 標識
00 01 : ICMP 資料包序號
二、ETHERNET 資料包的協議類型 TYPE 的值為 0x0806:ARP協議,即:ETHERTYPE_ARP,
該值在 /usr/include/net/ethernet.h中有定義。ETHERNET 資料包的格式如下:
|<------------ Ethernet Header ---------->|
------------------------------------------------------------
|DST MAC ADDR |SRC MAC ADDR | TYPE | ARP 協議資料包 |
------------------------------------------------------------
|<- 6 bytes ->|<- 6 bytes ->|<- 2 bytes ->|<-- 28 bytes -->|
如下例所示:
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 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
其中作如下說明:
ff ff --- 08 06 : ETHERNET PACKET,共 14 個位元組
ff ff ff ff ff ff : 接收方的 MAC 位址,6 個位元組
00 0a 98 1f 0a 8a : 發送方的 MAC 位址,6 個位元組
08 06 : 協議類型,2 個位元組,
0x0806:ARP協議,在/usr/include/net/ethernet.h
中有定義,其值為:ETHERTYPE_ARP
00 01 --- f9 58 : ARP PACKET ,共 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 : 接收方的 MAC 位址,6 個位元組
a6 6f e5 58 : 接收方的 IP 位址, 4 個位元組,十進制:166.111.229.88
ETHERNET資料包格式( IP & UDP & ICMP & ARP )