观察ARP协议 和 ICMP协议
ARP请求(request)报文 :主机请求网关的mac地址 下图是PC的Etherne 0/0/1 接口下抓的包 ps:最开始的时候主机会查看自己的arp缓存表 表里没有的时候 发送arp请求 这里注意:主机发送的ARP请求包里面的 发送者mac 是全0
然后路由器收到之后会转发广播 这里注意:主机发送的ARP请求包里面的 发送者mac 是全F
ARP应答(reply)报文:网关将自己的mac地址回复给主机 下图是PC的Etherne 0/0/1 接口下抓的包
ICMP请求(request)报文 :主机请求网关的mac地址 下图是PC的Etherne 0/0/1 接口下抓的包
ICMP请求(request)报文 :主机请求网关的mac地址 下图是PC的Etherne 0/0/1 接口下抓的包
** 获得总结: 1、如果主机的源ip和目的ip不是同一个网段,又没有配置网关的情况下,主机不会发送arp请求报文(不会直接去发送请求目的ip的mac地址) 2、如果主机的源ip和目的ip是同一个网段,那么主机直接请求目的ip的mac地址 3、如果主机的源ip和目的ip不是同一个网段,配置了网关的情况下,主机会发送arp请求报文,去请求网关的mac地址**
在192.168.0.1------192.168.3.1 通信的这个过程中 首先由PC2 发送arp请求 获取到192.168.0.2的mac (网关mac) 然后PC2封装ICMP 向AR1发送icmp请求包 PC2--------AR1 源mac:pc2主机的mac 目的mac:AR1 g0/0/1口的mac (网关mac)源ip:本身0.2 目的ip:3.1 AR1收到目的mac是自己的去掉链路层 看到目的ip:192.168.3.1 直连 下一条是192.168.1.2 AR1发送arp请求 获取192.168.1.2的mac地址 AR1--------AR2 源mac:AR1 g0/0/0口的mac 目的mac:AR2 g0/0/0的mac (是AR1查路由表之后,发出arp后获得的)0.2 目的ip:3.1 AR2--------AR1 AR2收到目的mac是自己的去掉链路层,目的ip 3.1 对应接口是loopback (在华为模拟器的mac地址表中没有192.168.3.1所对应的mac地址,但是eve思科的设备中有192.168.3.1和192.168.1.2的mac是相同的 out:专门整理一个关于loopback的) AR1--------PC2 后面两个就是两个广播域之间查mac表 然后解封和重新封装的过程
ps:mac地址的作用只限制在一个广播域内 mac地址表的形成:会将arp报文中的源mac地址 和接收到此报文的接口做映射 形成mac条目 存入到自己的mac地址表中
前面废话太多可以忽略
仅供参考
1、PC2 发送 arp请求获取网关mac(reques/reply) icmp封装后发送给AR1(reques) 2、AR2收到去掉二层,查看到目的ip不是自己的,查看路由表,发现有去往目的网段的路由,于是arp请求到下一跳ip对应的mac地址(reques/reply) icmp封装后发送给AR2(reques) 3、AR2收到去掉二层,查看到目的ip是自己本身的一个loopback口的ip,并且是ping包,于是进行回应icmp,并且有对应的mac条目,封装后发送给AR1(reply) 4、AR1收到去掉二层,查看到目的ip不是自己的,查看路由表,发现有去往目的网段的路由,并且有对应的mac条目,直接封装好发送给PC2
OK 结束 下面两个过程,可以简单看一下mac地址的变化
1、PC2----------AR1 下图是PC的Etherne 0/0/1 接口下抓的包
2、 AR1----------AR2 下图是AR1 的G 0/0/0 接口下抓的包
AR1的路由表 以及它的mac地址表
AR2的路由表 以及它的mac地址表