ARP原理之广播请求单播回应

J3C Vxlan ARP广播抑制 arp广播功能_单播

J3C Vxlan ARP广播抑制 arp广播功能_IP_02

 

 在多主机环境下,PC1现在发出的ARP请求包,怎么交到PC2手里?

这时,ARP协议就需要采用以太网的"广播"功能:将请求包以广播的形式发送,交换机或WiFi设备(无线路由器)收到广播包时,会将此数据发给同一局域网的其他所有主机。

广播包有一个共同特征:二层封装时目的MAC是全f(ffff.ffff.ffff)或三层封装时目的IP是全1(255.255.255.255)

 注明:广播根据所在层次可分为二层广播和三层广播,根据发生范围可分为本地广播和定向广播,(路由器转发定向广播)。

我们来看下这个ARP广播请求包接下来是如何工作的?

J3C Vxlan ARP广播抑制 arp广播功能_单播_03

 

根据上图我们看到,PC1发送的请求广播包同时被其他主机收到,然后PC3和PC4收到之后(发现不是问自己)则丢弃。而PC2收到之后,根据请求包里面的信息(有自己的IP地址),判断是给自己的,所以不会做丢弃动作,而是返回ARP回应包。

ARP请求是通过广播方式来实现的,那么,PC2返回ARP回应包,是否也需要通过广播来实现呢?答案是否定的。大部分网络协议在设计的时候,都需要保持极度克制,不需要的交互就砍掉,能合并的信息就合并,能不用广播就用单播,以此让带宽变得更多让网络变得更快。

那么,ARP回应包是如何处理的?这里需要特别关注ARP请求包的内容,在上面的图解里面,ARP请求包的完整信息是:我的IP地址是IP1,MAC地址是MAC1,请问谁是PC2,你的IP2对应的MAC地址是多少?

简单来说,ARP请求首先有"自我介绍",然后才是询问。这样的话,PC2在收到请求之后,就可以将PC1的IP和MAC映射信息存储在本地的【ARP缓存表】,既然知道PC1在哪里,就可以返回ARP单播回应包。

 

J3C Vxlan ARP广播抑制 arp广播功能_J3C Vxlan ARP广播抑制_04

ARP数据包解读

为了让大家更好的理解ARP协议以及广播和单播的概念,我们来看一下用Wireshark抓取到的真实网络中的ARP过程,通过数据包的方式来呈现,地址信息如下,部分MAC信息隐去。(建议初学者用GNS3配合Wireshark来抓取协议包进行分析,相比真实网络更加干净,方便分析)

主机1 <---> 主机2

主机1:  IP1 10.1.20.64    MAC1:00:08:ca:xx:xx:xx

主机2:  IP2 10.1.20.109  MAC2:44:6d:57:xx:xx:xx

 【ARP请求包】

J3C Vxlan ARP广播抑制 arp广播功能_J3C Vxlan ARP广播抑制_05

【ARP回应包】

J3C Vxlan ARP广播抑制 arp广播功能_IP_06

【ARP协议字段解读】

Hardware type :硬件类型,标识链路层协议

Protocol type: 协议类型,标识网络层协议

Hardware size :硬件地址大小,标识MAC地址长度,这里是6个字节(48bti)

Protocol size: 协议地址大小,标识IP地址长度,这里是4个字节(32bit)

Opcode: 操作代码,标识ARP数据包类型,1表示请求,2表示回应

Sender MAC address :发送者MAC

Sender IP address :发送者IP

Target MAC address :目标MAC,此处全0表示在请求

Target IP address: 目标IP

ARP地址解析(不同网段)

1.实验拓扑图

 

J3C Vxlan ARP广播抑制 arp广播功能_IP_07

 2.配置两台PC的IP

  

J3C Vxlan ARP广播抑制 arp广播功能_J3C Vxlan ARP广播抑制_08

J3C Vxlan ARP广播抑制 arp广播功能_单播_09

3.配置路由器端口IP

<Huawei>system-view

Enter system view, return user view with Ctrl+Z.

[Huawei]sy R1

[R1]int G0/0/0

[R1-GigabitEthernet0/0/0]ip ad    

[R1-GigabitEthernet0/0/0]ip address 192.168.1.254 24

Jun 29 2017 14:26:01-08:00 R1 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol IP

on the interface GigabitEthernet0/0/0 has entered the UP state.

[R1-GigabitEthernet0/0/0]dis this

[V200R003C00]

#

interface GigabitEthernet0/0/0

 ip address 192.168.1.254 255.255.255.0

 

[R1-GigabitEthernet0/0/0]int G0/0/1

[R1-GigabitEthernet0/0/1]ip add    

[R1-GigabitEthernet0/0/1]ip address 192.168.2.254 24

Jun 29 2017 14:29:02-08:00 R1 %%01IFNET/4/LINK_STATE(l)[1]:The line protocol IP

on the interface GigabitEthernet0/0/1 has entered the UP state.

[R1-GigabitEthernet0/0/1]dis this

[V200R003C00]

#

interface GigabitEthernet0/0/1

 ip address 192.168.2.254 255.255.255.0

#

return

[R1-GigabitEthernet0/0/1]

4.在路由器上开启ARP代理

<R1>system-view

Enter system view, return user view with Ctrl+Z.

[R1]int G0/0/0

[R1-GigabitEthernet0/0/0]arp-pro    

[R1-GigabitEthernet0/0/0]arp-proxy en    

[R1-GigabitEthernet0/0/0]arp-proxy enable

[R1-GigabitEthernet0/0/0]

[R1-GigabitEthernet0/0/0]int G0/0/1

[R1-GigabitEthernet0/0/1]arp-pro    

[R1-GigabitEthernet0/0/1]arp-proxy enab    

[R1-GigabitEthernet0/0/1]arp-proxy enable

[R1-GigabitEthernet0/0/1]

5.在PC3上抓ARP包,并开始用PC3pingPC4

J3C Vxlan ARP广播抑制 arp广播功能_Wireshark_10

 

 

J3C Vxlan ARP广播抑制 arp广播功能_J3C Vxlan ARP广播抑制_11

 

J3C Vxlan ARP广播抑制 arp广播功能_IP_12

6.在PC4上抓ARP包

 

J3C Vxlan ARP广播抑制 arp广播功能_J3C Vxlan ARP广播抑制_13

J3C Vxlan ARP广播抑制 arp广播功能_J3C Vxlan ARP广播抑制_14

 

7.建立连接发送ping 包

PC3MAC:54-89-98-70-63-0B

PC4MAC:54-89-98-6D-65-AF

G0/0/1MAC:00-e0-fc-f4-06-8a

G0/0/0MAC:00-e0-fc-f4-06-89

在192.168.1.0网段抓包

 

J3C Vxlan ARP广播抑制 arp广播功能_J3C Vxlan ARP广播抑制_15

 在192.168.2.0网段抓包

 

J3C Vxlan ARP广播抑制 arp广播功能_J3C Vxlan ARP广播抑制_16

 说明数据包在跨网络传输的时候,源IP与目的IP不会改变,源MAC和目的MAC每经过一跳会变化。