从ping和ping6说起

    1、Windows中的ping, ping6: 发送ICMP ECHO_REQUEST到网络主机。ping6是ICMPv6版的ping实现。
    -t:不停地ping指定的主机,要查看统计信息并继续ping,按Ctl+Break;要停止按Ctl+C。
    -a:把地址解析成主机名(NetBios名)。

    从上面就可以知道IP为192.168.1.21的计算机NetBios名为iceblood.yofor.com。
    -n count:发送count指定的Echo数据包数。在默认情况下,一般都只发送四个数据包,通过这个命令可以自己定义发送的个数,
对衡量网络速度很有帮助,比如我想测试发送50个数据包的返回的平均时间为多少,最快时间为多少,最慢时间为多少就可以通过以
下获知:

    从以上我就可以知道在给9.125.92.231发送50个数据包的过程当中,返回了48个,其中有两个由于未知原因丢失,还显示了这
48个数据包当中返回速度最快的、最慢的,以及平均速度。
    -l size:定义echo数据包大小。在默认的情况下windows的ping发送的数据包大小为32 byte,我们也可以自己定义它的大小,
但有一个大小的限制,就是最大只能发送65500 byte,也许有人会问为什么要限制到65500 byte,因为Windows系列的系统都有一个
安全漏洞(也许还包括其他系统),就是当向对方一次发送的数据包大于或等于65532时,对方就很有可能挡机,所以微软公司为了
解决这一安全漏洞于是限制了ping的数据包大小。虽然微软公司已经做了此限制,但这个参数配合其他参数以后危害依然非常强大,
比如我们就可以通过配合-t参数来实现一个带有攻击性的命令:

    这样它就会不停的向192.168.1.21计算机发送大小为65500 byte的数据包,如果你只有一台计算机也许没有什么效果,但如果
有很多计算机那么就可以使对方完全瘫痪,我曾经就做过这样的试验,当我同时使用10台以上计算机ping一台Win2000 Pro系统的计
算机时,不到5分钟对方的网络就已经完全瘫痪,网络严重堵塞,HTTP和FTP服务完全停止,由此可见威力非同小可。
    -f:在数据包中发送“不要分段”标志。在一般你所发送的数据包都会通过路由分段再发送给对方,加上此参数以后路由就不会
再分段处理。
    -i TTL:指定TTL值在对方的系统里停留的时间。此参数同样是帮助你检查网络运转情况的。
    -v TOS:将“服务类型”字段设置为 tos 指定的值。
    -r count:记录计数跃点的路由,即在“记录路由”字段中记录传出和返回数据包的路由。在一般情况下你发送的数据包是通过一个个路由才到达对方的,但到底是经过了哪些路由呢?通过此参数就可以设定你想探测经过的路由的个数,不过限制在了9 个,也就是说你只能跟踪到9个路由,如果想探测更多,可以通过其他命令实现。下面示例为发送一个数据包,最多记录9个路由:

    从上面我就可以知道从我的计算机到202.96.105.101一共通过了202.107.208.187 ,202.107.210.214 , 61.153.112.70 , 61.153.112.89 , 202.96.105.149 , 202.96.105.97这几个路由。
    -s count:指定count个跃点数的时间戳。此参数和-r差不多,只是这个参数不记录数据包返回所经过的路由,最多也只记录4个。
    -j host-list:记录指定主机列表的松散源路由数据包。连续主机可以被中间网关分隔(路由稀疏源),IP允许的最大数量为9。
    -k host-list:记录指定主机列表的严格源路由数据包。连续主机不能被中间网关分隔(路由严格源),IP允许的最大数量为9。
    -w timeout:等待每次回复的超时间隔,单位为毫秒。此参数没有什么其他技巧。
    ping命令的其他技巧:通过ping回显的TTL值判断目标主机的系统类型是Windows还是UNIX/Linux。
    TTL是IPv4协议包头中的一个值,它告诉网络路由器包在网络中的时间是否太长而应被丢弃。有很多原因使包在一定时间内不能被传递到目的地。例如,不正确的路由表可能导致包的无限循环。一个解决方法就是在一段时间后丢弃这个包,然后给发送者一个报文,由发送者决定是否要重发。TTL的初值通常是系统缺省值,是包头中的8位的域。TTL的最初设想是确定一个时间范围,超过此时间就把包丢弃。由于每个路由器都至少要把TTL域减1,TTL通常表示包在被丢弃前最多能经过的路由器个数。当记数到0时,路由器决定丢弃该包,并发送一个ICMP报文给最初的发送者。ping和tracerouter都使用TTL值以尝试到达给定的主机或跟踪到那个主机的路由。traceroute把包的TTL值设得较小,使它在到达目的地的路上被各个路由器连续的丢弃。发出包到收到返回的ICMP报文之间的时间用来计算从一个路由器到另一个路由器的时间。
    一般不同操作系统的默认TTL值不同,因此我们通常可以通过ping回显的TTL值判断目标系统的类型,当然这是正确的,但不是TTL的功能,只是对TTL理解的一个应用。TTL的值可以修改。有些特殊的系统(如NIDS)会定义特殊的TTL值,以拒绝非法访问数据进入。我们在执行PING命令时可以用-i参数指定TTL值,以指定数据报被路由器丢弃之前允许通过的网段数量。大家可以将TTL设置为0,则该包将被立即丢弃,如ping -i 0 127.0.0.1。TTL是由发送主机设置的,以防止数据包不断在IP互联网络上永不终止地循环。转发IP数据包时,要求路由器至少将TTL减小1。
    常见操作系统的默认TTL值:
    Windows 95/98/ME系列:32
    Windows NT系列(2000/XP/7):128
    Linux系列:64
    UNIX系列:255
    详细的TTL默认值列表如下:

操作系统                            TCP传输        UDP传输
AIX                             60             30
DEC Patchworks V5             30             30
FreeBSD 2.1                     64             64
FreeBSD 3.4, 4.x                255            255
OpenBSD 2.6, 2.7                255            255
NetBSD                            255            255
HP-UX 9.0x                        30             30
HP-UX 10.01                    64            64
HP-UX 10.20                    255            255
Irix 5.3, 6.x                    60            60
UNIX                            255            255
Linux                            64            64
MacOS/MacTCP 2.0.x             60            60
OS/2 TCP/IP 3.0                64            64
OSF/1 V3.2A                     60             30
Solaris 2.x                     255         255
SunOS 4.1.3/4.1.4             60             60
Ultrix V4.1/V4.2A             60             30
VMS/Multinet                     64             64
VMS/TCPware                     60             64
VMS/Wollongong 1.1.1.1         128         30
VMS/UCX (latest rel.)         128         128
Windows 95/98/NT 3.51         32             32
Windows NT4.0/2000/XP/2003     128         128
Windows Vista/7/2008            128            128

    一般情况下Windows系列的系统返回的TTL值在100-130之间,而UNIX/Linux系列的系统返回的TTL值在240-255之间。当然这样的办法只是粗略地判断,因为TTL默认值在系统里是能被手动更改的(但是一般人不会去更改),例如,Windows系列的系统可以通过修改注册表键HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters中的DefaultTTL的值,如修改成000000ff则表示255。常用的值为255---FF,128---80,64----40,32----20。
    2、Linux中的ping和ping6: 发送ICMP协议的ECHO_REQUEST数据包给主机或网关,以获取ICMP ECHO_RESPONSE响应。ping命令主要用于确定网络和各外部主机的状态、跟踪和隔离硬件和软件问题、测试、评估和管理网络。每一个ECHO_REQUEST数据包有一个IP头和ICMP头,后跟一个timeval结构和数目不定的填充字节,以填充数据包中剩下的空间。ping6由于使用ICMPv6,因此还能发送节点信息查询(RFC4620)。
    ping命令每秒发送一个数据报并且为每个接收到的响应显示一行输出。它会计算信号往返时间和包丢失情况的统计信息,并且在完成之后显示一个简要总结。ping 命令在程序超时或当接收到SIGINT信号时结束。Host参数或者是一个有效的主机名或者是因特网地址。主要选项:
    -c count:指定发送的数据包个数。
    -f:使用洪泛ping。每一次发送 ECHO_REQUEST,都显示一个句号,而每接收到一个 ECHO_REPLY 信号,就显示一个退格。这就提供了一种对多少信息包被丢弃的信息的快速显示。如果没有设置时间间隔,则时间间隔默认为0,且响应包会尽快返回(或每秒100次,选择较快的一个)。只有超级用户可以使用这个选项。
    -i interval:设置包发送之间等待的时间间隔(秒数)。默认等待时间为1秒(在洪泛模式下则为0)。只有超级用户能设置小于0.2秒的值。
    -I:指定设备的源地址,可以是IP地址或设备名。
    -p pattern:指定多达16个填充字节去填充发送的数据包。这有利于诊断一个网络对数据依赖的问题。例如-p ff全部用1填充信息包。
    -R:记录路由。在ECHO_REQUEST包中包含RECORD_ROUTE选项,并且显示返回包中的路由缓存。注意IP头仅仅大到适合9个这样的路由。而且,许多主机和网关忽略这个选项。
    -r:信息包绕开正常的路由表以直接发送到目标主机。如果主机不在一个直接连接的网络上,将返回一个错误。这个选项的作用是可以通过一个没有路由经过的接口(用-I选项指定)来ping一台本地主机。
    -s:指定数据包的字节数大小,缺省是56,当和8字节的ICMP头合并时被转换成64字节的ICMP数据包。
    -t ttl:设置IP包的生存时间为ttl秒。
    -W timeout:设置等待回应的超时时间。
    ping的返回信息有"Request Timed Out"、"Destination Host Unreachable"和"Bad IP address",还有"Source quench received"。
    "Request Timed Out"这个信息表示对方主机可以到达到但是TIME OUT,这种情况通常是对方拒绝接收你发给它的数据包而造成数据包丢失。大多数的原因可能是对方装有防火墙或已下线,也有可能是本机的IP不正确和网关设置错误。
    (1)IP不正确:主要是IP地址设置错误或IP地址冲突,这可以利用ipconfig /all这命令来检查。在Windows下IP冲突的情况很少发生,因为系统会自动检测在网络中是否有相同的IP地址并提醒你是否设置正确。在NT中不但会出现"request time out"这提示,有时还会出现"Hardware error"这提示,这个信息比较特殊,不要被它的提示所迷惑。
    (2)网关设置错误:网关设置错误主要是网关地址设置不正确或网关没有帮你转发数据,还有就是可能远程网关失效。
    注意Windows下面对方主机联不上时(比如网络连接有故障),也会提示Request Timed Out,而在Linux下面则都是"Destination Host Unreachable"。
    "Destination Net Unreachable"这个信息表示对方主机不存在或者没有跟对方建立连接。这里要说明一下"destination host unreachable"和"time out"的区别,如果所经过的路由器的路由表中具有到达目标的路由,而目标因为其它原因不可到达,这时候会出现"time out",如果路由表中连到达目标的路由都没有,那就会出现"destination host unreachable"。
    当你在开始PING网络计算机时如果网络设备出错它返回信息会提示"destination host unreachable"。如果局域网中使用DHCP分配IP时,而碰巧DHCP失效,这时使用PING命令就会产生此错误。因为在DHCP失效时客户机无法分配到IP系统只有自设IP,它往往会设为不同子网的IP,所以会出现"Destination Host Unreachable"。另外子网掩码设置错误也会出现这错误。当然,网络线未接好,也是重要的产生原因。还有一个比较特殊就是路由返回错误信息,它一般都会在"Destination Host Unreachable"前加上IP地址说明哪个路由不能到达目标主机。这说明你的机器与外部网络连接没有问题,但与某台主机连接存在问题。如:From 192.168.148.226 icmp_seq=50 Destination Host Unreachable。
    "Bad IP address" 这个信息表示你可能没有连接到DNS服务器所以无法解析这个IP地址,也可能是IP地址不存在。"Source quench received"信息比较特殊,它出现的机率很少。它表示对方或中途的服务器繁忙无法回应。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值