为什么ping不通某网站,但是却可以访问该网站?

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013078669/article/details/48437559

   今天在访问一个网站的时候,我想看看它的ip是多少,就在windows  命令行下去ping了下该网站;ip地址是解析出来了,但是却发现请求超时,没有ping  通,当时我就很困惑。然后我又tracert  该 ip   跟踪了一下  想看看到底什么问题,最后我发现,当跟踪到该 ip的时候  请求被拒绝了。突然之间,应该是服务端 设置了相关策略 对网络层icmp  回显请求报文 进行了限制;而访问网页  用的 是 http  协议,因此会出现此现象 。

   


ping 的实质:发送一个icmp回显请求报文给目的的主机,并等待回显的icmp应答。然后打印出回显报文。

回显的结果包括:字节数  、 反应时间、TTL(生存时间)

 
Tracert 的实质:利用ICMP数据报和IP数据报头部中的TTL值。TTL(Time To Live)是一个IP数据报的生存时间,当每个IP数据报经过路由器的时候都回把TTL值减去1或者减去在路由器中停留的时间,但是大多数数据报在路由器中停留的时间都小于1秒种,因此实际上就是在TTL值减去了1。这样,TTL值就相当于一个路由器的计数器。  
当路由器接收到一个TTL为0或者1的IP数据报的时候,路由器就不再转发这个数据了,而直接丢弃,并且发送一个ICMP“超时”信息给源主机。Tracert程序的关键就是这个回显的ICMP报文的IP报头的信源地址就是这个路由器的IP地址。同时,如果到达了目的主机,我们并不能知道,于是,Tracert还同时发送一个UDP信息给目的主机,并且选择一个很大的值作为UDP的端口,使主机的任何一个应用程序都不使用这个端口。所以,当达到目的主机的时候,UDP模块就产生一个“端口不可到达”的错误,这样就能判断是否是到达目的地了。


展开阅读全文

没有更多推荐了,返回首页