相信大家都比较熟悉在windows下用ping去测试网络的连通性,下面就是个人学习使用ping的小结:
C:\Users\liuww>ping
用法: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
[-r count] [-s count] [[-j host-list] | [-k host-list]]
[-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name
选项:
-t Ping 指定的主机,直到停止。
若要查看统计信息并继续操作 - 请键入 Control-Break;
若要停止 - 请键入 Control-C。
-a 将地址解析成主机名。
-n count 要发送的回显请求数。
-l size 发送缓冲区大小。
-f 在数据包中设置“不分段”标志(仅适用于 IPv4)。
-i TTL 生存时间。
-v TOS 服务类型(仅适用于 IPv4。该设置已不赞成使用,且
对 IP 标头中的服务字段类型没有任何影响)。
-r count 记录计数跃点的路由(仅适用于 IPv4)。
-s count 计数跃点的时间戳(仅适用于 IPv4)。
-j host-list 与主机列表一起的松散源路由(仅适用于 IPv4)。
-k host-list 与主机列表一起的严格源路由(仅适用于 IPv4)。
-w timeout 等待每次回复的超时时间(毫秒)。
-R 同样使用路由标头测试反向路由(仅适用于 IPv6)。
-S srcaddr 要使用的源地址。
-4 强制使用 IPv4。
-6 强制使用 IPv6。
C:\Users\liuww>ping -l 1000000 -f -n 612222 10.46.206.167
选项 -l 的值有错误,有效范围从 0 到 65500。 (默认ping 是32字节)
因为windows系统都有一个安全漏洞(也许还包括其他系统),就是当向对方一次发送的数据包大于或等于65532时,对方就很有可能出现宕机,所以微软公司为了解决这一安全漏洞于是限制了ping的数据包大小,就是 ping of death 死亡之ping,恶意攻击
ping -l 65500 -t 192.168.1.12
由于链路层最大传输数据单元为1500字节,(MTU),去掉IP报头20字节,ICMP头的8字节,剩下数据部分为1472字节,是链路层分片的分界线,当大于1472时,就需要分片
但如果在ping的时候,指定 -f 设置不分段时,就会报错:
C:\Users\liuww>ping -l 1473 -f -n 6122ww 10.46.206.167
正在 Ping 10.46.206.167 具有 1473 字节的数据:
需要拆分数据包但是设置 DF。
当小于1473时,不分片,就正常:
C:\Users\liuww>ping -l 1472 -f -n 6122ww 10.46.206.167
正在 Ping 10.46.206.167 具有 1472 字节的数据:
来自 10.46.206.167 的回复: 字节=1472 时间=27ms TTL=64
来自 10.46.206.167 的回复: 字节=1472 时间=1ms TTL=64
如果不指定-f,那链路层就会对IP报进行分片,ping时就正常
C:\Users\liuww>ping -l 1473 -n 6122 10.46.206.167
正在 Ping 10.46.206.167 具有 1473 字节的数据:
来自 10.46.206.167 的回复: 字节=1473 时间=51ms TTL=64
来自 10.46.206.167 的回复: 字节=1473 时间=1ms TTL=64
来自 10.46.206.167 的回复: 字节=1473 时间=1ms TTL=64
来自 10.46.206.167 的回复: 字节=1473 时间=1ms TTL=64
注:上面 大于 1473,设置不要分片时报错,是网卡驱动程序返回的,可以通过下面验证:
大于1473,不要分片,ping 环回地址127.0.0.1,此时不进过网卡,就不会报错
C:\Users\liuww>ping -l 20000 -f -n 6122 127.0.0.1
正在 Ping 127.0.0.1 具有 20000 字节的数据:
来自 127.0.0.1 的回复: 字节=20000 时间<1ms TTL=64
来自 127.0.0.1 的回复: 字节=20000 时间<1ms TTL=64