icmp的目的主机不可达消息为什么由其他非网关的ip发出?

看到网上有这样的问题,ping后发现不通的目的主机不可达怎么是由另一个ip发出?今天抓包探究一下。

首先,目的不可达消息属于icmp消息,属于ip层之上的消息,用来完成差错控制和测试。当ping命令发出后,消息到达对应网关设备,网关去查询arp映射表,当没有查到对应arp映射时,会发出arp查询消息,查询对应ip的mac地址,当查询失败时,网关会生成一个icmp的host unreachable消息发给源主机。发给源主机的过程,就是查询路由表的过程,由正常的回程路由接口的ip发出icmp消息。

下面我们去ping,源主机192.168.205.201,目的主机172.16.74.201。

不通这个是由192.168.206.11回复的无法访问目标主机。

查看抓包:

在172.16.74.201同网段的设备上抓包,发现arp每秒一个,发出了12次查询172.16.74.201mac地址的二层广播消息。见下图:

在目的ip的同网段设备上tcpdump抓包如图:

已知192.168.206.11是一个交换机,登录上去查看mac地址

查看其ip地址,其接口地址有192.168.206.11这个,确定是这个交换机设备发出icmp消息。

查看这个172.16.74.0/24网络下面正常能ping通的设备的路由设置:

确定是这个交换机发出的arp广播消息。

查看其路由

当这个交换机要给192.168.205.201回icmp的destination host unreachable消息时,首先查看路由的,没有找到直连路由,去查默认路由,就是0.0.0.0/0那条,走下一跳是192.168.206.1出去,递归查询192.168.206.1的路由,发现符合第三条192.168.206.0/24这条路由,出口是192.168.206.11,而192.168.206.11是自身的ip地址(图上192.168.206.11/32那条),所以用这个ip发出消息。查看192.2168.206.1的mac地址如下:

下图是目的ip的网关的mac地址:

 

有映射关系,所以直接组包发出。

镜像交换机的对应接口的包如下:

发现交换机发出icmp是源接口192.168.206.11,ttl是64,mac地址如下图:

192.168.206.11  C850.E966.A9D3;192.168.206.1   C850.E967.FA0C

查看pc192.168.205.201的上级交换机的路由关系:

总结:

  1. ping显示主机不可达是目的网关没有查询到对应主机的mac地址,要么目的主机未开机,未接线或者其他原因,arp没有到达目的主机。
  2. icmp差错消息由目的网关发出,发出时查询路由表,源ip采用查询到自身网口的ip发出。
  3. 网关查询目的mac地址时,需要发出arp查询消息,一般每秒发出一个,发三次arp广播查询消息。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值