现在的位置: 首页 > 综合 > 正文

ICMP&&Ping&&Tracerote

2013年06月15日 ⁄ 综合 ⁄ 共 4361字 ⁄ 字号 评论关闭

ICMP

ICMP 协议之内容

ICMP 的全称是 Internet Control Message Protocol 。从技术教度来说,ICMP 就是一个 "错误侦测与回报机制",其目的就是让我们能够检测网络的联机状况﹐也能确保联机的准确性﹐其功能主要有﹕ 

· 侦测远程主机是否存在。 

· 建立及维护路由数据。 

· 重导数据传送路径。 

· 数据流量控制。 

ICMP 在沟通之中,主要是透过不同的类别( Type )与代码( Code ) 让机器来识别不同的联机状况。常用的类别如下表所列﹕

类别

名称

代表意思

0

Echo Reply

是一个回应信息。

3

Distination Unreachable

表示目的地不可到达。

4

Source Quench

 router 负载过时﹐用来竭止来源继续发送讯息。

5

Redirect

用来重新导向路由路径。

8

Echo Request

请求响应讯息。

11

Time Exeeded for a Datagram

当资料封包在某些路由现象中逾时﹐告知来源该封包已被忽略忽略。

12

Parameter Problem on a Datagram

当一个 ICMP 封包重复着之前的错误时﹐会回复来源主机关于参数错误的讯息。

13

Timestamp Request

要求对方送出时间讯息﹐用以计算路由时间的差异﹐以满足同步性协议的要求。

14

Timestamp Replay

此讯息纯粹是响应 Timestamp Request 用的。

15

Information Request

 RARP 协议应用之前﹐此讯息是用来在开机时取得网络信息。

16

Information Reply

用以回应 Infromation Request 讯息。

17

Address Mask Request

这讯息是用来查询子网络 mask 设定信息。

18

Address Mask Reply

响应子网络 mask 查询讯息的。

 ICMP 使用中﹐不同的类别会以不同的代码来描述具体的状况。以 Type 3 ( Distination Unreachable ) 为例其下的代码如下所列﹕ 

代码

代表意思

0

Network Unreachable

1

Host Unreachable

2

Protocol Unreachable

3

Port Unreachable

4

Fragmentation Needed and DF set

5

Source Route Failed

6

Destination network unknown

7

Destination host unknown

8

Source host isolated

9

Communication with destination network administraively prohibited

10

Communication with destination host administraively prohibited

11

Network unreachable for type of service

12

host unreachable for type of service

ICMP 是个非常有用的协议﹐尤其是当我们要对网络连接状况进行判断的时候。下面让我们看看常用的 ICMP 实例,以更好了解 ICMP 的功能与作用。 

关于 PING

原理:
ping这个单词源自声纳定位,而这个程序的作用也确实如此,它利用ICMP协议包来侦测另一个主机是否可达。原理是用类型码为0ICMP发请求,受到请求的主机则用类型码为8ICMP回应。ping程序来计算间隔时间,并计算有多少个包被送达。用户就可以判断网络大致的情况。我们可以看到, ping给出来了传送的时间和TTL的数据。

PING命令详解

对于Windowsping命令相信大家已经再熟悉不过了,但是能把ping的功能发挥到最大的人却并不是很多,当然我也并不是说我可以让ping发挥最大的功能,我也只不过经常用ping这个工具,也总结了一些小经验,现在和大家分享一下。

  现在我就参照ping命令的帮助说明来给大家说说我使用ping时会用到的技巧,ping只有在安装了TCP/IP协议以后才可以使用:

ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [-j computer-list] │ [-k computer-list] [-w timeout] destination-list

Options:

-t Ping the specified host until stopped.To see statistics and continue - type Control-Break;To stop - type Control-C.

不停的ping地方主机,直到你按下Control-C

此功能没有什么特别的技巧,不过可以配合其他参数使用,将在下面提到。

-a Resolve addresses to hostnames.

解析计算机NetBios名。


示例:

C:>ping -a 192.168.1.21

Pinging iceblood.yofor.com [192.168.1.21] with 32 bytes of data:
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Ping statistics for 192.168.1.21:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms

从上面就可以知道IP192.168.1.21的计算机NetBios名为iceblood.yofor.com

-n count Number of echo requests to send.
发送count指定的Echo数据包数。

  在默认情况下,一般都只发送四个数据包,通过这个命令可以自己定义发送的个数,对衡量网络速度很有帮助,比如我想测试发送50个数据包的返回的平均时间为多少,最快时间为多少,最慢时间为多少就可以通过以下获知:

C:>ping -n 50 202.103.96.68
Pinging 202.103.96.68 with 32 bytes of data:
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Request timed out.
………………
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Ping statistics for 202.103.96.68:
Packets: Sent = 50, Received = 48, Lost = 2 (4% loss),Approximate round trip times in milli-seconds:
Minimum = 40ms, Maximum = 51ms, Average = 46ms

  从以上我就可以知道在给202.103.96.68发送50个数据包的过程当中,返回了48个,其中有两个由于未知原因丢失,这48个数据包当中返回速度最快为40ms,最慢为51ms,平均速度为46ms

-l size Send buffer size.
定义echo数据包大小。

  在默认的情况下windowsping发送的数据包大小为32byt,我们也可以自己定义它的大小,但有一个大小的限制,就是最大只能发送65500byt,也许有人会问为什么要限制到65500byt,因为Windows系列的系统都有一个安全漏洞(也许还包括其他系统)就是当向对方一次发送的数据包大于或等于65532时,对方就很有可能当机,所以微软公司为了解决这一安全漏洞于是限制了ping的数据包大小。虽然微软公司已经做了此限制,但这个参数配合其他参数以后危害依然非常强大,比如我们就可以通过配合-t参数来实现一个带有攻击性的命令:(以下介绍带有危险性,仅用于试验,请勿轻易施于别人机器上,否则后果自负)

C:>ping -l 65500 -t 192.168.1.21
Pinging 192.168.1.21 with 65500 bytes of data:
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
………………

  这样它就会不停的向192.168.1.21计算机发送大小为65500byt的数据包,如果你只有一台计算机也许没有什么效果,但如果有很多计算机那么就可以使对方完全瘫痪,我曾经就做过这样的试验,当我同时使用10台以上计算机ping一台Win2000Pro系统的计算机时,不到5分钟对方的网络就已经完全瘫痪,网络严重堵塞,HTTPFTP服务完全停止,由此可见威力非同小可。

-f Set Don't Fragment flag in packet.
在数据包中发送不要分段标志。

在一般你所发送的数据包都会通过路由分段再发送给对方,加上此参数以后路由就不会再分段处理。

-i TTL Time To Live.
指定TTL值在对方的系统里停留的时间。
此参数同样是帮助你检查网络运转情况的。


-v TOS Type Of Service.
服务类型字段设置为 tos 指定的值。

抱歉!评论已关闭.