搜索文章:

首页  |  Java技术  |  Asp.net  |  Asp编程  |  VC/C++  |  Delphi  |  VB编程

关于两个常用网络命令原理和一点说明

本文只是总结了两个常用的网络命令的实现原理和一点使用经验说明。这些东西通常都分布在各种书籍或者文章中的,我勤快那么一点点,总结一下,再加上我的一点理解和使用经验,方便大家了解。这些也是很基础的东西,没什么高深的。

ping
  这个应该大家都会用的吧,最主要的就是检测目标主机是不是可连通。ping程序实际就是发送一个icmp回显请求报文给目的主机,并等待回显的icmp应答。然后打印出回显的报文。ping不通一个地址,并不一定表示这个ip不存在或者没有连接在网络上,因为对方主机可能做了限制,比如安装了防火墙,因此ping不通并不表示不能使用ftp或者telnet连接。
  ping得到的结果包括字节数、反应时间、以及生存时间。ping程序通过在icmp报文数据中存放发送请求的时间来计算返回时间。当应答返回时,根据现在时间减去报文中存放的发送时间就得到反应时间了。生存时间(ttl),本来就存放在ip数据报的头部,直接就能够获取。
  上次和dancefire说天网防火墙的时候,现在不是天网能识别哪些程序在进行网络连接么,结果试验用ping的时候,天网就不知道了,呵呵,反正是没有警告。那icmp木马天网能防么?

tracert
  一个探测路由的程序,可以让我们看见ip数据报到达目的地经过的路由。
  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模块就产生一个“端口不可到达”的错误,这样就能判断是否是到达目的地了。

  有说法是利用ping得到的ttl值来判断主机类型,这种办法可以大概地用来判断,有人问为什么一般得到的都不是标准的ttl值。这个就是因为icmp数据包走的路由器线路的原因,所以,用ping 和 tracert 一起来用更容易判断主机类型(不过并不一定两次走的路线都一样,所以,还是个大概值,不过更接近点,而且主机的默认ttl值是可以改变的)。

c:\>ping 211.99.199.204

pinging 211.99.199.204 with 32 bytes of data:

reply from 211.99.199.204: bytes=32 time=20ms ttl=248
reply from 211.99.199.204: bytes=32 time<10ms ttl=248
reply from 211.99.199.204: bytes=32 time=10ms ttl=248
reply from 211.99.199.204: bytes=32 time=10ms ttl=248

ping statistics for 211.99.199.204:
  packets: sent = 4, received = 4, lost = 0 (0% loss),
approximate round trip times in milli-seconds:
  minimum = 0ms, maximum = 20ms, average = 10ms

c:\>tracert 211.99.199.204

tracing route to 211.99.199.204 over a maximum of 30 hops

 110 ms10 ms20 ms 211.99.57.121
 210 ms10 ms10 ms 202.96.13.1
 3<10 ms10 ms20 ms 202.96.13.62
 420 ms10 ms10 ms 210.77.139.186
 5<10 ms10 ms20 ms 210.77.139.170
 6<10 ms<10 ms10 ms 211.99.193.154
 7<10 ms10 ms<10 ms 211.99.199.204

trace complete.

c:\>

  ping得到的ttl=248,经过了7个路由器,减少了7,所以主机的ttl值是255。这样来判断吧。
  下面是一些主机的默认ttl值。

linux kernel 2.2.x & 2.4.x icmp 回显应答的 ttl 字段值为 64

freebsd 4.1, 4.0, 3.4;
sun solaris 2.5.1, 2.6, 2.7, 2.8;
openbsd 2.6, 2.7,
netbsd
hp ux 10.20
icmp 回显应答的 ttl 字段值为 255

windows 95/98/98se
windows me
icmp 回显应答的 ttl 字段值为 32

windows nt
windows 2000
icmp 回显应答的 ttl 字段值为 128

()

相关文章:
© 2006   www.java-asp.net