ARP
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
在相同网段的ARP工作原理
如图,在相同网段的时候,PC5会广播ARP请求,然后根据交换机的工作原理,如果划分了VLAN就在相同的VLAN内广播,如果没有划分VLAN隔离就,也就是默认的VLAN 1,在VLAN 1内广播,相当于也是在VLAN内广播。
PC上IP地址配置、MAC地址如图而且不配置网关地址,交换机不做任何配置;
在PC5上ping2.2.2.4,进行抓包
1.可以看到PC5源地址46:27:57:a4:05:06,目的地址为广播的ARP请求包,广播请求Who has 2.2.2.4?
2.PC6收到ARP广播包后把PC5的MAC地址和IP地址记入到ARP缓存表中,然后PC6回应源地址是46:27:59:05:06:06,目的地址是PC5的46:27:57:a4:05:06单播ARP回应;
3.PC5收到ARP单播回应,记入ARP缓存表;然后发送ICMP的ping包
配置地址如图,地址掩码相同,PC的网关是和路由器直连的路由器接口地址
首先,这里有几个问题,路由器有隔离广播域的功能,那么,当PC2广播ARP请求的时候,PC3应该是收不到的,那么PC2是怎么通过IP地址ARP广播请求得到PC3的MAC地址的呢?
回答一下上面的问题:
1.PC2得到的并不是PC3的MAC地址,而是网关R1的g0/0接口的MAC地址;
2.路由器的确隔离广播域;
首先,和上面没有配置网关地址可以看出,PC和路由器都会广播发送ARP的request报文
路由器在他接口的广播域发送广播报文,PC收到并记入到ARP缓存表;
PC广播自己的MAC地址,让网关能收到,路由器收到记入ARP缓存表;
这样PC和他的网关就有对方MAC地址和IP地址对应的缓存表;
接下来我们进行ping测试
可以看到,在PC6
发送不同网段的数据包的时候,ARP的作用是寻找网关的MAC地址,然后通过网关来转发不同网段的数据包;
这里再说明一下代理ARP和正常ARP是怎么样的一个区别:
代理ARP:
PC没有设置网关,在和不同网段通信的时候,直接发送ARP广播包,直接询问目的网段,而这时,最近一个网关路由器充当一个代理的功能,回应自己的MAC地址给他,前提是这个路由器有ARP代理的功能;
正常ARP:
PC设置了网关,PC在访问不同网段的时候,PC就直接会去找网关发送的是同网段的数据包,在发送和接受数据包的时候,要找的IP地址对应的MAC地址都是这个网关的MAC地址;
不管是那个形式的ARP,不同网段都是要查网关的MAC地址,代理ARP不会告诉你是他充当了你的网关,而是直接告诉你,他就算你要找的那个目的地,而正常ARP就在你知道他是网关的前提下,你直接找这个网关来帮你转发数据;
接下来我们在说一下,为什么一定要知道了MAC地址才能通信:
首先从OSI和TCP/IP的网络模型都可以看出,网络层也就是IP地址的所工作的位置,是被MAC地址所工作的位置数据链路层或者网络接口层封装,这是从规定上解释,网络层通信一定要被底层封装,也就是要知道了MAC地址后IP地址才能通信;
那为什么不直接用MAC地址在公网来寻址呢?
MAC地址就像身份证一样,它只唯一的标志一个网络接口,它没有被设计为具有寻址功能,因为MAC地址是固定的;
在局域网,网络规模不是非常大,可以靠MAC地址寻址;
所以我们想想如果一台PC要靠MAC地址在公网寻址,那这台PC最近的路由器就得知道这个数据帧的目的MAC地址从那个接口转发,但是MAC不想IP地址一样,有掩码,有对应路由协议学习,那你如果要通过MAC地址转发, 你就得知道所有网络的MAC,这样才能知道转发路径,这是不可能的,这种想法也是极端的,设计MAC地址当初就不是为了寻址,而是为了身份唯一;
走过路过,点个三连
一起学习,一起进步
技术交流:QQ---1740602259
arp 不同网段 相同vlan_ARP工作原理 相同网段和不同网段通信过程 代理ARP和ARP的区别 MAC地址为什么不能用来寻址...