Ping这个常用命令大家都会用的,最主要的就是检测目标主机是不是可连通
Ping程序实际就是发送一个ICMP回显请求报文给目的主机,并等待回显的ICMP应答。然后输出回显的报文。Ping不通一个地址,并不一定表示这个IP不存在或者没有连接在网络上,因为对方主机可能做了限制,比如安装了防火墙,因此Ping不通并不表示不能使用FTP或者TELNET连接。
PING得到的结果包括字节数、反应时间、以及生存时间。Ping程序通过在ICMP报文数据中存放发送请求的时间来计算返回时间。当应答返回时,根据现在时间减去报文中存放的发送时间就得到反应时间了。生存时间(TTL),本来就存放在IP数据报的头部,直接就能够获取。
有说法是利用ping得到的TTL值来判断主机类型,这种办法可以大概地用来判断。有人问为什么一般得到的都不是标准的TTL值,这个就是因为ICMP数据包走的路由器线路的原因。不过并不一定每次测试路由器走的路线都一样,所以,这个判断目标主机类型还是个大概值,而且主机的默认TTL值是可以改变的。
这里我测试的ttl值分别是128和64,同一个局域网没有经过路由。
下面是一些主机的默认TTL值:
LINUX Kernel 2.2.x & 2.4.x ICMP 回显应答的 TTL 字段值为 64 LINUX Kernel 2.6.x ICMP 回显应答的 TTL 字段值为 47 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/ME 的ICMP回显应答的 TTL 字段值为 32 Windows NT/2000/XP/2003/vista/2008/2012/2016/2019/7/8/10等 ICMP 回显应答的 TTL 字段值为 128
ping参数
-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名。
从上面就可以知道IP为223.5.5.5的计算机NetBios名为public1.alidns.com。
-n count Number of echo requests to send.
发送count指定的Echo数据包数。
在默认情况下,一般都只发送四个数据包,通过这个命令可以自己定义发送的个数,对衡量网络速度很有帮助,比如我想测试发送50个数据包的返回的平均时间为多少,最快时间为多少,最慢时间为多少就可以通过以下获知: ping -n 50 223.5.5.5
-l size Send buffer size.
定义echo数据包大小。
在默认的情况下windows的ping发送的数据包大小为32byte,我们也可以自己定义它的大小,但有一个大小的限制,就是最大只能发送65500byte,也许有人会问为什么要限制到65500byte。因为Windows系列的系统都有一个安全漏洞(也许还包括其他系统)就是当向对方一次发送的数据包大于或等于65532时,对方就很有可能挡机,所以微软公司为了解决这一安全漏洞于是限制了ping的数据包大小。虽然微软公司已经做了此限制,但这个参数配合其他参数以后危害依然非常强大,比如我们就可以通过配合-t参数来实现一个带有攻击性的命令 。
-f Set Don<|>t Fragment flag in packet.
在数据包中发送“不要分段”标志。在一般你所发送的数据包都会通过路由分段再发送给对方,加上此参数以后路由就不会再分段处理。
-i TTL Time To Live.
指定TTL值在对方的系统里停留的时间。此参数同样是帮助你检查网络运转情况的。
-v TOS Type Of Service.
将“服务类型”字段设置为 tos 指定的值。
-w timeout Timeout in milliseconds to wait for each reply.
指定超时间隔,单位为毫秒。此参数没有什么其他技巧。
Ping命令大概常用的几个参数就这些。