ping(package internet grope,因特网包探索器)是一个用于测试网络连接量的程序。
它使用的是ICMP,ping发送一个ICMP(Internet control and message protocol,因特网控制报文协议)请求消息给目的地并报告是否收到希望的ICMP应答。
ICMP是TCP/IP 协议族的一个子协议,用于在IP主机、路由器之间传递信消息。它是用来检测网络是否畅通或者网络连接速度的命令。
ICMP是(Internet Control Message Protocol)Internet控制报文协议。
它是TCP/IP协议族的一个子协议(网络层协议),用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。icmp百度百科
ICMP报文在IP帧结构的首部协议类型字段(Protocol 8bit)的值=1.
如下图所示,ICMP包有一个8字节长的包头,其中前4个字节是固定的格式,包含8位类型字段,8位代码字段和16位的校验和;后4个字节根据ICMP包的类型而取不同的值。
但是ICMP唯一的功能是报告问题而不是纠正错误,纠正错误的任务由发送方完成(ping)。
Ping的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。
ps: ping 是一个程序,是基于ICMP上进行开发的程序。
由于网络上的机器都有唯一的IP地址,当给目标IP地址发送一个数据包(包括对方的IP地址和自己的地址以及序列数)时,对方就要返回一个同样大小的数据包(包括对方地址),根据返回的数据包可以确定目标主机存在,可以初步判断目标主机的操作系统等。
eg:
执行:ping www.xidian.edu.cn 通常是通过DNS服务器,如果这里出现了故障,则表示DNS服务器的IP地址配置不正确和DNS服务器故障。
一定可以利用ping 实现域名对IP地址的转换功能。
eg:
表示此事发送的小数据包与该网络地址是畅通的;
下面表示发送的小数据不能够到达目的地。
导致的原因:(1)网络不通 (2)网络连接状况不佳
使用带有参数的ping来进行判断是哪一种情况
ping www.google.com -t -w 3000 不断的向目的主机发送数据,并且相应时间增加到3000。
如果还是现实request time out ,表示网络确实不通
如果不是全部显示'request timed out' 则表示网站还是通的,只会响应时间长或者通讯状况不佳。
ps:由于ping使用的是ICMP,有一些防火墙软件会屏蔽掉ICMP,所以有的时候ping的结果只能够作为参考(ping 不通不能够说明对方的IP不存在)。
通常情况下:通过ping进行网络故障判断时,如果ping运行正确,大体上就可以排除网络访问层、网卡、modern的输入输出线路、电缆和路由器等存在的故障,从而减小了问题的范围。
ICMP 在编程中会用到吗?