免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1366 | 回复: 0
打印 上一主题 下一主题

第七、八章 Ping和Traceroute [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-03-29 15:43 |只看该作者 |倒序浏览

                 
PING:
ping程序是利用icmp的回复请求来探测远端主机是否可达。
(并不能继续判断端口是否可达。要想查看端口,就要使用扫描器了)
ping有一个R选项,用来记录经过的路由(ping
www.163.com
-r 5)记录经过的5个路由器。
按照分析,根据所在环境限制最多可以记录8~9个项目。
除了回显请求外,还可以利用icmp来实现时间请求。
在icmp的数据包中可以包含发送时间,目的主机收到后再附上自身当时时间才发回。
这样可以做一个时间校验,并可以判断源与目的之间的通讯速度。
一般用ping的时候只是用了它的最简单的功能:检查主机能不能连到。
其实使用它所提供的其他选项,可以实现许多细节上的控制,例如数据包长度,TTL,路由记录,宽/严路由经过路由等。
============================================
TRACETROUTE:
也就是 trace route,跟踪路由。
主要的原理是IP路由过程中对数据包TTL(Time to Live,存活时间)的处理。
当路由器收到一个IP包时,会修改IP包的TTL(及由此造成的头部检验和checksum变化)。
每收到一个包,检查这个的TTL是否是0或1。如果是,表明这个包还没有到达目的地,而且剩余时间不多了,肯定是到不了目的地了。这样路由器就简单地丢弃这个包,并给源主机发送 ICMP通知,说这个包已经超时了。
ICMP的通知信息里包含当前路由器发送时所用的IP。
根据上述原理,就可以通过构造数据包,来间接检查到达一个主机时经过了哪些路由。
一开始发送一个TTL为1的包,这样到达第一个路由器的时候就已经超时了,第一个路由器就发通知说包超时,这样就可以记录下所经过的第一个路由器的IP。
然后TTL加1,安全通过第一个路由器,而第二个路由器的的处理与第一个相同,丢包,发通知说包超时了,这样记录下第二个路由器IP。
由此可以一直进行下去,直到这个数据包到达目标主机,由此打印出所有经过的路由器。
在通信中,IP层只负责数据的路由与传输,并不处理数据包的内容。
例如ICMP,或TCP,UDP,这些协议是依赖IP层的传输功能来传送数据的。
在通信双方的主机中,收到这些协议的数据包后,一般在通信的对应主机上,会有程序来处理这些数据。
而直接的IP数据报是没有用处的。
因此traceroute程序发送一个UDP包来试探。
对路由器来说,UDP数据报只是IP数据报的一种,它并不关心UDP数据报的具体内容。
直到这个包到达目的端的主机,目的主机的内核会解析UDP数据报,并查找数据报中要求端口是否已经有进程在使用。
如果找到,则通知进程有数据到达。而如果找不到,则发送一个“目的端口不可达”的ICMP错误数据回到源主机。
这样就可以完全确定下来:trcertroute建立一个UDP数据包,不断修改TTL值并发送出去。
如果收到“超时错”,表示刚刚到达的是路由器,而如果收到的是“端口不可达”错误,表示刚刚到达的就是目的主机。这样路由跟踪完成,程序结束。
============================================
注:这篇文章我参考了jlbnet的Blog。原文
http://dev.csdn.net/article/65/article/38/38293.shtm
TO BE CONTINUED
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/5531/showart_18306.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP