第一次ping直连对端IP的时候大家应该很习惯出现“.!!!!”这个现象了,
众所周知这是因为在发出ICMP报文的时候由于没有对端目的MAC,
需要先进行ARP查询,而ICMP的timeout超时时间是2秒,
大家都以为是对端没有在2秒内回复ARP查询,
我之前也是这么认为的,正好有人问了这个问题,
引发了我深入的思考:
为什么对端没有在2秒内回复ARP?真的是没有在2秒内回复才导致的这个问题吗?
于是就有了下面的这一波测试:
测试环境很简单,两台设备互联,内置直连IP,并no shutdown接口
然后ping对端接口出现“.!!!!”,同时进行抓包和debug分析
R1 e0/0 IP地址:12.1.1.1
R2 e0/0 IP地址:12.1.1.2
此时R2已经有了12.1.1.1的mac地址,先清掉ARP条目
然后开启ARP和ICMP的debug,同时开启抓包
根据debug消息可以清楚的看到ping的动作是在06:19:20.853之后执行的,
而ARP请求报文是在06:19:28.749发出的,
在发出ARP请求报文前,R2还为12.1.1.1创建了一个incomplete entry的ARP条目,
而R1的ARP回复是在06:19:28.750收到的,期间也就间隔了1微秒,
可以说是瞬间回复了,这就回答了之前的两个问题,
对端不是没有在2秒内回复,而是在2秒内就回复,
既然在2秒内回复了,那么R2应该就有了R1的MAC地址,
讲道理会发出ping包,这时我们看抓包结果
发现只有4组(8个)报文,也就是说R2第一个不通的报文根本就没有发出给R1,
为什么?
R2为什么没有发出ICMP报文给R1?不是已经学到R1的MAC地址吗?
对于这一现象,我和陈老师的讨论结果是:
R2尝试给R1发出第一个ICMP报文时,由于没有R1的MAC地址,这第一个报文其实并没有封装完成,卡在数据链路层就没了,所以第一个报文其实已经“胎死腹中”,而同时会发出ARP报文去获取R1的MAC地址,后续的4个报文由于收到ARP回应已经有了R1的MAC地址,可以直接封装发出,于是就通了!
加群交流在后台回复“加群”,添加小编微信,小编拉你进去
猜您喜欢往期精选▼Cisco私有协议—热备份路由协议HSRP详解
Cisco——HSRP实验案例一
Cisco——VRRP基础实验
Cisco策略路由PBR小案例
Cisco—DMVPN 案例配置及原理分析
思科、华为网络设备破解密码
干货分享:Cisco CCNP视频教程
cisco—RIPv1协议详解
Cisco—静态路由小实验
Cisco-路由器配置DHCP小实验
CISCO--telne小实验
Cisco-VLAN间路由:SVI+单臂路由(子接口)
思科CISCO常用命令汇总
END
更多资源尽在星球,后台回复“星球”获取优惠