必须掌握的ping和tracert命令详解
2010-7
必须掌握的ping和tracert命令详解
发表于: Linux, Tool s, UNIX, Windows |作者:谋万世全局者标签: Ping,tracert,命令详解
Ping
这个常用命令大家都会用的最主要的就是检测目标主机是不是可连通。 P i ng程序实际就是发送一个I CMP回显请求报文给目的主机并等待回显的I CMP应答。然后输出回显的报文。 P i ng不通一个地址并不一定表示这个IP不存在或者没有连接在网络上 因为对方主机可能做了限制 比如安装了防火墙 因此Ping不通并不表示不能使用FTP或者TELNET连接。
PING得到的结果包括字节数、反应时间、 以及生存时间。 Ping程序通过在I C MP报文数据中存放发送请求的时间来计算返回时间。当应答返回时根据现在时间减去报文中存放的发送时间就得到反应时间了。生存时间TTL 本来就存放在IP数据报的头部直接就能够获取。
Tracert
一个探测路由的程序可以让我们看见IP数据报到达目的地经过的路由。
Tracert利用ICMP数据报和IP数据报头部中的TTL值。TTLTime To Live是一个IP数据报的生存时间当每个IP数据报经过路由器的时候都回把TTL值减去1或者减去在路由器中停留的时间但是大多数数据报在路由器中停留的时间都小于1秒种 因此实际上就是在TTL值减去了1。这样 TTL值就相当于一个路由器的计数器。
当路由器接收到一个TTL为0或者1的I P数据报的时候路由器就不再转发这个数据了而直接丢弃并且发送一个I C MP “超时”信息给源主机。 Tracert程序的关键就是这个回显的ICMP报文的IP报头的信源地址就是这个路由器的IP地址。同时如果到达了目的主机我们并不能知道于是 Tracert还同时发送一个UDP信息给目的主机并且选择一个很大的值作为UDP的端口使主机的任何一个应用程序都不使用这个端口。所以当达到目的主机的时候 UDP模块就产生一个“端口不可到达”的错误这样就能判断是否是到达目的地了。
有说法是利用pi ng得到的TTL值来判断主机类型这种办法可以大概地用来判断有人问为什么一般得到的都不是标准的TTL值。这个就是因为I CMP数据包走的路由器线路的原因所以用p i n g和tracert一起来用更容易判断主机类型不过并不一定两次走的路线都一样所以还是个大概值不过更接近点而且主机的默认TTL 值是可以改变的 。
C:>ping 211.99. 199. 204
Pinging 211.99. 199. 204 with 32 bytes of data:
Reply from 211.99. 199.204: bytes=32 time=20ms TTL=248Reply from 211.99. 199.204: bytes=32 time 〈10ms TTL=248Reply from 211.99. 199.204: bytes=32 time=10ms TTL=248Reply from 211.99. 199.204: bytes=32 time=10ms TTL=248Ping statistics for 211.99. 199. 204:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss) ,
Approximate round trip times in milli-seconds:
M ini mum = 0ms, Max i mum = 20ms, Average = 10ms
C:>tracert 211.99. 199.204
Tracing route to 211.99. 199. 204 over a maximum of 30 hops 1 10 ms 10 ms 20 ms 211.99.57. 121
2 10 ms 10 ms 10 ms 202.96. 13. 1
3 〈10 ms 10 ms 20 ms 202.96. 13.62
4 20 ms 10 ms 10 ms 210.77. 139. 186
5 〈10 ms 10 ms 20 ms 210.77. 139. 170
6 〈10 ms 〈10 ms 10 ms 211.99. 193. 154
7 〈10 ms 10 ms 〈10 ms 211.99. 199.204
Trace complete.
P ing得到的TTL=248经过了7个路由器减少了7所以主机的TTL 值是255。这样来判断吧。
下面是一些主机的默认TTL值。
LINUX Kernel 2.2.x & 2.4.x ICMP回显应答的TTL字段值为64LINUX 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
I CMP回显应答的TTL字段值为255
Windows 95/98/98SE/ME的ICMP回显应答的TTL字段值为32Windows NT/2000/XP/2003/vista/2008/7
I CMP回显应答的TTL字段值为128ping和tracert命令详解ping只有在安装了TCP/IP协议以后才可以使用ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos][-r count] [-s count] [-j computer-list] | [-k computer-list][-w timeout] destination-list
Options:
-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名。
示例
C:>ping -a 192. 168. 1.21
Pinging iceblood.yofor.com [192. 168. 1.21] with 32 bytes of data:
Reply from 192. 168. 1.21: bytes=32 time<10ms TTL=254
Reply from 192. 168. 1.21: bytes=32 time<10ms TTL=254
Reply from 192. 168. 1.21: bytes=32 time<10ms TTL=254
Reply from 192. 168. 1.21: bytes=32 time<10ms TTL=254
Ping statistics for 192. 168. 1.21:
Packets: Sent =4, Received=4, Lost=0 (0%loss) ,Approximate round trip times in milli-seconds:
M ini mum = 0ms, Maxi mum = 0ms, Average = 0ms
从上面就可以知道IP为192. 168. 1.21的计算机NetBios名为iceblood.yofor.com。
-n count Number of echo requests to send.
发送count指定的Echo数据包数。
在默认情况下一般都只发送四个数据包通过这个命令可以自己定义发送的个数对衡量网络速度很有帮助 比如我想测试发送50个数据包的返回的平均时间为多少最快时间为多少最慢时间为多少就可以通过以下获知
C:>ping -n 50 202. 103.96.68
Pinging 202. 103.96.68 with 32 bytes of data:
Reply from 202. 103.96.68: bytes=32 time=50ms TTL=241
Reply from 202. 103.96.68: bytes=32 time=50ms TTL=241
Reply from 202. 103.96.68: bytes=32 time=50ms TTL=241
Request timed out.
„„„„„„
Reply from 202. 103.96.68: bytes=32 time=50ms TTL=241
Reply from 202. 103.96.68: bytes=32 time=50ms TTL=241
Ping statistics for 202. 103.96.68:
Packets: Sent = 50, Received = 48, Lost = 2 (4%loss) ,Approximate round trip times in milli-seconds:
M ini mum = 40ms, Max imum= 51ms, Average = 46ms
从以上我就可以知道在给202. 103.96.68发送50个数据包的过程当中返回了48个其中有两个由于未知原因丢失这48个数据包当中返回速度最快为40ms最慢为51ms平均速度为46ms。
-l size Send buffer size.
定义echo数据包大小。
在默认的情况下windows的ping发送的数据包大小为32byt我们也可以自己定义它的大小但有一个大小的限制就是最大只能发送65500byt也许有人会问为什么要限制到65500byt 因为Windows 系列的系统都有一个安全漏洞也许还包括其他系统就是当向对方一次发送的数据包大于或等于65532时对方就很有可能挡机所以微软公司为了解决这一安全漏洞于是限制了ping的数据包大小。虽然微软公司已经做了此限制但这个参数配合其他参数以后危害依然非常强大 比如我们就可以通过配合-t参数来实现一个带有攻击性的命令 以下介绍带有危险性仅用于试验请勿轻易施于别人机器上否则后果自负
C:>ping -l 65500 -t 192. 168. 1.21
Pinging 192. 168. 1.21 with 65500 bytes of data:
Reply from 192. 168. 1.21: bytes=65500 time<10ms TTL=254
Reply from 192. 168. 1.21: bytes=65500 time<10ms TTL=254„„„„„„
这样它就会不停的向192. 168. 1.21计算机发送大小为65500byt的数据包如果你只有一台计算机也许没有什么效果但如果有很多计算机那么就可以使对方完全瘫痪我曾经就做过这样的试验当我同时使用10台以上计算机ping一台Win2000Pro系统的计算机时不到5分钟对方的网络就已经完全瘫痪网络严重堵塞 HTTP和FTP服务完全停止 由此可见威力非同小可。
-f Set Don<|>t Fragment flag in packet.
在数据包中发送“不要分段”标志。
在一般你所发送的数据包都会通过路由分段再发送给对方加上此参数以后路由就不会再分段处理。
-i TTL Time To Live.
指定TTL值在对方的系统里停留的时间。
此参数同样是帮助你检查网络运转情况的。
-v TOS Type Of Service.
将“服务类型”字段设置为tos指定的值。
-r count Record route for count hops.
在“记录路由”字段中记录传出和返回数据包的路由。
在一般情况下你发送的数据包是通过一个个路由才到达对方的但到底是经过了哪些路由呢通过此参数就可以设定你想探测经过的路由的个数不过限制在了9个也就是说你只能跟踪到9个路由如果想探测更多可以通过其他命令实现我将在以后的文章中给大家讲解。 以下为示例
C:>ping -n 1 -r 9 202.96. 105. 101 发送一个数据包最多记录
9个路由
Pinging 202.96. 105. 101 with 32 bytes of data:
Reply from 202.96. 105. 101 : bytes=32 time=10ms TTL=249Route: 202. 107.208. 187 ->
202. 107.210.214 ->
61. 153. 112.70 ->
61. 153. 112.89 ->
202.96. 105. 149 ->
202.96. 105.97 ->
202.96. 105. 101 ->
202.96. 105. 150 ->
61. 153. 112.90
Ping statistics for 202.96. 105. 101 :
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss) ,
Approximate round trip times in milli-seconds:
Mini mum = 10ms, Max imum= 10ms, Average = 10ms
从上面我就可以知道从我的计算机到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 Timestamp for count hops.
指定count指定的跃点数的时间戳。
此参数和-r差不多只是这个参数不记录数据包返回所经过的路由最多也只记录4个。
-j host-list Loose source route along host-list.
利用computer-li st指定的计算机列表路由数据包。连续计算机可以被中间网关分隔路由稀疏源 IP允许的最大数量为9。
-k host-list Strict source route along host-list.
利用computer-li st指定的计算机列表路由数据包。连续计算机不能被中间网关分隔路由严格源 IP允许的最大数量为9。
-w timeout Timeout in milliseconds to wait for each reply.指定超时间隔单位为毫秒。
此参数没有什么其他技巧。ping命令的其他技巧在一般情况下还可以通过ping对方让对方返回给你的TTL值大小粗略的判断目标主机的系统类型是Windows系列还是UNIX/Linux系列一般情况下Windows系列的系统返回的TTL 值在100-130之间而UNI X/L i nux系列的系统返回的TTL值在240-255之间当然TTL的值在对方的主机里是可以修改的Windows 系列的系统可以通过修改注册表以下键值实现
[HKEY_LOCAL_MACHINEsys temCurrentControlSetServi cesTcpi pParameter s]
“DefaultTTL” =dword:000000ff
255—FF
128—80
64—-40
32—-20
在路由器上-c可以指定发送的包数.
例如:ping -c 10000 x.x.x.x
就会ping 10000个数据包.并统计丢包率.
Tracert命令详解
HostHatch在当地时间7月30日发布了一系列的促销套餐,涉及亚洲和欧美的多个地区机房,最低年付15美元起,一次买2年还能免费升级双倍资源。商家成立于2011年,提供基于KVM架构的VPS主机,数据中心包括中国香港、美国、英国、荷兰、印度、挪威、澳大利亚等国家的十几个地区机房。官方网站:https://hosthatch.com/NVMe VPS(香港/悉尼)1 CPU core (12.5%...
Digital-VM商家目前也在凑热闹的发布六月份的活动,他们家的机房蛮多的有提供8个数据中心,包括日本、洛杉矶、新加坡等。这次六月份的促销活动全场VPS主机六折优惠。Digital-VM商家还是有一点点特点的,有提供1Gbps和10Gbps带宽的VPS主机,如果有需要大带宽的VPS主机可以看看。第一、商家优惠码优惠码:June40全场主机六折优惠,不过仅可以月付、季付。第二、商家VPS主机套餐1...
咖啡主机怎么样?咖啡主机是一家国人主机销售商,成立于2016年8月,之前云服务器网已经多次分享过他家的云服务器产品了,商家主要销售香港、洛杉矶等地的VPS产品,Cera机房 三网直连去程 回程CUVIP优化 本产品并非原生地区本土IP,线路方面都有CN2直连国内,机器比较稳定。咖啡主机目前推出美国洛杉矶弹性轻量云主机仅13元/月起,高防云20G防御仅18元/月;香港弹性云服务器,香港HKBN CN...