1.Ping 工作原理
源主机(输ping命令的主机)向对方主机发送一个ICMP协议中的echo包 而对方如果存活,就向源主机返回一个 ICMP 协议的 echo-reply 包
2.TTL Ping 输出中的 TTL 是什么意思?
C:Usersasus>ping www.csdn.net
Ping www.csdn.net [117.79.93.222] 具有 32 字节的数据:
来自 117.79.93.222 的回复: 字节=32 时间=219ms TTL=54
来自 117.79.93.222 的回复: 字节=32 时间=64ms TTL=54
上述输出、我们知道 CSDN 服务器的地址是 117.79.93.222
那 TTL=54 是什么意思?
1)首先、TTL 是 echo包在网络上的生存时间
当我们对网络上的主机进行ping操作的时候、我们本地机器会发出一个数据包。数据包经过一定数量的路由器传送到目的主机,但是由于很多的原因,一些数据包不能正常传送到目的主机。那如果不给这些数据包一个生存时间的话,这些数据包会一直在网络
上传送,导致网络开销的增大。当数据包传送到一个路由器之后,TTL就自动减1,如果减到0了还是没有传送到目的主机,那么就自动丢失。
2)其次,TTL 字段值可以帮助我们识别操作系统类型
UNIX 及类 UNIX 操作系统 ICMP 回显应答的 TTL 字段值为 255(思科)
Compaq Tru64 5.0 ICMP 回显应答的 TTL 字段值为 64
WINXP-32bit 回显应答的 TTL 字段值为 64
微软 Windows NT/2K/2003操作系统 ICMP 回显应答的 TTL 字段值为 128
微软 Windows 95 操作系统 ICMP 回显应答的 TTL 字段值为 32
当然,返回的TTL值是相同的
但有些情况下有所特殊:
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
Windows XP
ICMP 回显应答的 TTL 字段值为 128
这样,我们就可以通过这种方法来辨别操作系统
TTL值的注册表位置HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
其中有个DefaultTTL的DWORD值,其数据就是默认的TTL值了,我们可以修改,但不能大于十进制的255
3.Ping 工作过程
① 如果不知道对方的MAC地址,则要发送ARP的广播出去,解析对方的MAC地址
② 知道MAC地址后,再发送单播ICMP包(即上面说所的ICMP协议中echo包)
4.Ping 常见结果
1)字节=32 时间=66ms TTL=54
返回语句表示与目的主机连接成功
2)Ping 请求找不到主机 Rocky.csdn.net。请检查该名称,然后重试
对方主机不存在,此次ping在工作过程中的第一步就结束了;因为目的主机不存在;无法解析到目的主机的MAC地址
3)请求超时
1. 对方已关机,或者网络上根本没有这个地址
2. 对方与自己不在同一网段内,通过路由也无法找到对方
3. 对方确实存在,但设置了ICMP数据包过滤(比如防火墙设置)
4.echo 包顺利达到目的主机,且目的主机也向源主机返回 echo-reply包但是 echo-reply包在半路上丢失,无法到达源主机
5. 错误设置IP地址
4)Destination host Unreachable或无法访问目标主机。
可能原因:1. 对方与自己不在同一网段内,而自己又未设置默认的路由,路由表中连到达目标的路由都没有;2. 网线故障;3. 某个路由器192.168.1.125的端口上,禁止来自源主机的数据包通过。如,ACL。
5)no route to host
网卡工作不正常
6)transmit failed,error code10043
网卡驱动不正常
5.Ping 常用命令
① -t:ping指定的计算机直到按Ctrl+C键来停止
[plain] view plaincopyprint?
C:Usersasus>ping -t blog.csdn.net
正在 Ping blog.csdn.net [117.79.93.222] 具有 32 字节的数据:
来自 117.79.93.222 的回复: 字节=32 时间=184ms TTL=54
来自 117.79.93.222 的回复: 字节=32 时间=222ms TTL=54
来自 117.79.93.222 的回复: 字节=32 时间=154ms TTL=54
请求超时。
来自 117.79.93.222 的回复: 字节=32 时间=163ms TTL=54
来自 117.79.93.222 的回复: 字节=32 时间=293ms TTL=54
117.79.93.222 的 Ping 统计信息:
数据包: 已发送 = 19,已接收 = 17,丢失 = 2 (10% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 64ms,最长 = 342ms,平均 = 168ms
② -n count:发送指定次数的echo数据包、不加-n 参数的话,系统默认是 ping 4次
[plain] view plaincopyprint?
C:Usersasus>ping -n 6 blog.csdn.net
正在 Ping blog.csdn.net [117.79.93.222] 具有 32 字节的数据:
来自 117.79.93.222 的回复: 字节=32 时间=67ms TTL=54
来自 117.79.93.222 的回复: 字节=32 时间=208ms TTL=54 。。。 。。。
117.79.93.222 的 Ping 统计信息:
数据包: 已发送 = 6,已接收 = 6,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 67ms,最长 = 368ms,平均 = 185ms
③ -l length:指定echo数据包的大小、系统默认的数据包是32字节,最大的字节数是65527
[plain] view plaincopyprint?
C:Usersasus>ping -l 100 blog.csdn.net
正在 Ping blog.csdn.net [117.79.93.222] 具有 100 字节的数据:
来自 117.79.93.222 的回复: 字节=100 时间=68ms TTL=54
来自 117.79.93.222 的回复: 字节=100 时间=73ms TTL=54
来自 117.79.93.222 的回复: 字节=100 时间=67ms TTL=54
来自 117.79.93.222 的回复: 字节=100 时间=67ms TTL=54
117.79.93.222 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
6.IP 寻址的 trouble shoting 步骤
① ping 127.0.0.1 检查本机IP栈是否初始化,失败则重装TCP/IP协议
② ping 本主机IP 检查网卡NIC功能是否正常
③ ping 网关 成功则NIC连接到网络,并且网络通信正常
④ ping 远端主机 成功则表示主机与远端主机可进行IP通信