- 同网段通信:
- 将源IP和目标IP与掩码相与,判断是否在同一个网段(本案例中属于同网段,不需要默认网关的参与)
- 主机先查看自己的ARP表,如果有对应的ARP条目,则会利用表中MAC地址,直接对IP数据包进行封装,并将数据包转发给目标主机,若没有查找的相应的ARP表项,那么就会进行以下步骤
- 主机A发送ARP Request广播报文,源MAC为自身的MAC,目的MAC为全F的广播MAC。Target IP为目的IP,Target MAC为全0的MAC。
- 主机B收到ARP Request 报文,发现Target IP是自己接口的IP,会发送一个ARP Reply 报文,并通过ARP Request报文中的sender IP和sender MAC来更新自己的ARP表项。
- 主机A收到ARP Reply 报文发现Target IP是自己的接口IP并且自身ARP缓存表中存在相应的ARP请求信息,并通过ARP Reply报文中的sender IP和sender MAC来更新自己的ARP表,同时将数据包进行二层封装后发送出去。
- 跨网段通信:(源目IP不变,源目MAC逐跳变, ARP帮助路由打通下一跳); 实验看看如果主机不配网关可否在同网段以及不同网段通信?
- 主机A先将主机B的IP和自身与一下,发现网段不同,主机A就知道了需要先把包先发到网关,但是这时只有网关的IP地址没有网关mac地址,这时需要通过ARP先查询网关的MAC,主机A会先把数据包放到本地缓存中,然后发送ARP查询报文请求网关的mac地址;
- 网关所在的路由器收到主机A的ARP Request后就知道了主机A的IP地址MAC地址和接口,会先把这些信息添加在本地的ARP表中(交换机本地有MAC地址表,路由器和PC等三层设备是ARP表,路由器特有的是路由表),然后再返回ARP Reply告知主机A网关的MAC地址;
- 主机A收到了网关的MAC地址以后就会把缓存中的数据包调出来完成封装然后发给网关;
- 路由器通过网关收到来自主机A发给主机B的数据包,检查目的IP地址,发现不是给自己的而是给主机B的,决定要进行路由,然后查询路由表,通过查询路由表发现主机B在另外一个网段,需要从另外一个端口发出,此时数据包的源目IP地址是主机A和主机B的,源目MAC地址需要变化, 源MAC会变成网关的,目的MAC需要是主机B的,此时路由器会查询本地ARP表去搜索主机B的IP对应的MAC,如果找到了直接封装并转发,如果找不到就会再次发起ARP Request从跟主机B同网段的端口泛洪转发出去获取主机B的MAC地址,主机B单播返回了ARP Reply以后路由器也会在本地的ARP表中记录主机B的信息,然后完成数据包的封装然后发出。
- 此外需注意点:
- ARP请求以广播发送、以单播回应
- 路由器隔离广播。每一个网段都是独立的广播域
- 跨越网段通信需要使用网关的mac地址
MAC地址表:是交换机等网络设备记录MAC地址和端口的映射关系,代表了交换机从哪个端口学习到了某个MAC地址,交换机把这个信息记录下来,后续交换机需要转发数据的时候就可以根据报文的目的MAC地址去根据MAC地址表转发数据,
查看命令:sh mac address-table
mac addr port Type
45b1-f345-78a4 G0/1/0 dynamic
ARP表:ARP表就是路由器等网络设备记录IP地址和MAC地址对应关系的表项(如下图)。当我们需要转发数据的时候除了需要对方的目的IP地址,还需要知道对方的MAC地址,那么正常情况下我们优先会在本地ARP表中查看是否有目的IP对应的MAC地址。
查看命令:路由器上: sh arp, PC上: arp -a
IP Addr MAC Addr port Type
192.168.2.2 45b1-f345-78a4 G0/1/0 dynamic
路由表:路由表就是路由器用于指导数据包如何转发的表项,记录了去往目的IP的下一跳去哪里,查看命令: sh ip route
目的 IP 协议 优先级 开销 下一跳 出接口文章来源:https://www.toymoban.com/news/detail-674720.html
192.168.2.1 Static 60 0 192.168.1.1 G0/0文章来源地址https://www.toymoban.com/news/detail-674720.html
到了这里,关于ARP的工作过程(同网段和跨网段时ARP分别都如何工作的,以及二层和三层设备的MAC地址表,ARP表和路由表)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!