引言:我们每天都在使用Ping命令,但是我们可能不太清楚Ping的工作原理,对运行结果中的很多细节也不是很清楚。查找了一下资料,现在和大家分享一下Ping的运行原理和相关细节。
A.Ping命令的工作原理
Ping命令主要用于测试本地主机与远程主机之间的连通性。Ping命令会向远程主机发送ICMP回应请求数据报(echo request),远程主机收到后回应应答数据报(echo reply)。本地主机会计算从发送回应请求数据报到回应应答数据报返回之间的时间,从而确定本地主机与远程主机之间是否正常连接,以及网络状况如何。
B.Ping结果的意义
对于Ping命令的运行结果,我们主要关注的是数据报返回时间,丢包率,从这两个因素上也就可以大致判断出网络是否稳定。当然这里的网络包括本地网络以及数据报所经过的路由结点的网络。比如数据报返回时间波动很大,就说明网络不稳定。Ping得到的数据报返回时间在150到350之间都算正常,基本不会影响网站访问速度。而丢包率可以直接反映本地主机到服务器的网络连接状况不是很好,具体哪些结点出问题,我们可以再通过Tracert命令来查询。
C.如何计算本地主机到目标主机所经过的路由数?
默认情况下,Ping命令会发送4个请求数据报,每个包含32字节数据。如果一切正常,将会得到4个回应数据报的返回。Ping命令以ms为单位显示时间,同时显示TTL(Time To Live)。我们可以通过TTL值来推算数据报经过了多少个路由器,计算方法为:源地点TTL起始值-返回时TTL值。源地点TTL起始值是一个比返回TTL略大的一个2的乘方。如果返回值为119,那么TTL起始值即为2的7次方——128,从而这个数据报从源地点到目标地点经过了9个路由器网段。如果返回TTL值为246,那么TTL的起始值为256,从而这个数据报从源地点到目标地点经过了10个路由器网段。
E.Ping攻击
值得一提的是,由于Ping命令可以自定义发送数据报的大小以及可以无休止的告诉发送,某些别有用心的人会利用Ping命令作为DDoS的工具, 如利用数百台接入Internet的电脑/肉鸡连续发送大量Ping命令数据库而使得某些大型网站瘫痪(Ping攻击)。
F.Ping命令常用参数说明
-n [count] 决定发送回应请求的次数。默认值是4。
-l size 决定发送请求数据包的大小。默认是32字节。
-t 不间断发送请求数据包,直到按Ctrl+C终止。