ping

当我们遇到网络不通的问题时,会想到ping一下。那你知道ping是如何工作的吗?

ping是基于ICMP协议工作的。ICMP全称Internet Control Message Protocol,互联网控制报文协议。

网络包在异常复杂的网络环境中传输时,常常会遇到各种各样的问题。当遇到问题,总不能死的不明不白,要传出消息来,报告情况,这样才可以调整传输策略。这就相当于古代行军的时候,为将为帅者都会通过派一个侦察兵、哨探或者传令兵等人肉的方式来掌握情况,控制整个战局。

ICMP报文有很多的类型,不同的类型有不同的代码。最常用的类型是主动请求为8,主动请求的应答为0

查询报文类型

ping就是查询报文,是一种主动请求,并且获得主动应答的ICMP协议。ping发的包也是符合ICMP协议格式的,只不过它在后面增加了自己的格式。
对ping的主动请求,进行网络抓包,称为ICMP ECHO REQUEST。同理主动请求的回复,称为ICMP ECHO REPLY。比起原生的ICMP,这里多了两个字段,一个是标识符。这个很好理解,你派出去两队侦察兵,一队是侦查战况的,一队是寻找水源的,要有个标识才能区分,另一个是序号,你派出去的侦察兵,都要编个号。如果派出去10个,回来10个,说明前方战况不错,如果派出去10个,回来2个,说明前方情况不妙。

差错报文类型

终点不可达3,源抑制4,超时11,重定向5

终点不可达

小兵:报告主公,你让把粮草送到张将军那里,结果没有送到
主公:为什么送不到?具体的原因在代码中表示就是 网络不可达0,主机不可达1,协议不可达2,端口不可达3,需要分片但是设置了不分片4

网络不可达0:主公,找不到地方呀
主机不可达1 找到地方,但是没有这个人呀
协议不可达2 找到地方,找到人,但是口号对不上
端口不可达3 找到地方,找到人,对了口号,但是事儿没对上。我去送粮草,他们说在等救兵

ping的发送和接收过程
主机A 192.168.10.2
主机B 192.168.10.3
在主机A上运行ping 192.168.10.3
ping命令执行的时候,源主机首先会构建一个ICMP请求数据包,ICMP数据包包含多个字段,最重要的有两个。第一个是类型字段,另外一个是顺序号,主要用于区分连续ping的时候发出的多个数据包。没发出一个请求数据包,顺序号都会自动加1。为了能够计算往返RTT,他会在报文的数据部分插入发送时间。

然后,由ICMP协议将这个数据包连同地址192.168.10.3以前交给IP层。IP层将以192.168.10.3为目的地址,本机IP地址为源地址,加上一些控制信息,构建一个IP数据包。

接下来,需要加入MAC头。如果在本节点ARP映射表中查找出IP地址192.168.10.3对应的mac地址,则可以直接使用。如果没有,则需要发送ARP协议查询MAC地址,获得MAC地址后,由数据链路层构建一个数据帧,目的地址是IP层传过来的MAC地址,源地址是本机的MAC地址,还要附加一些控制信息,依据以太网的介质访问规则,将他们传送出去

主机B收到这个数据桢后,先检查它的目的MAC地址,并和本机MAC地址对比。如符合,则接收,否则就丢弃。接收后检查数据帧,将IP数据包从桢中提取出来,交给本机的IP层,同样,IP层检查完后,将游泳的信息提取后交给ICMP协议。

主机B会构建一个ICMP的应答包,应答数据包的类型字段为0。顺序号为接收到的请求数据包中的顺序号,然后再发送出去给主机A

但是ping不通不代表网络不通,可能是没有权限访问,不在控制范围内,所以除了ping之外,也要使用telnet

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值