admin管理员组

文章数量:1635850

我们在用ping时,多数出现超时“timeout",目标非法("Destination specified is invalid"),目标不可达(”Destination is unreachable")。除了名字上的真译,具体在内层发生了什么情况呢? 

先说超时吧(timeout),这是最常见的一种失败情况。我们都知道ping令命是发送ICMP报文的,超时意思就是在我们发送了ICMP后对方没有响应,或是响应到时间超过了ICMP的定时器时限。这种情况在现实上常见有两种情况,一是对方的防火墙滤掉了,二是距离太远,对方的响应报文在到达源地址前所用时间超过了源机子的ICMP定时器(夸张一点就是我在成都ping华盛顿可能超时了~_~) 

至于目标非法与目标不可达,这两者一般都会弄胡涂。我们在发送报文时会检查目的IP,当目的IP的值为非法时就会返回目标非法的字段。如,ping 0.0.0.0或ping 255.255.255.255。有时,当我们网络受阻或网络断开,ping时也会出现“Destination specified is invalid" 

这个原因是没有获得IP或使用169的私有地址,当然是非法啦~至于如何检测目的地址是否合法,不同的操作系统有不同的检测体系,一般都大同小异,如广播地址或特殊地址等,具体的可以查看相关资料。 

而目标不可达,是指目标地址无法确定。这个是由网关返回本地PC的信息(当然不是对方机子返回的啦~)。ICMP目的不可达报文格式为:“类型”,“代码”,“校验和”,“交付众所失败的IP分组的首部和数据部分的前8个字节”还有一个“保留部分”。我们关心的代码处,分15种类型,如“0”指网络不可达,”2“指协议 不可达等。这里就不多说了哈~网上有很多相关资料的~

destination host unreachable 
目标主机不能到达 
“Destination Host Unreachable”信息说明对方主机不存在或者没有跟对方建立连接。 网线没接好,或者网卡有问题! 
检查物理连接,重启机子 一般在确定你的TCP/IP网络属性的设置正确下,检查你的网线或者网卡是不是没插好 



路由表中连到达目标的路由都没有,会出现“Destination Host Unreachable”。 
主要在以下三种情形出现: 
1、 局域网使用DHCP动态分配IP地址时,DHCP出现故障或者失败 
DHCP失效或者出现故障时,客户机无法分配到IP地址,系统只有自设IP地址,而IP地址的自动设置往往会分配到不同的子网,因此会出现“Destination Host Unreachable”。 

2、 子网掩码设置错误 
这种情况一般比较少见,如果子网掩码不是系统自动生成的,则在计算时一定细心。 

3、 路由表返回错误信息 
这种情况一般是在“Destination Host Unreachable”前面加上IP地址,说明本地计算机与外部网络连接没有问题,但与某台主机连接存在问题。 

"Destination Net Unreachable"这个信息表示对方主机不存在或者没有跟对方建立连接。这里要说明一下"destination host unreachable"和"time out"的区别,如果所经过的路由器的路由表中具有到达目标的路由,而目标因为其它原因不可到达,这时候会出现"time out",如果路由表中连到达目标的路由都没有,那就会出现"destination host unreachable"。 

把icmp安全策略关闭 
tcp/IP属性——高级——选项——IP安全机制属性——选择"不使用IPSEC"确定,OK了,一切正常 

ping 时出request time out 和destination is unreachable 

request time out 是指icmp包发出后,长时间没有回应,所以会产生request time out。一般是ping 了一台网络中不存在的主机。 
destination is unreachable 或 destination port unreachable 一般是收到了目标主机或中间路由器回应的端口或目标主机不可达icmp包。 
如你ping一台用iptables封了icmp包的主机且用了-j REJECT 就会出现destination port unreachable 的信息,这是目标主机给的回应。 
两者主要的区别是看目标主机或中间路由器是不是给了icmp不可达的回应。 向目标主机发ip数据报,如果协议项是错的,或协议项不可用。目标将返回destination is unreachable的icmp报文。如果有防火墙,可能过滤掉ip数据报,收不到回应报文。如果设置ip头部协议内容为一特别大的数字(至少在今天还没有被使用),应该主机一定会返回unreachable的icmp报文。否则一定有防火墙。也可以变化ip中的协议项来探测主机使用了哪些协议,如果没使用则返回unreachable的icmp报文。

转载于:https://blog.51cto/zht880301/1214807

本文标签: HostdestinationNETUnreachable