ping 命令的用法Ping
��Ping是个使用频率极高的实用程序,用于确定本地主机是否能与另一台主机交换(发送与接收)数据报。根据返回的信息,你就可以推断TCP/IP参数是否设置得正确以及运行是否正常。需要注意的是:成功地与另一台主机进行一次或两次数据报交换并不表示TCP/IP配置就是正确的,你必须执行大量的本地主机与远程主机的数据报交换,才能确信TCP/IP的正确性。
��简单的说,Ping就是一个测试程序,如果Ping运行正确,你大体上就可以排除网络访问层、网卡、MODEM的输入输出线路、电缆和路由器等存在的故障,从而减小了问题的范围。但由于可以自定义所发数据报的大小及无休止的高速发送,Ping也被某些别有用心的人作为DDOS(拒绝服务攻击)的工具,前段时间Yahoo就是被黑客利用数百台可以高速接入互联网的电脑连续发送大量Ping数据报而瘫痪的。
��按照缺省设置,Windows上运行的Ping命令发送4个ICMP(网间控制报文协议)回送请求,每个32字节数据,如果一切正常,你应能得到4个回送应答。
��Ping能够以毫秒为单位显示发送回送请求到返回回送应答之间的时间量。如果应答时间短,表示数据报不必通过太多的路由器或网络连接速度比较快。Ping还能显示TTL(Time To Live存在时间)值,你可以通过TTL值推算一下数据包已经通过了多少个路由器:源地点TTL起始值(就是比返回TTL略大的一个2的乘方数)-返回时TTL值。例如,返回TTL值为119,那么可以推算数据报离开源地址的TTL起始值为128,而源地点到目标地点要通过9个路由器网段(128-119);如果返回TTL值为246,TTL起始值就是256,源地点到目标地点要通过9个路由器网段。
通过Ping检测网络故障的典型次序
��正常情况下,当你使用Ping命令来查找问题所在或检验网络运行情况时,你需要使用许多Ping命令,如果所有都运行正确,你就可以相信基本的连通性和配置参数没有问题;如果某些Ping命令出现运行故障,它也可以指明到何处去查找问题。下面就给出一个典型的检测次序及对应的可能故障:
ping 127.0.0.1--这个Ping命令被送到本地计算机的IP软件,该命令永不退出该计算机。如果没有做到这一点,就表示TCP/IP的安装或运行存在某些最基本的问题。
ping 本机IP--这个命令被送到你计算机所配置的IP地址,你的计算机始终都应该对该Ping命令作出应答,如果没有,则表示本地配置或安装存在问题。出现此问题时,局域网用户请断开网络电缆,然后重新发送该命令。如果网线断开后本命令正确,则表示另一台计算机可能配置了相同的IP地址。
ping 局域网内其他IP--这个命令应该离开你的计算机,经过网卡及网络电缆到达其他计算机,再返回。收到回送应答表明本地网络中的网卡和载体运行正确。但如果收到0个回送应答,那么表示子网掩码(进行子网分割时,将IP地址的网络部分与主机部分分开的代码)不正确或网卡配置错误或电缆系统有问题。
ping 网关IP--这个命令如果应答正确,表示局域网中的网关路由器正在运行并能够作出应答。
ping 远程IP--如果收到4个应答,表示成功的使用了缺省网关。对于拨号上网用户则表示能够成功的访问Internet(但不排除ISP的DNS会有问题)。
ping localhost--localhost是个作系统的网络保留名,它是127.0.0.1的别名,每太计算机都应该能够将该名字转换成该地址。如果没有做到这一带内,则表示主机文件(/Windows/host)中存在问题。
ping
www.yahoo.com--对这个域名执行Pin ... 地址,通常是通过DNS 服务器 如果这里出现故障,则表示DNS服务器的IP地址配置不正确或DNS服务器有故障(对于拨号上网用户,某些ISP已经不需要设置DNS服务器了)。顺便说一句:你也可以利用该命令实现域名对IP地址的转换功能。
��如果上面所列出的所有Ping命令都能正常运行,那么你对你的计算机进行本地和远程通信的功能基本上就可以放心了。但是,这些命令的成功并不表示你所有的网络配置都没有问题,例如,某些子网掩码错误就可能无法用这些方法检测到。
Ping命令的常用参数选项
ping IP -t--连续对IP地址执行Ping命令,直到被用户以Ctrl+C中断。
ping IP -l 2000--指定Ping命令中的数据长度为2000字节,而不是缺省的32字节。
ping IP -n--执行特定次数的Ping命令。
Netstat ��Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
如果你的计算机有时候接受到的数据报会导致出错数据删除或故障,你不必感到奇怪,TCP/IP可以容许这些类型的错误,并能够自动重发数据报。但如果累计的出错情况数目占到所接收的IP数据报相当大的百分比,或者它的数目正迅速增加,那么你就应该使用Netstat查一查为什么会出现这些情况了。
---------------------
ping的几个常见用法
用了这么久的ping命令,这是我第一次把相关的经验总结写出来,希望大家喜欢。
先来说说ping的工作原理:
ping的过程实际上就是一个发送icmp echo请求的过程,发送该数据包到被ping 的一方,要求对方响应并回答该数据包,对方收到后,当然就老老实实地答复你了,也许大家奇怪,为什么从ping的结果中会得到ip地址,这是因为,对方做出的icmp响应并不能简单地用icmp进行封包就进行传输,而是要经过ip协议进行封装并传输的,学过tcp/ip的人都知道,在ip协议对数据包进行封装的时候,会自动将目的地址和源地址写进包头,这样一来,在回应的信息中我们就可以看到对方的ip地址了 。
一个ping的返回结果:
c:\>ping python
pinging python [192.168.0.2] with 32 bytes of data:
reply from 192.168.0.2: bytes=32 time<10ms ttl=255
reply from 192.168.0.2: bytes=32 time<10ms ttl=255
reply from 192.168.0.2: bytes=32 time<10ms ttl=255
reply from 192.168.0.2: bytes=32 time<10ms ttl=255
ping statistics for 192.168.0.2:
packets: sent = 4, received = 4, lost = 0 (0% loss),
approximate round trip times in milli-seconds:
minimum = 0ms, maximum = 0ms, average = 0ms
从上面这个结果中我们除了获得ip地址,还可以获得ttl(time to life,生命周期),ttl是每经过一个路由器就会被减一的一个值,通过ttl的值我们可以简单地判断对方的操作系统和经过的路由器的个数。
默认情况下ttl=128为windows,而ttl=255为unix
接下来看一下ping的几个参数(这里针对几个比较有用的讲一讲):
options:
-t 加上该参数,就是不断地ping对方,直到按ctrl+c结束
-a 这个参数是解析主机名到ip地址,如下例:
c:\>ping -a 192.168.0.2 -n 1
pinging python [192.168.0.2] with 32 bytes of data:
reply from 192.168.0.2: bytes=32 time<10ms ttl=255
ping statistics for 192.168.0.2:
packets: sent = 1, received = 1, lost = 0 (0% loss),
approximate round trip times in milli-seconds:
minimum = 0ms, maximum = 0ms, average = 0ms
注意看这一行“pinging python [192.168.0.2] with 32 bytes of data:”得到主机名python
注意:这个参数只有在局域网内才起作用的
-n count 这个参数可以定制数据echo请求数据包的发送个数,例如上面,我使用-n 1
-l size 该参数定制发送数据包的大小,windows中最大为65500,命令格式:ping ip -l 65500
默认发送的数据包大小为32bytes
-f 在网络上传输数据的时候,当数据包的大小超过网络的允许大小的时候,就要进行分段, 然而,该参数的作用就是不允许发送的数据包分段。建议不要使用这个,因为,如果不了 解网络对数据包大小的要求的话,设置该位可能会导致数据无法传输,下面两个结果大家 可以比较一下:
例1:
c:\>ping 192.168.0.1 -l 64 -n 1 -f
pinging 192.168.0.1 with 64 bytes of data:
reply from 192.168.0.1: bytes=64 time<10ms ttl=128
ping statistics for 192.168.0.1:
packets: sent = 1, received = 1, lost = 0 (0% loss),
approximate round trip times in milli-seconds:
minimum = 0ms, maximum = 0ms, average = 0ms
例2:
c:\>ping 192.168.0.1 -l 1500 -n 1 -f
pinging 192.168.0.1 with 1500 bytes of data:
packet needs to be fragmented but df set.(这句话的意思就是,网络要求分段,而该数据中的分段位又被 设置为不允许分段,这就导致数据无法传送)
ping statistics for 192.168.0.1:
packets: sent = 1, received = 0, lost = 1 (100% loss),
approximate round trip times in milli-seconds:
minimum = 0ms, maximum = 0ms, average = 0ms
大家有兴趣可以试试,这样多试几次可以试出在你的网络中数据包每段大概被分为多大(不过很辛苦哦)。
-i ttl 这是用来设置生命周期(ttl)的,没什么好说的吧,如果不懂的再问吧
-v tos 设置tos(服务类型)的,对此不多阐述,因为关于tos虽然见的不多,但是,其实是有很 多东西值得讲的,如果多说就说不完了,而且也不好叙述,所以大家看一下相关书籍了解 一下,关于这方面有不懂的再提问吧。
-r count 这个参数很有意思,有点类似tracert了,作用就是记录经过的路由器,拿个例子来:
c:\>ping 192.168.0.1 -r 1 -n 1
pinging 192.168.0.1 with 32 bytes of data:
reply from 192.168.0.1: bytes=32 time<10ms ttl=128
route: 192.168.0.1
ping statistics for 192.168.0.1:
packets: sent = 1, received = 1, lost = 0 (0% loss),
approximate round trip times in milli-seconds:
minimum = 0ms, maximum = 0ms, average = 0ms
注意这一行“route: 192.168.0.1”这就是经过的路由器,因为我这里只有两台计算机,没有路由器,所以记录下来的就是默认路由了(也就是被ping主机本身)。大家可以这样做:ping
http://www.sina.com.cn -r 9
会记录经过的9部路由器的地址哦 ……
注意:-r参数后面的值最小为1,最大为9,也就是说,最多只能记录9台(这就不如tracert命令了)。
-w timeout 这个就是用来设置超时的。
c:\>ping 192.168.0.1 -w 1 -n 1
pinging 192.168.0.1 with 32 bytes of data:
reply from 192.168.0.1: bytes=32 time<10ms ttl=128
ping statistics for 192.168.0.1:
packets: sent = 1, received = 1, lost = 0 (0% loss),
approximate round trip times in milli-seconds:
minimum = 0ms, maximum = 0ms, average = 0ms
这个没有什么好说的吧,如果感觉线路不怎么样,传输速度比较慢,那么,把这个值设置得大一些。
注意:该值后面的timeout的单位是毫秒(ms)
死亡之ping (ping of death)
1. 由于在早期的阶段,路由器对包的最大尺寸都有限制,许多操作系统对TCP/IP栈的实现在ICMP包上都是规定64KB,并且在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区,当产生畸形的,声称自己的尺寸超过ICMP上限的包也就是加载的尺寸超过64K上限时,就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使接受方当机。
防范措施:
现在所有的标准TCP/IP实现都已实现对付超大尺寸的包,并且大多数防火墙能够自动过滤这些攻击,包括:从windows98之后的windows,NT(service pack 3之后),linux、Solaris、和Mac OS都具有抵抗一般ping of death攻击的能力。此外,对防火墙进行配置,阻断ICMP以及任何未知协议,都能防止此类攻击。
死亡之ping 下载
http://cqhk.14023.com/Soft/hktools/gjgj/200503/450.html