第七篇:ICMP与ping

ICMP报文在第三层,封装在IP包里。

ICMP报文有很多的类型,不同的类型有不同的代码。

 

ICMP查询报告报文:

类型为8代表请求报文

类型为0代表应答报文

代码为0:无论请求报文还是应答报文,代码都为0

上图为ICMP请求,type为8,code为0,描述信息为ICMP Echo request

 

上图为应答,Type为0,Code为0,描述信息为ICMP Echo reply

 

差错报文类型:

类型为3:终点不可达

类型为4:源抑制

类型为5:重定向

类型为11:超时

 

终点不可达:

 

A <-> 路由器 <-> B

主机A向主机B发送数据包,会经过路由器,如果此时路由器出现了问题,那么路由器接收到数据包之后不会发送给B,而是把这个数据包丢弃并发送一个终点不可达的数据报文。

代码0-15表示终点不可达的错误可能有16种,其中网络不可达代码为0,主机不可达为1,协议不可达为2,端口不可达为3,

 

源抑制:

类型为4

IP协议是面向无连接的,没有流量控制机制,数据在传输过程种事非常容易造成拥塞的现象。

而ICMP源抑制报文就是给IP提供一种流量监控机制。这个报文的作用就是通知数据包在拥塞时被丢弃了,另外还会警告源主机流量出现了拥塞情况。

 

超时:

 

超过网络包的生存时间,但数据包还没有发送到。

 

路由重定向:

ICMP数据包在传输过程中选择最优路径进行传输。

 

假如主机A的IP地址为192.168.1.1,主机B的地址为192.168.1.2,它们在同一个子网中,如果ApingB,数据包是如何传输的?

 

ping执行的时候,源主机会先构建一个ICMP请求数据包,ICMP数据包包含多个字段,最主要的是类型字段和顺序号,对于请求数据包而言,类型字段为8,顺序号主要是用于区分连续ping的时候发出的多个数据包。每发出一个数据包,顺序号就会加1.

然后,ICMP协议将数据包连同地址192.168.1.2交给IP层,IP层中包含了源地址,目的地址,ICMP数据。

再接下来,交给MAC层,如果不知道192.168.1.2的MAC地址是什么,则需要先发送ARP协议,获取到MAC地址之后,组成一个整的数据包发送出去。

 

同样,192.168.1.2机器接收到数据包之后,层层解包,回复ICMP应答包,类型为0.

 

 

参考:

https://blog.csdn.net/qq_35733751/article/details/80053091

趣谈网络协议

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值