arp介紹
ARP(Address Resolution Protocol,地址解析協(xié)議)是根據(jù)IP地址獲取物理地址的一個(gè)TCP/IP協(xié)議。由于OSI模型把網(wǎng)絡(luò)工作分為七層,IP地址在OSI模型的第三層,MAC地址在第二層,彼此不直接通信。在通過以太網(wǎng)發(fā)送IP數(shù)據(jù)包時(shí),需要先封裝第三層(32位IP地址)、第二層(48位MAC地址)的報(bào)頭。但由于發(fā)送數(shù)據(jù)包時(shí)只知道目標(biāo)IP地址,不知道其MAC地址,而又不能跨越第二、三層,所以需要使用地址解析協(xié)議。
使用地址解析協(xié)議后,計(jì)算機(jī)可根據(jù)網(wǎng)絡(luò)層IP數(shù)據(jù)包包頭中的IP地址信息對(duì)應(yīng)目標(biāo)硬件地址(MAC地址)信息,以保證通信的順利進(jìn)行。ARP的基本功能就是負(fù)責(zé)將一個(gè)已知的IP地址解析成MAC地址,以便主機(jī)間能正常進(jìn)行通信。
arp工作流程
本地主機(jī)PC1:192.168.31.238,目標(biāo)主機(jī)PC2:192.168.31.197。當(dāng)PC1和PC2通信時(shí),地址解析協(xié)議可以將主機(jī)PC2的IP地址192.168.31.197解析成主機(jī)PC2的MAC地址。PC1和PC2的詳細(xì)通信過程如下:
1. 當(dāng)主機(jī)PC1發(fā)送數(shù)據(jù)給主機(jī)PC2時(shí),首先在自己的本地ARP緩存表中檢查主機(jī)PC2匹配的MAC地址。
2. 如果主機(jī)PC1的緩存表中沒有找到相應(yīng)的條目,它將詢問主機(jī)PC2的MAC地址,從而將ARP請(qǐng)求幀廣播到本地網(wǎng)絡(luò)上的所有主機(jī)。該幀中包括源主機(jī)PC1的IP地址和MAC地址。本地網(wǎng)絡(luò)上的每臺(tái)主機(jī)都接收到ARP請(qǐng)求并且檢查是否與自己的IP地址匹配。如果主機(jī)發(fā)現(xiàn)請(qǐng)求的IP地址與自己的IP地址不匹配,它將會(huì)丟棄ARP請(qǐng)求。
3. 主機(jī)PC2確定ARP請(qǐng)求中的IP與自己的IP地址匹配,則將主機(jī)PC1的地址和MAC地址添加到本地緩存表。
4. 主機(jī)PC2將包含其MAC地址的ARP回復(fù)消息直接發(fā)送回主機(jī)PC1(這個(gè)數(shù)據(jù)幀為單播)。
5. 當(dāng)主機(jī)PC1收到從主機(jī)PC2發(fā)來的ARP回復(fù)消息時(shí),會(huì)將主機(jī)PC2的IP和MAC地址添加到自己的ARP緩存表。本機(jī)緩存是有生存期的,默認(rèn)ARP緩存表的有效期是120s。當(dāng)超過該有效期后,將再次重復(fù)上面的過程。主機(jī)PC2的MAC地址一旦確定,主機(jī)PC1就能向主機(jī)PC2發(fā)送IP信息。
arp緩存表
1. arp緩存表的作用
ARP協(xié)議是通過目標(biāo)設(shè)備的IP地址,查詢目標(biāo)設(shè)備的MAC地址,以保證通信的順利進(jìn)行。而ARP緩存中包含一個(gè)或多個(gè)表,它們用于存儲(chǔ)IP地址及其經(jīng)過解析的MAC地址。在ARP緩存中的每個(gè)表又被稱為ARP緩存表。
2. arp緩存表維護(hù)工具
arp命令 在計(jì)算機(jī)中,提供了一個(gè)ARP命令。該命令用于查詢本機(jī)ARP緩存中的IP地址和MAC地址的對(duì)應(yīng)關(guān)系、添加或刪除靜態(tài)對(duì)應(yīng)關(guān)系等。用戶也可以通過使用arp命令驗(yàn)證ARP緩存條目的生命周期。
3. arp緩存表的構(gòu)成
```
C:UsersAdministrator>arp -a
接口: 192.168.31.238 --- 0xb
Internet 地址 物理地址 類型
192.168.31.1 40-31-3c-eb-d3-a3 動(dòng)態(tài)
192.168.31.197 88-88-88-88-87-88 動(dòng)態(tài)
192.168.31.255 ff-ff-ff-ff-ff-ff 靜態(tài)
224.0.0.2 01-00-5e-00-00-02 靜態(tài)
224.0.0.22 01-00-5e-00-00-16 靜態(tài)
224.0.0.251 01-00-5e-00-00-fb 靜態(tài)
224.0.0.252 01-00-5e-00-00-fc 靜態(tài)
239.255.255.250 01-00-5e-7f-ff-fa 靜態(tài)
255.255.255.255 ff-ff-ff-ff-ff-ff 靜態(tài)
```
arp報(bào)文格式
- arp請(qǐng)求協(xié)議報(bào)文格式
表中每行長度為4字節(jié),即32位。前4行是以太網(wǎng)(Ethernet II類型)的幀頭部
1. 第1個(gè)字段:廣播類型的MAC地址:0XFF-FF-FF-FF-FF-FF,其目標(biāo)是網(wǎng)絡(luò)上的所有主機(jī)
2. 第2個(gè)字段:源MAC,即請(qǐng)求地址解析的主機(jī)MAC地址
3. 第3個(gè)字段:協(xié)議類型,這里用0X0806代表封裝的上層協(xié)議是ARP協(xié)議
4. 硬件地址:表明ARP協(xié)議實(shí)現(xiàn)在那種類型的網(wǎng)絡(luò)上
5. 協(xié)議類型:表示解析協(xié)議(上層協(xié)議)。這里一般是0800,即IP
6. 硬件地址長度:MAC地址長度,此處為6個(gè)字節(jié)
7. 協(xié)議地址長度:IP地址長度,此處為4個(gè)字節(jié)
8. 操作類型:表示ARP協(xié)議數(shù)據(jù)報(bào)類型。1表示ARP協(xié)議請(qǐng)求數(shù)據(jù)報(bào),2表示ARP協(xié)議應(yīng)答數(shù)據(jù)報(bào)
9. 源MAC地址:發(fā)送端MAC地址
10. 源IP地址:表示發(fā)送端協(xié)議地址(IP地址)
11. 目標(biāo)MAC地址:目標(biāo)端MAC地址
- arp應(yīng)答協(xié)議報(bào)文格式
分析arp協(xié)議包
- 數(shù)據(jù)分析文件
- 本地主機(jī)PC1:192.168.31.238
- 目標(biāo)主機(jī)PC2:192.168.31.197
- 工具:WireShark、cmd-ping
```
C:UsersAdministrator>ping 192.168.31.197 -n 1
正在 Ping 192.168.31.197 具有 32 字節(jié)的數(shù)據(jù):
來自 192.168.31.197 的回復(fù): 字節(jié)=32 時(shí)間=3ms TTL=128
192.168.31.197 的 Ping 統(tǒng)計(jì)信息:
數(shù)據(jù)包: 已發(fā)送 = 1,已接收 = 1,丟失 = 0 (0% 丟失),
往返行程的估計(jì)時(shí)間(以毫秒為單位):
最短 = 3ms,最長 = 3ms,平均 = 3ms
```
arp請(qǐng)求包
```
No. Time Source Destination Protocol Time since reference or first frame Frame Info
1 0.000000 88:88:88:88:87:88 Broadcast ARP 0.000000000 Yes Who has 192.168.31.238? Tell 192.168.31.197
Frame 1: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) # 第1幀數(shù)據(jù)報(bào)詳細(xì)信息。其中該包大小為60字節(jié)
Arrival Time: Aug 30, 2020 00:12:16.019728000 中國標(biāo)準(zhǔn)時(shí)間
Epoch Time: 1598717536.019728000 seconds
[Time delta from previous captured frame: 0.000000000 seconds]
[Time delta from previous displayed frame: 0.000000000 seconds]
[Time since reference or first frame: 0.000000000 seconds]
Frame Number: 1
Frame Length: 60 bytes (480 bits)
Capture Length: 60 bytes (480 bits)
[Frame is marked: False]
[Frame is ignored: False]
[Protocols in frame: eth:arp]
[Coloring Rule Name: ARP]
[Coloring Rule String: arp]
Ethernet II, Src: 88:88:88:88:87:88 (88:88:88:88:87:88), Dst: Broadcast (ff:ff:ff:ff:ff:ff) # 以太網(wǎng)幀頭信息。其中源MAC地址為88:88:88:88:87:88,目標(biāo)MAC地址為ff:ff:ff:ff:ff:ff(廣播地址)。這里的目標(biāo)地址為廣播,因?yàn)橹鳈C(jī)不清楚對(duì)方的MAC地址,因此局域網(wǎng)中所有設(shè)備都會(huì)收到該數(shù)據(jù)報(bào)
Destination: Broadcast (ff:ff:ff:ff:ff:ff)
Address: Broadcast (ff:ff:ff:ff:ff:ff)
.... ...1 .... .... .... .... = IG bit: Group address (multicast/broadcast)
.... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
Source: 88:88:88:88:87:88 (88:88:88:88:87:88)
Address: 88:88:88:88:87:88 (88:88:88:88:87:88)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Type: ARP (0x0806)
Trailer: 000000000000000000000000000000000000
Address Resolution Protocol (request) # 地址解析協(xié)議內(nèi)容,request表示這是一個(gè)請(qǐng)求包
Hardware type: Ethernet (0x0001) # 硬件類型
Protocol type: IP (0x0800) # 協(xié)議類型
Hardware size: 6 # 硬件地址長度
Protocol size: 4 # 協(xié)議長度
Opcode: request (0x0001) # 操作碼。值為1,表示是個(gè)arp請(qǐng)求包
[Is gratuitous: False]
Sender MAC address: 88:88:88:88:87:88 (88:88:88:88:87:88) # 發(fā)送端MAC地址
Sender IP address: 192.168.31.197 (192.168.31.197) # 發(fā)送IP地址
Target MAC address: 00:00:00_00:00:00 (00:00:00:00:00:00) # 目標(biāo)MAC地址
Target IP address: 192.168.31.238 (192.168.31.238) # 目標(biāo)IP地址
0000 ff ff ff ff ff ff 88 88 88 88 87 88 08 06 00 01 ................
0010 08 00 06 04 00 01 88 88 88 88 87 88 c0 a8 1f c5 ................
0020 00 00 00 00 00 00 c0 a8 1f ee 00 00 00 00 00 00 ................
0030 00 00 00 00 00 00 00 00 00 00 00 00 ............
```
- arp請(qǐng)求報(bào)文格式
arp響應(yīng)包
```
No. Time Source Destination Protocol Time since reference or first frame Frame Info
2 0.000049 00:f4:8d:58:9b:7f 88:88:88:88:87:88 ARP 0.000049000 Yes 192.168.31.238 is at 00:f4:8d:58:9b:7f
Frame 2: 42 bytes on wire (336 bits), 42 bytes captured (336 bits) # 第2幀數(shù)據(jù)報(bào)詳細(xì)信息。其中該包大小為42字節(jié)
Arrival Time: Aug 30, 2020 00:12:16.019777000 中國標(biāo)準(zhǔn)時(shí)間
Epoch Time: 1598717536.019777000 seconds
[Time delta from previous captured frame: 0.000049000 seconds]
[Time delta from previous displayed frame: 0.000049000 seconds]
[Time since reference or first frame: 0.000049000 seconds]
Frame Number: 2
Frame Length: 42 bytes (336 bits)
Capture Length: 42 bytes (336 bits)
[Frame is marked: False]
[Frame is ignored: False]
[Protocols in frame: eth:arp]
[Coloring Rule Name: ARP]
[Coloring Rule String: arp]
Ethernet II, Src: 00:f4:8d:58:9b:7f (00:f4:8d:58:9b:7f), Dst: 88:88:88:88:87:88 (88:88:88:88:87:88) # 以太網(wǎng)幀頭信息。其中,源MAC地址為00:f4:8d:58:9b:7f,目標(biāo)MAC地址為88:88:88:88:87:88。因此可以得知,該主機(jī)與對(duì)方主機(jī)可以正常通信。
Destination: 88:88:88:88:87:88 (88:88:88:88:87:88)
Address: 88:88:88:88:87:88 (88:88:88:88:87:88)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Source: 00:f4:8d:58:9b:7f (00:f4:8d:58:9b:7f)
Address: 00:f4:8d:58:9b:7f (00:f4:8d:58:9b:7f)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Type: ARP (0x0806)
Address Resolution Protocol (reply) # 地址解析協(xié)議內(nèi)容,reply表示這是一個(gè)應(yīng)答包
Hardware type: Ethernet (0x0001) # 硬件地址
Protocol type: IP (0x0800) # 協(xié)議類型
Hardware size: 6 # 硬件地址長度
Protocol size: 4 # 協(xié)議長度
Opcode: reply (0x0002) # 操作碼為2,表示該包是arp響應(yīng)包
[Is gratuitous: False]
Sender MAC address: 00:f4:8d:58:9b:7f (00:f4:8d:58:9b:7f) # 發(fā)送方MAC地址
Sender IP address: 192.168.31.238 (192.168.31.238) # 發(fā)送方IP地址
Target MAC address: 88:88:88:88:87:88 (88:88:88:88:87:88) # 目標(biāo)MAC地址
Target IP address: 192.168.31.197 (192.168.31.197) # 目標(biāo)IP地址
0000 88 88 88 88 87 88 00 f4 8d 58 9b 7f 08 06 00 01 .........X......
0010 08 00 06 04 00 02 00 f4 8d 58 9b 7f c0 a8 1f ee .........X......
0020 88 88 88 88 87 88 c0 a8 1f c5 ..........
```
- arp應(yīng)答報(bào)文格式