ping 介绍
前言
因为要整理网络这一块,所以打算先把概念写下。这节介绍ping的实现原理。
正文
先看一下图:
又没有发现和我们的icmp很像?对头。在icmp中,我写道:icmp有两种报文,一种是差错报文,一种是查询报文。
看看ping不ping的通,使用的就是icmp的查询报文。
前面的类型和代码还有校验和我就不解释了,请查询icmp那一章。
什么是标识符呢?
不同系统的操作是不一样的。
在unix系统中实现ping程序是把icmp报文中的标识字段置成发送进程的id号。因为这样回来的时候就知道到底返回给哪个进程。
然后在unix中,每ping一个,同一进程那么序号增加1,这样就知道了是哪个ping出去的。
在unix系统中,选项数据会包含我们发包的时间,那么回来的时候通过到达的时间-发送的时间得到了时间差。
在windows中:
不管开多少个窗口ping的identifier都是相同的,而且每增加一个ping包序号增加256。
那么他如何知道发送给哪个窗口?
他是这样子的,所以窗口都处在一个发包顺序中。
这个是什么意思呢?就是他们的序号是统一管理的,那么就知道窗口是哪个了。
同样他们计算时间也不一样,windows全部由自己的操作系统维护,比如说发出去哪个包,就会在操作系统中记录下来,然后回来的包的时间相减就得到了ping的时间。
然后ping包不是有一个数据选项吗?这个数据选项里面windows都是固定且没有任何意义的,一般来说都是adcdefg。。。