2.1 TCP/IP命令(Ping)

2.1 TCP/IP命令(Ping)

1.概念

Ping命令来源于物理学中测声纳脉冲的回应情况,利用它可以检查网络是否连通,从而帮助我们分析和判定网络故障。ping命令使用的是ICMP(Internet Control Message Protocol)协议,即Internet控制消息协议的缩写,它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。

运行ping命令的主机会触发一个IP数据包从本地出发,前往目标主机。这个IP数据包会携带本机和目标主机的IP地址,一个简单的计时器和计数器,并且都从0开始。到达目标主机B后,IP地址调换再将其打回原地。这一去一回的路径不一定一致,只要IP包顺利返回就说明A和B之间双向皆通畅。

2.1 TCP/IP命令(Ping)

查询帮助输入“ping /?”,即可以看到ping的参数。

2.1 TCP/IP命令(Ping)

2.同一网段内(存在)

本机(A)IP地址是“192.168.0.106”,局域网内目标主机(B)的IP地址是“192.168.0.103”,运行“Ping192.168.0.103”后,首先Ping命令会构建一个固定格式的ICMP请求数据包,然后ICMP协议会将这个数据包连同地址“192.168.0.103”一起交给IP层协议,IP层协议会把地址“192.168.0.103”作为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包。

IP层协议通过目标主机的IP地址和自己的子网掩码,发现它跟自己属同一网络,就直接在本机的ARP缓存表中查找目标主机IP与其MAC的映射关系(如果没有,就发一个ARP请求广播,得到B机的MAC地址),之后交给数据链路层。最后数据链路层会构建一个数据帧,目的地址是IP层传过来的物理地址,源地址则是本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。

目标主机(B)收到这个数据帧后,先检查此数据帧的目的地址,并和它自己的物理地址对比,如一致则接收;否则丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交给它的IP层协议。同样,IP层检查后,将有用的信息提取后交给ICMP协议,ICMP处理后,马上构建一个ICMP应答包,发送给主机(A),其过程和主机(A)发送ICMP请求包到主机(B)一模一样。

2.1 TCP/IP命令(Ping)

使用Wireshark抓包分析:

2.1 TCP/IP命令(Ping)

3.同一网段内(不存在)

本机(A)IP地址是“192.168.0.106”,局域网内目标主机(B)的IP地址是“192.168.0.189”(此ip地址没有主机使用),运行“Ping192.168.0.189”后,前面和同一网段内的一模一样。

 IP层协议通过目标主机的IP地址和自己的子网掩码,发现它跟自己属同一网络,就直接在本机的ARP缓存表中查找目标主机IP与其MAC的映射关系,结果发现没有,于是就发一个ARP请求广播,依然没有得到B机的MAC地址,于是它会不停的发送ARP广播。

2.1 TCP/IP命令(Ping)

使用Wireshark抓包分析:

2.1 TCP/IP命令(Ping)

4.不在同一网段内

本机(A)IP地址是“192.168.0.106”,运行“Pingwww.xapi.edu.cn”后,通过域名解析服务可以得到它的ip地址。首先Ping命令会构建一个固定格式的ICMP请求数据包,然后ICMP协议会将这个数据包连同地址“202.200.82.150”一起交给IP层协议,IP层协议会把地址“202.200.82.150”作为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包。

IP协议通过计算发现B机与自己不在同一网段内,就直接将其交给路由器处理(想办法取回路由器的MAC,先查找ARP缓存表,没有就广播),路由得到这个数据帧后,会跟主机B进行联系,如果找不到,就向主机A返回一个超时的信息(这里假设只有2台PC,一台路由器)。

超时的原因:对方服务器设置了防火墙(拒绝Ping入或者Ping出),对方服务器ip与外网断开连接或者已经关机,路由器实在无法找到对方等。

2.1 TCP/IP命令(Ping)

使用Wireshark抓包分析:

2.1 TCP/IP命令(Ping)