在同一网段内,PING一个关机的主机的IP地址,返回的报文是谁返回的呢?

来源:百度知道 编辑:UC知道 时间:2024/09/20 22:36:13
在同一网段内,PING一个关机的主机的IP地址,DOS下显示的"time out"是根据返回的报文显示的,问题是:这个报文是谁返回的呢?如果是网关返回的,那为什么会是网关来处理?同一网段的报文不是不经过网关处理吗(是单播而不是广播)?有点想不通...
TIME OUT自动回复是什么意思? 应该收到一个ICMP差错报文才对吧.查了下资料应该是差错报文中的不可到达报文,如果是其他网段,应该是路由器发回这个报文,但是同网段的话,路由器还负责吗?

PING只是个程序,其有输入然后再输出,这是原主机收到差错报文后PING程序的一个输出显示,如果在UNIX下,就可能是XXX HOST UNREACHABLE之类的显示了,所以我想通过这个显示来看字面意思可能不对头吧?

先发arp请求包想到了,当时我以为把第二层的帧目的MAC填充成FFFFFF-FFFFFF发ICMP,不过这也不能解释路由器发回差错报文,没理由它来负责。

我想是不是ICMP还是以广播的形式发出了,这时是发送的查询ICMP,发送同时源主机会设置一个时限,时限一过,就认为是对方不可达,PING程序显示request timeout,源主机啥也没收到。我可能被差错ICMP报文搞昏头了,觉得非得收到它才行,其实在某些情况下(代码字段取值不同)才收到那些报文。

如果向其他子网的主机发ICMP,则先发给路由器,路由器转发同时也设定时限,超过后就认为是不可达,然后它向源主机发不可到达报文。

如果ping的ip地址与本机是在同一网段的话,先会去发ARP request来询问目的IP对应的目的MAC地址,如果学习不到目的MAC的话,ping的ICMP报文根本就不会发出来。你说的情况,目的主机关机而且本机没有没有特殊配置如静态ARP的话,应该是这种情况。

我不太确定主机多长时间没有收到ICMP reply报文就会认为是timeout。主机肯定不会一直等下去的。所以不会根据返回的报文显示timeout。

建议你在pc上装个ethereal,抓一下包,就都清楚了。

time out自身返回的,而发送的数据包都丢失的情况下才有此返回

楼上正解,如果是网关返回,就不会time out了