IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> TCP/IP协议模型详解四ICMP -> 正文阅读

[网络协议]TCP/IP协议模型详解四ICMP

2.3.2、ICMP(Internet控制管理协议)

ICMP(Internet Control Message Protocol,因特网控制消息协议)是一种管理协议,为IP提供消息收发服务,以IP数据报的形式传输。其作用就是在用于在IP主机、路由器之间传递差错控制报文,探测网络是否存在故障。
在这里插入图片描述

两个特征:

  • 探测网络是否存在故障;
  • 封装在IP数据报中。

ICMP主要检测常见事件和消息:

  • 目标不可达;
  • 缓冲区已满;
  • 超过跳数/时间;

ICMP 报文是封装在 IP 包里面,报文分为信息报文、差错报文、控制报文。信息报文由客户端发出,差错报文是接收到的信息报文的接收端或路由器回复,表示不能完成要求的服务。

ICMP协议在实际传输中数据包:20字节IP首部 + 8字节ICMP首部 + 1472字节<数据大小>38字节。
ICMP报头

ICMP抓包
在这里插入图片描述

类型内容
0回送应答 (Echo Reply)
3目标不可达(Destination Unreachable)
4原点抑制(Source Quench)
5重定向或改变路由(Redirect)
8请求(echo requst)
9路由器公告(Router Advertisement)
10路由器请求(Router Solicitation)
11超时(Time Exceeded)
17地址子网请求(Address Mask Request)
18地址子网请求(Address Mask Reply)

注意:ICMP重定向,解决数据包访问的次优路径问题。

错误码ICMP不可达内容备注
0网络不可达 (Network Unreachable)不能匹配网络地址
1主机不可达(Host Unreachable)IP地址不能匹配路由表
2协议不可达(Protocol Unreachable)禁止 TCP 协议访问
3端口不可达(Port Unreachable)对端端口不能访问
4分片需要和不设置分片分片不符
5源站选路失败Soruce Route Failed-
6目的网络不认识-

2、Ping命令的使用
功能:用来检测网络的连通情况和分析网络速度。
原理:源端发送icmp echo requst消息,对端设备如果可达,随即回复icmp echo replay消息,就是向目标主机发送ICMP信息报文,目标主机回应ICMP信息报文。

常用方式

作用命令格式备注
拼通网址ping x.x.x.x默认发5个包
拼通网址ping x.x.x.x -n 10自己指定发10个包
测试链路切换时的丢包率ping -t x.x.x.x不间断发包
拼指定路径地址Ping -a x.x.x.x y.y.y.y源地址x.x.x.x,目标地址y.y.y.y

在这里插入图片描述
bytes值:数据包大小,也就是字节。默认是32字节。

time值:响应时间,这个时间越小,说明你连接这个地址速度越快。

TTL值:Time To Live,表示DNS记录在DNS服务器上存在的时间,它是IP协议包的一个值,告诉路由器该数据包何时需要被丢弃。可以通过Ping返回的TTL值大小,粗略地判断目标系统类型是Windows系列还是UNIX/Linux系列。
Linux系统的TTL值为64或255,WindowsNT/2000/XP系统的TTL值为128。

下面的说明是已发送sent4个包,接收Received4个包,lost丢失的包数。三个参数最短时间、最长时间、平均时间。

3、Traceroute路由轨迹。
显示发送数据包的主机到达特定主机之前历经多少路由器。原理利用IP包的TTL生存期限从TTL=1开始按须序发送UDP包,强制接收ICMP超时消息。TTL1=1探测包发送到第一个节点,第一跳TTL=1-1=0,路由器返回该IP不可达,同样TTL1=1探测包到达第二个节点,返回该IP不可达,这样得到直到目的地址的IP地址,得出所经过的路径。ping失败则需要tracert定位故障节点位置。

<R5>tracert 44.1.1.1
 traceroute to  44.1.1.1(44.1.1.1), max hops: 30 ,packet length: 40,press CTRL_C
 to break 
 1 15.1.1.1 30 ms  20 ms  20 ms 
 2 13.1.1.3 30 ms  40 ms  30 ms

2.3.3、ICMPv6

在IPv6中,ICMP的作用被扩大,没有ICMPv6,IPv6就无法正常通信。ICMPv6 实现了 IPv4 中的 ICMP(ping命令)、ARP 以及 IGMP 的所有功
能,并且增加了邻接点发现、无状态地址配置(包括重复地址检测)、PMTU发现等。

1、ICMPv6的报文格式
IPv6的报文格式
下一报头值为58时,表示IPv6包头后封装着一个ICMPv6消息。
ICMPv6报文
Type:表示 ICMPv6 报文的类型,当取值介于 0 到 127 之间时,表示该报文为错误报文(如目的不可达、超时等),当取值在 128 到 255 之间时,则表示该报文为信息报文。

Code:表示此消息类型(Type)细分的类型,具体区分每种消息类型的错误信息,如目的不可达可能是防火墙导致的,也可能是路由错误导致的。

Checksum:校验和,校验的部分包括了 IPv6 伪首部和ICMPv6报文。IPV6伪首部包含4个部分:16字节的sourse address, 16字节的destination addrss,2字节的 payload length, 1字节的next header。

2、类型(Type)分为两类:一类是错误消息,一类是信息消息。

类型内容备注
1目标不可达 (Destination Unreachable)错误类
2包过大(Packet Too Big)错误类
3超时(Time Exceeded)错误类
4参数问题(Parameter Problem)错误类
128回送请求消息(Echo Request)信息类
129回送应答消息(Echo Reply)信息类
130多播监听查询(Multicast Listener Query)信息类
131多播监听报告(Multicast Listener Report)信息类
132多播监听结束(Multicast Listener Done)信息类
133路由器请求信息(Router Solicitation)信息类
134路由器公告信息(Router Advertisement)信息类
135邻居请求消息(Neighbor Solicitation)信息类
136邻居宣告消息(Neighbor Advertisement)信息类
137重定向消息(Redirect Message)信息类
138路由器重编号 (Router Renumbering)信息类
139信息查询(ICMP Node Information)信息类
140信息应答(ICMP Node Response)信息类
141反邻居探索请求消息信息类
142反邻居探索宣告消息信息类

3、具体的错误原因
A、目标不可达
当出现类型1,目标不可达 (Destination Unreachable)时,可以通过cod代码知道是属于那一种具体错误,常见的如下:

cod内容
0没有到达目标的路由
1与目标的通信被管理策略禁止
2未指定
3地址不可达
4端口不可达

B、数据包过大
出口链路的MTU小于IPv6数据包的长度时,应付出现数据包无法转发,该路由器就会回送带有错误消息的报文。该报文被用于IPv6路径MTU发现的处理 。数据包超长报文的类型字段值为2,代码字段值为0。

C、超时
节点收到的数据包跳限制为0时,节点会丢弃该数据包并回送带有错误消息的报文。0为跳数据限制为0,1为分片重组超时。

D、参数错误
当节点收到的数据包IPv6报头或者扩展报头出现错误,并回送带有错误消息的报文。0表示报头有错误;1表示无法识别下一个报头类型;2表示遇到无法识别的IPv6选项。

抓包图:
在这里插入图片描述邻居探索信息
133-137类型中路由器请求信息、路由器公告信息、邻居请求消息、邻居宣告消息、重定向消息,这5种消息称为邻居探索信息,在IPv6中的作用是通过邻居请求消息(多播)查询IPv6的地址和Mac地址的对应关系,收到邻居宣告消息后获得Mac地址。

IPv6没有路由器的情况下,使用链路本地地址,链路本地地址的前缀是FE80::/10,通过邻居请求消息,获取Mac地址,其固定的前缀+EUI-64规则形成的接口标识生成IPv6链路本地单播地址。

有路由器的情况下,比如其前缀为2001:A304:6101:1234/64,通过邻居请求消息,邻居宣告消息获取Mac地址,生成全球单播地址。
在这里插入图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:40:09  更:2021-12-15 18:40:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:48:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码