ping 是怎么工作的

网络好不好,ping 一下就知道。以下记录一下ping的过程是如何做的。

ping是基于ICMP协议工作的,ICMP全称Internet Control Message Protocol  就是互联网控制报文协议。这里面的关键词是“控制”,那具体是怎么控制的呢?

ICMP报文是封装再IP包里面的,因为传输指令的时候,肯定需要源地址和目标地址。它本身非常简单,因为作为侦察兵,要轻装上阵,不能携带大量的包袱。
ICMP 报文有很多类型们不同的类型有不同的代码,最常用的类型是主动请求为8,主动请求的应答为0

查询报文类型

常用的ping就是查询报文、是一种主动请求,并且获取主动应答的ICMP协议,所以PING发出的包也是符合ICMP协议格式的,只不过它在后边增加了自己的格式。
对ping 的主动请求,进行网络抓包,称为ICMP ECHO REQUEST。同理主动请求回复,称为ICMP ECHO REPLY 。比起原生的ICMP,这里多了两个字段,一个是标识符,用来区别用途。一个是序号
以侦察兵为例,主帅派出两队侦察兵,一队是侦查战况,一队是查找水源的,标识符就用来区分这个责任的;派出的侦查兵都需要有个编号,比如派出10个,回来2个,那么说明情况不妙,这是序号的作用。
在选项数据中,ping还会存放发送请求的时间值,来计算往返时间,说明路程的长短。

差错报文类型

终点不可达为3:
具体错误原因用不同的代码表示,网络不可达:0;主机不可达:1;协议不可达:2;端口不可达3;还有8种,不一一列举。
源抑制为4:让源站放慢发送速度。
超时为11:超过网络包的生存时间还没有到。
路由重定向是5;下次发给另一个路由器。


差错报文的结构相对复杂,除了前面还是IP,ICMP的前8个字节不变,后面则跟上出错的那个IP包的IP头和IP正文的8个字节。


ping 查询报文类型的使用:
下图是ping的发送和接收过程。


 


猜你喜欢

转载自blog.csdn.net/wzbwzh/article/details/80610993