最近开始学习HUC里面前辈们的教程,开始接触几个比较简单的命令,虽简但是要精通,所以我查阅了各种资料,逐步了解了ping命令。今天也跟大家分享一下,也请前辈们看一下有哪些地方不妥
ping命令只有在安装了TCP/IP协议情况下才可以使用。
大多数情况下,ping命令都是用来诊断网络的,但我百科了一下,其名称为因特网包探索器,(Packet Internet Groper)具体用法是:ping空格IP地址。而使用的环境则是DOS环境,如果要了解ping命令的其他用法,可以通过“ping/?"来打开提示。
ping后接的ip常有4种:
一、ping本机的ip地址(若不知道本机IP,可以通过ipconfig命令查看,网关地址,dns地址也一样),如果显示Request timed out,则表明本机的网卡安装、配置错误或则是网线工作出错,大多数情况是网线原因,可能是网线断裂或是没接好,排除网线问题后,再检查网卡就可以啦。
二、ping环回地址127.0.0.1(用于将本机发出的目的地是本机的报文通过环回地址送回给本机上层协议),如果ping后回复正常,则表示本机TCP/IP协议工作正常,若回复”出现临时故障“等其他的字句,则表示TCP/IP协议配置出错,但此时电脑可能还可以正常访问网络,那么可以略过,如果不可以访问网络,则需检查TCP/IP协议配置。
三、ping内网网关地址,如果回复不正常,路由器没有响应,就必须检查路由器设置和配置网关路由器啦,如果是连接别人的路由器,可能是别人的路由器配置错误,也可能是路由器管理员封杀了本机连接。
四、ping远程服务器(IP和域名),如果恢复正常,则表明本机可以访问互联网,如果出现响应超时”requesttimeout“则表明无法连接目标,可能是目标服务器本身的问题,也可能是本机的问题,我们可以ping另一个远程服务器,这样就可以确定本机是否可以访问互联网。但是,有时候ping远程IP显示正常,但是ping远程域名却失败,则可能是dns配置出错,导致域名无法正常解析,我们可以到TCP/IP协议属性界面(网络连接>属性>常规/安全>TCP/IP协议>属性)重新配置dns,也可以用netsh命令设置。
但是,有时网络一切正常,却不可以ping某个IP,有几个原因:1.其IP不存在或与互联网断开;2.对方服务器拒绝Ping入;3.对方服务器拒绝Ping出(他接受了数据但是不返还给我们自己)。
Ping命令主要参数有:
-t 设置Ping不断向指定的计算机发送报文,按【Ctrl】+【Break】可以查看统计信息或继续运行,直到用户按【Ctrl】+【C】键中断;
-a 用来将IP地址解析为计算机名;
-f 告诉Ping不要将报文分段(如果用一l设置了一个分段的值,则信息就不发送,并显关于DF[Don‘t Fragment]标志的信息);
-n 指定Ping发送请求的测试包的个数,缺省值为4;
-l size 发送由size指定数据大小的回应网络包;
-i 指定有效时间(TTL)(可取的值为1到255);
-v 使用户可以改变IP数据报中服务的类型(TOS:Type ofservice);
-r 己录请求和回答的路由。最小 1个主机,最多9个主机可以被记录;
-s 提供转接次数的时间信息,次数由count的值决定;
-j 以最多9个主机名指定非严格的源路由主机(非严格源路由主机是指在主机间可以有中间的路由器),注意j和一k选项是互斥的;
-k 以最多9个主机名指定严格的源路由主机(严格源路由主机是指在主机间不可以有中间的路由器);
-w 使用户可以指定回答的超时值,以毫秒为单位:
destination小st指定Ping的目标,可以是主机名或IP地址。
-4 强制使用ipv4协议
-6 强制使用ipv6协议
!!!ping命令在默认的情况下windows的ping发送的数据包大小为32byte,我们也可以自己定义它的大小,从上面的ping -l参数,如ping-l 400 www.google.cn,但有一个大小的限制,就是最大只能发送65500byte,因为windows或是其他系统存在一个漏洞,就是当向对方一次发送的数据包大于或等于65532时,对方就很有可能死机,因此微软就把最大值设置成65500byte。但是,如果我们要使一个服务器崩溃,我们可以对其发动一次总攻,利用大规模的用户机(可以上数百只),加上ping -t 和-l 65500参数,使其服务瘫痪!!!
使用ping -a参数我们可以反查IP地址的netbios名,我试了一下:
C:\Users\Administrator>ping -a www.baidu.com
正在 Ping www.a.shifen.com[/url] [180.97.33.108] 具有 32 字节的数据:
来自 180.97.33.108 的回复: 字节=32 时间=174ms TTL=56
来自 180.97.33.108 的回复: 字节=32 时间=180ms TTL=56
来自 180.97.33.108 的回复: 字节=32 时间=174ms TTL=56
来自 180.97.33.108 的回复: 字节=32 时间=180ms TTL=56
180.97.33.108 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 174ms,最长 = 180ms,平均 = 177ms
此次测的[url]www.baidu.com的netbios名为www.a.shifen.com,IP为180.97.33.108
一开始我也很奇怪,后面的ttl是什么,后来一查,长见识啦。TTL(time to life),可以理解为是数据包的生命吧,是数据包为了防止数据包在网络中无限制的循环,而设定的网络数据包在网络传输中最大的转发次数,因为每转发一次在路由器,就会转向下一跳,所以,又通常称为最大跳数。如果不给他加以限制,那么,一旦数据包传到网络上,它找不到目标IP,无法被接收,他就会在网络上的路由器间无限循环,这样极大的造成了网络资源的浪费(只是一个数据包就这样,那要是上亿个呢?>_<)当数据包传送到一个路由器之后,TTL就自动减1,如果减到0了还是没有传送到目的主机,那么就自动丢失。如果我们定义了ttl为64,当数据被传送了64次后,他就自尽啦,有点像细胞凋亡。
哈哈,但是每一种系统的默认ttl却是不同的喔,这就表示,我们可以通过对方ping出的ttl值判断对方的系统啦。虽然可以改变默认ttl值,但是很少人会这么做。如下便是我复制来的ttl对应系统类型:
===============以下为复制内容======================
UNIX 及类 UNIX 操作系统 ICMP 回显应答的 TTL 字段值为 255
Compaq Tru64 5.0 ICMP 回显应答的 TTL 字段值为 64
微软 Windows NT/2K操作系统 ICMP 回显应答的 TTL 字段值为 128
微软 Windows 95 操作系统 ICMP 回显应答的 TTL 字段值为 32
当然,返回的TTL值是相同的
默认情况下,Linux系统的TTL值为64或255,Windows NT/2000/XP系统的TTL值为128,Windows 98系统的TTL值为32,UNIX主机的TTL值为255。
但有些情况下有所特殊
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 NT4 WRKS
Windows NT4 Server
Windows 2000
ICMP 回显应答的 TTL 字段值为 128
这样,我们就可以通过这种方法来辨别操作系统
TTL
LINUX 64
WIN2K/NT 128
WINDOWS 系列 32
UNIX 系列 255
===========以上为复制内容===================
但是,有时候ttl也会引起我们误判,如果返回值为62,我们会判断其为Linux系统数据经过两次传送到达本机,但也可能其是初始值为128的winxp服务器经过66次传送,但后者比较少见。因此,我们在对目标进行系统信息收集的时候,要多方位收集信息。
而我们也可以把ping命令弄成一个bat可执行文件,比如专门编辑一个测试网络连接的batch,或是一个查看局域网内所有IP的batch,这样可以大大方便我们使用电脑,但是由于我对编辑bat也是刚入门,so...................
最后,复制百度百科里的好知识给我助助阵吧
==============以下为复制内容===============
".0"可以有条件省略
大家常用“ping 127.0.0.1”命令在本机上做回路测试,用来验证本机的TCP/IP协议簇是否被正确安装。但你发现了吗?使用“ping 127.1”这个命令也能得到同样的测试结果(如图),其实“ping 127.1”和“ping 127.0.0.1”这两条命令是一样的,都是在进行回路测试。为什么会这样呢?这就是Ping命令应用中IP地址的使用技巧。大家都知道,IP地址由32位二进制数字组成,为了方便大家记忆,将每8位二进制数字换算成十进制数字,因此就形成了容易记忆的由四部分十进制数字组成的IP地址(如127.0.0.1)。由于,Windows操作系统具有自动填充“.0”的功能,因此我就可将“127.0.0.1”变为“127.1”。但是,这个“.0”的省略是有条件限制的,并不能任意省略。在Ping命令的应用中,只能将在IP地址的最后一部分十进制数字前出现的一个或多个“.0”省略,如把“ping 127.0.0.1”命令改写成“ping 127.1”。如果这一个或多个 “.0”没有紧挨着最后一部分的十进制数字,而是在其他位置,则这个“.0”不能省略,如“ping 202.0.96.1”就不能写成“ping 202.96.1”。这是因为“ping 202.96.1”返回的结果是“202.96.0.1”的应答信息,而不是“202.0.96.1”的应答信息。
数字串代替IP地址
在Ping命令中,还可以使用数字串代替IP地址,你相信吗?运行“ping 3658906394”命令,你会看到“218.22.123.26”这个IP地址的返回信息。为什么会这样呢?其实,“3658906394”就是IP地址“218.22.123.26”的另一种表示形式。当然,也可按同样的方法Ping其他的IP地址。字符串是如何转换而来的呢?其实并不复杂,以“218.22.123.26”这个IP地址为例,IP地址转换成数字串方法如下:先将“218.22.123.26”转换为十六进制“DA.16.7B.1A”,然后去掉小数点后,变为“DA167B1A”,最后将这个十六进制数转换为十进制“3658906394”,那么“218.22.123.26”就变为“3658906394”了。其他IP地址转换为数字串也是使用同样的方法。提示:在某些局域网环境中,使用“Ping+数字串”命令可能会失败,出现提示信息“Unknown host数字串”,这是因为该数字串被解析成主机名了,而不是IP地址。因此,掌握了上述技巧后,网管在进行网络测试或维护时,可以熟练运用“省略”方式,减轻Ping命令的字符输入量,提高工作效率。同时,使用数字串代替IP地址也可迷惑好奇心强的普通用户,以免他们胡乱设置
