您的位置 首页 golang

「网工小白必备」全网最详细的网络基础之ICMP协议

1.1. ICMP协议

1.1.1. 前言

1.1.2. ICMP的概念

Internet Control Message Protocol,因特网控制消息协议

用于可达性测试

使用 ping 命令调用

1.1.3. ICMP的主要功能

确认IP包是否成功送达目标地址

通知在发送过程中当IP包被丢弃的具体原因

我们需要注意几点:

1. ICMP是基于IP协议工作的,但它并不是传输层的功能,因此我们仍然把它归结为网络层协议

2. ICMP只能搭配IPv4使用,如果是IPv6情况下,需要用ICMPv6

1.1.4. ICMP数据包格式

ICMP头部有8个字节,前4个字节格式固定

类型(1字节)

标识ICMP报文的类型,从类型值来看ICMP报文可以分为两大类。1-127为差错报文;128以上为信息报文

代码(1字节)

表示同一消息类型中的不同信息。它与类型字段一起共同标识了ICMP报文的详细类型

校验和

数据的校验

后四个字节不固定:可能有可能没有,和类型有关系

ICMP从功能上报文大概可以分为两类:

一类是 通知出错原因 ;一类是 用于诊断查询

差错报告报文

Type 3

终点不可达,当数据包不能发送到目标主机或路由时,就会丢弃该数据包向源点发送终点不可达报文。出错原因多种,例如:我们要连接对方一个不存在的系统端口时,将返回Type 3、Code 3的ICMP报文。其他的参考错误代码

Type 11

超时,当路由器收到TTL=0的数据包时,会丢弃该数据包并向源点发送超时报文;也有可能数据分片在重组的时超过规定时间也会丢弃已收到的报文然后向源点发送超时报文

Type 12

参数问题,可能是IP头部有的字段值是错误的或者IP首部被修改、破坏都有可能。因为IP头部有一个校验和会对IP头部进行校验

查询报告报文

Type 0和8

类型8表示请求,类型0表示回答

Type 9和10

路由器通告查询,一般指的是返回路由的状态信息

Type 13和14

类型13表示时间戳请求;类型14表示时间戳回答

记录数据报文的发送时间和接收时间,一般来说发送时间和接收时间是一样的,比如主机A发送时间是14点,主机B的接收时间是16点,说明这两个时间不同步,是有问题的

1.1.5. ICMP重定向

重定向的概念

ICMP重定向报文是ICMP控制报文的一种,当检测到一台路由器使用次优路径的时候,它就会像该主机发送一个ICMP重定向报文,请求主机改变路由。路由器也会将初始报文向它的目的地转发

ICMP虽然不是路由协议,但是有时也可以指导数据包的流向。ICMP协议通过重定向(Type=5 Code=0)达到这个目的

重定向的工作原理

1. 如图PC要去访问192.168.3.0/24,主机判断出目标不属于同一网段,就会将数据包发送给自己的网关。但是在此之前必须发送ARP请求来获取网关的MAC地址

2. 收到ARP请求后,先进行ARP应答,然后将数据包发送给R2。此时数据包就相当于多了一段路。R1在此时就会发送一个ICMP重定向给PC,通知PC告知网关是192.168.1.254

何时重定向

数据包的入接口和转发的出接口是同一个接口

数据包的源IP和它的下一跳属于同一个网段

系统开启重定向

1.1.6. ping的使用方法

ping ip地址或域名 –参数

ping成功

ping超时

对方主机不在线、屏蔽等

ping传输失败

当主机尝试去访问其他网络内的主机,而自身没有配置网关

ping无法访问

网关没有路由、没有获取到MAC地址

文章来源:智云一二三科技

文章标题:「网工小白必备」全网最详细的网络基础之ICMP协议

文章地址:https://www.zhihuclub.com/99867.shtml

关于作者: 智云科技

热门文章

网站地图