帮助中心FAQ



arp介绍

 

ARP(Address Resolution Protocol,地址解析协议)是根据IP地址获取物理地址的一个TCP/IP协议。由于OSI模型把网络工作分为七层,IP地址在OSI模型的第三层,MAC地址在第二层,彼此不直接通信。在通过以太网发送IP数据包时,需要先封装第三层(32位IP地址)、第二层(48位MAC地址)的报头。但由于发送数据包时只知道目标IP地址,不知道其MAC地址,而又不能跨越第二、三层,所以需要使用地址解析协议。

 

使用地址解析协议后,计算机可根据网络层IP数据包包头中的IP地址信息对应目标硬件地址(MAC地址)信息,以保证通信的顺利进行。ARP的基本功能就是负责将一个已知的IP地址解析成MAC地址,以便主机间能正常进行通信。

 

arp工作流程

 

 

 

 

 

本地主机PC1:192.168.31.238,目标主机PC2:192.168.31.197。当PC1和PC2通信时,地址解析协议可以将主机PC2的IP地址192.168.31.197解析成主机PC2的MAC地址。PC1和PC2的详细通信过程如下:

1. 当主机PC1发送数据给主机PC2时,首先在自己的本地ARP缓存表中检查主机PC2匹配的MAC地址。

2. 如果主机PC1的缓存表中没有找到相应的条目,它将询问主机PC2的MAC地址,从而将ARP请求帧广播到本地网络上的所有主机。该帧中包括源主机PC1的IP地址和MAC地址。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将会丢弃ARP请求。

3. 主机PC2确定ARP请求中的IP与自己的IP地址匹配,则将主机PC1的地址和MAC地址添加到本地缓存表。

4. 主机PC2将包含其MAC地址的ARP回复消息直接发送回主机PC1(这个数据帧为单播)。

5. 当主机PC1收到从主机PC2发来的ARP回复消息时,会将主机PC2的IP和MAC地址添加到自己的ARP缓存表。本机缓存是有生存期的,默认ARP缓存表的有效期是120s。当超过该有效期后,将再次重复上面的过程。主机PC2的MAC地址一旦确定,主机PC1就能向主机PC2发送IP信息。

 

arp缓存表

 

1. arp缓存表的作用

 

 

ARP协议是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。而ARP缓存中包含一个或多个表,它们用于存储IP地址及其经过解析的MAC地址。在ARP缓存中的每个表又被称为ARP缓存表。

 

2. arp缓存表维护工具

 

arp命令 在计算机中,提供了一个ARP命令。该命令用于查询本机ARP缓存中的IP地址和MAC地址的对应关系、添加或删除静态对应关系等。用户也可以通过使用arp命令验证ARP缓存条目的生命周期。

 

3. arp缓存表的构成

 

```

C:UsersAdministrator>arp -a

 

接口: 192.168.31.238 --- 0xb

  Internet 地址         物理地址              类型

  192.168.31.1          40-31-3c-eb-d3-a3     动态

  192.168.31.197        88-88-88-88-87-88     动态

  192.168.31.255        ff-ff-ff-ff-ff-ff     静态

  224.0.0.2             01-00-5e-00-00-02     静态

  224.0.0.22            01-00-5e-00-00-16     静态

  224.0.0.251           01-00-5e-00-00-fb     静态

  224.0.0.252           01-00-5e-00-00-fc     静态

  239.255.255.250       01-00-5e-7f-ff-fa     静态

  255.255.255.255       ff-ff-ff-ff-ff-ff     静态

```

 

arp报文格式

 

- arp请求协议报文格式

 

 

表中每行长度为4字节,即32位。前4行是以太网(Ethernet II类型)的帧头部

1. 第1个字段:广播类型的MAC地址:0XFF-FF-FF-FF-FF-FF,其目标是网络上的所有主机

2. 第2个字段:源MAC,即请求地址解析的主机MAC地址

3. 第3个字段:协议类型,这里用0X0806代表封装的上层协议是ARP协议

4. 硬件地址:表明ARP协议实现在那种类型的网络上

5. 协议类型:表示解析协议(上层协议)。这里一般是0800,即IP

6. 硬件地址长度:MAC地址长度,此处为6个字节

7. 协议地址长度:IP地址长度,此处为4个字节

8. 操作类型:表示ARP协议数据报类型。1表示ARP协议请求数据报,2表示ARP协议应答数据报

9. 源MAC地址:发送端MAC地址

10. 源IP地址:表示发送端协议地址(IP地址)

11. 目标MAC地址:目标端MAC地址

 

- arp应答协议报文格式

 

 

 

分析arp协议包

 

- 数据分析文件

- 本地主机PC1:192.168.31.238

- 目标主机PC2:192.168.31.197

- 工具:WireShark、cmd-ping

 

```

C:UsersAdministrator>ping 192.168.31.197 -n 1

 

正在 Ping 192.168.31.197 具有 32 字节的数据:

来自 192.168.31.197 的回复: 字节=32 时间=3ms TTL=128

 

192.168.31.197 的 Ping 统计信息:

    数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),

往返行程的估计时间(以毫秒为单位):

    最短 = 3ms,最长 = 3ms,平均 = 3ms

```

 

arp请求包

 

```

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帧数据报详细信息。其中该包大小为60字节

    Arrival Time: Aug 30, 2020 00:12:16.019728000 中国标准时间

    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)    # 以太网帧头信息。其中源MAC地址为88:88:88:88:87:88,目标MAC地址为ff:ff:ff:ff:ff:ff(广播地址)。这里的目标地址为广播,因为主机不清楚对方的MAC地址,因此局域网中所有设备都会收到该数据报

    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)    # 地址解析协议内容,request表示这是一个请求包

    Hardware type: Ethernet (0x0001)    # 硬件类型

    Protocol type: IP (0x0800)    # 协议类型

    Hardware size: 6    # 硬件地址长度

    Protocol size: 4    # 协议长度

    Opcode: request (0x0001)    # 操作码。值为1,表示是个arp请求包

    [Is gratuitous: False]

    Sender MAC address: 88:88:88:88:87:88 (88:88:88:88:87:88)    # 发送端MAC地址

    Sender IP address: 192.168.31.197 (192.168.31.197)    # 发送IP地址

    Target MAC address: 00:00:00_00:00:00 (00:00:00:00:00:00)    # 目标MAC地址

    Target IP address: 192.168.31.238 (192.168.31.238)    # 目标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请求报文格式

 

 

 

arp响应包

 

```

 

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帧数据报详细信息。其中该包大小为42字节

    Arrival Time: Aug 30, 2020 00:12:16.019777000 中国标准时间

    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)    # 以太网帧头信息。其中,源MAC地址为00:f4:8d:58:9b:7f,目标MAC地址为88:88:88:88:87:88。因此可以得知,该主机与对方主机可以正常通信。

    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)    # 地址解析协议内容,reply表示这是一个应答包

    Hardware type: Ethernet (0x0001)    # 硬件地址

    Protocol type: IP (0x0800)    # 协议类型

    Hardware size: 6    # 硬件地址长度

    Protocol size: 4    # 协议长度

    Opcode: reply (0x0002)    # 操作码为2,表示该包是arp响应包

    [Is gratuitous: False]

    Sender MAC address: 00:f4:8d:58:9b:7f (00:f4:8d:58:9b:7f)    # 发送方MAC地址

    Sender IP address: 192.168.31.238 (192.168.31.238)    # 发送方IP地址

    Target MAC address: 88:88:88:88:87:88 (88:88:88:88:87:88)    # 目标MAC地址

    Target IP address: 192.168.31.197 (192.168.31.197)    # 目标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应答报文格式