今天在访问一个网站的时候,我想看看它的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模块就产生一个“端口不可到达”的错误,这样就能判断是否是到达目的地了。