美文网首页
ICMP协议

ICMP协议

作者: 小凡凡520 | 来源:发表于2018-10-20 15:09 被阅读30次
背景

因为IP协议是不可靠的传输服务、因此源地址发出的IP数据包很可能无法达到目标地址(目标地址不存在、过程中某链路中断等)。这时ICMP协议就能检测IP数据包传输过程中的各种错误、并通知源地址。

实现原理

让发现错误的路由器、向数据包的(通过IP数据包的信息获取)源主机地址发送一个ICMP数据包、并且通过ICMP数据包报告出错的原因。

需要注意的是。ICMP协议是IP协议的补充、ICMP与IP协议位于同一个层次(IP层),但ICMP报文是封装在IP数据报的数据部分进行传输的。但是、这次IP传输如果出错、ICMP协议规定、将废弃这次ICMP发送。

数据包的格式
1552225-ed2dfc22bfbea36a.png
数据包的类型

ICMP报文虽然细分为很多类,但总的来看可以分为如图所示的三大 类:差错报告、控制报文和请求应答报文。


1552225-ec50bb9fd7115842.png
  • 响应请求
    我们日常使用最多的ping,就是响应请求(Type=8)和应答(Type=0),一台主机向一个节点发送一个Type=8的ICMP报文,如果途中没有异常(例如被路由器丢弃、目标不回应ICMP或传输失败),则目标返回Type=0的ICMP报文,说明这台主机存在,更详细的tracert通过计算ICMP报文通过的节点来确定主机与目标之间的网络距离。

  • 目标不可到达、源抑制和超时报文

    1、目标不可到达报文
        在路由器或主机不能传递数据报时使用,例如我们要连接对方一个不存在的系统端口(端口号小于1024)时,将返回Type=3、Code=3的ICMP报文,它要告诉我们:“嘿,别连接了,我不在家的!”,常见的不可到达类型还有网络不可到达(Code=0)、主机不可到达(Code=1)、协议不可到达(Code=2)等。
    2、源抑制
        充当一个控制流量的角色,它通知主机减少数据报流量,由于ICMP没有恢复传输的报文,所以只要停止该报文,一定时间后主机就会逐渐恢复传输速率。
    3、无连接方式网络的问题
        就是数据报文丢失,或者长时间在网络游荡而找不到目标,或者拥塞导致主机在规定时间内无法重组数据报分段,这时就要触发ICMP超时报文的产生。超时报文的代码域有两种取值:Code=0表示传输超时,Code=1表示重组分段超时。
    
  • 时间戳
    时间戳请求报文(Type=13)和时间戳应答报文(Type=14)用于测试两台主机之间数据报来回一次的传输时间。传输时,主机填充原始时间戳,接收方收到请求后填充接收时间戳后以Type=14的报文格式返回,发送方计算这个时间差。一些系统不响应这种报文。

相关文章

网友评论

      本文标题:ICMP协议

      本文链接:https://www.haomeiwen.com/subject/tykmzftx.html