一天,笔记本的crt去telnet192.168.100.205的交换机,发现不通,去执行ping命令发现有PING: 传输失败。General failure的打印。全英文是transmit failed. General failure,可以翻译为发送失败。

ping是一个网络层的导通探查消息,过程是首先查找目的ip符合的路由,确定访问目的ip与本机ip是同一网段的直连路由还是不同 网段的默认路由,然后根据路由表二层确定下一跳的mac地址(arp缓存没有的话,同一网段,用本机ip发出arp请求目的ip的mac。失败会用本机ip显示icmp错误。非同一网段,检查是否有默认网关的mac地址,没有的话,发出网关ip的arp请求消息)。icmp层子ip层上封装icmp的探查协议request消息,封装一窜字符串,携带编号,如abcdefgh之类,编号001目的ip收到后,反向把这一串abcdefgh和编号的reply消息发回。源主机收到后,认为网络层是导通的。发出探查消息request时,启动一个等待计时器,超时没有收到,就打印time out。跨网段节点设备收到ping的request消息,发现有错误时,会用自身节点一个路由ip发出icmp层错误消息,告知源主机。

 

 

ping的常见回显有三种情况:

1.正常的导通,显示目标ip和发包经历时间。

2.回icmp错误信息,常见目标主机不可达,ttl exceeded,网络不可达等等。返回错误消息的可能是本机ip(目标ip和本机是同一网段)或者经过的节点设备的一个ip地址(目标ip和本机不是是同一网段自身网关常见一点)。

3.回显time out,这是ping的request消息发出后没有收到回的reply消息,一直到定时器超时的回显。

      这三种情况都执行了ping的过程,即查路由表,检查是否有下一跳的mac地址,没有就要发出arp请求消息,来获得。有的话,就发出ping的request消息。没有就打印错误。

     而这个错误transmit failed. General failure,显然就没有发出arp和ping的request消息。

     很奇怪,这个故障不属于以上三种情况,应该是包没有发出。应该是查路由表就失败了。

     已知笔记本的ip是192.168.211.145,担心网关不通,去ping网关192.168.211.1和同网段的192.168.211.2发现都通。

查看mac缓存,正常。

ping回环地址1270.0.1正常。

问题在哪里?同时看网卡标志没有internet标志,检查路由表。

没有默认路由,检查后发现,没配网关,添加上网关为192.168.211.1

查看路由表

然后,去ping192.168.100.205发现正常。

结论,当没有路由时,没有包发出时,会显示传输失败。

icmp是经过的节点设备发现ip包无法正常传输时,会给源ip发出一条icmp差错报文。使用的源ip是节点路由表确定的一个出口ip地址。源主机会打印一个节点ip报告的差错消息,当结果节点是本机ip,会以本机ip显示差错消息。当ping打印没有本机ip时,应该是本地路由出现问题。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐