Ethernet 系列(9)-- 基础学习::ICMP

目录

1. 缩写词:

2. ICMP的目的:

2.1 什么是ICMP:

2.2 什么时候使用ICMP:

3. ICMP 头部:

4. ICMP 报文类型:

4.1 目标不可达:

4.2 重定向:

4.3 超时:

4.4 Ping(回波请求和回波回复):

5. ICMP如何工作:

5.1 目标不可达:

5.2 重定向:

5.3 超时:


1. 缩写词:

Abbreviation

Meaning

ToS

Type of Service

ICMP

Internet Control Message Protocol

IP

Internet Protocol

MTU

Maximum Transmission Unit

TTL

Time To Live

2. ICMP的目的:

2.1 什么是ICMP:

  • ICMP - Internet Control Message Protocol,互联网控制消息协议,是一种辅助协议,是IP不可或缺的一部分。
  • 这意味着每个IP设备都必须支持ICMP,ICMP消息被封装在协议号为1的IP数据包中。

2.2 什么时候使用ICMP:

当网络设备想要报告错误消息、提出路由建议或诊断网络性能时,使用此协议。

3. ICMP 头部:

  • 类型:此字段指示ICMP消息的类型。请参阅第3节了解此字段的值。 
  • 代码:此字段表示附加信息。例如:如果类型为“Destination Unreachable”,则代码将提供问题的答案:“为什么目标不可达?”。请参阅第3节了解此字段的值。 
  • 校验和:此字段用于检查ICMP标头和封装数据中的错误。 
  • 标头其余部分:此字段因消息类型/代码而异。 

此标头用于封装ICMP数据。内容取决于ICMP消息类型。 

  • 对于错误消息,将发送导致错误的数据包的IP报头和IP有效载荷的前8个字节。 
  • 对于回显消息,回显请求中的数据必须在回显回复中回显。例如,如果请求中有500个字节,那么这500个字节必须在回复中回显。 

注意:并非所有ICMP消息都封装数据。例如,ping可以有一个0字节的有效载荷,其中只包含ICMP报头。

4. ICMP 报文类型:

有许多消息类型。在这篇文章中,我们主要关注两种流行的类型: 

  • 错误消息。这种类型有三种形式: 
    • 无法到达目的地。 
    • 重定向。 
    • 时间已过。 
  • 查询消息。这种类型有两种形式: 
    • 回声请求。 
    • 回声回复

4.1 目标不可达:

  • 目标不可达消息用于通知主机数据包无法到达其目标。 
  • ICMP类型=3。 
  • ICMP代码见下表: 
  • 0

Destination network unreachable

目标网络无法连接

1

Destination host unreachable

目标主机不可达

2

Destination protocol unreachable

无法访问目标协议

3

Destination port unreachable

无法访问目标端口

4

Fragmentation needed and DF-bit set

需要分段和DF-bit set

13

Communication administratively prohibited

行政禁止通信

  • 本例中的header如下:

  • 红色框表示数据包无法到达目的地。 
  • 蓝色框表示数据包无法到达目的地的原因。 
  • 粉红色框仅用于代码4。 
  • 绿色框表示哪个数据包无法到达目的地。

4.2 重定向:

  • 路由器使用重定向消息通知主机使用不同的路由器(更好的路由)到达目的地。 
  • ICMP Type=5。 
  • ICMP Code见下表:

0

Redirect for network

主机不仅应重定向到此目标IP,还应重定向到同一网络中的所有目标

Prohibited since RFC 1812

1

Redirect for host

主机应将所有数据包重定向到此目标IP

2

Redirect for ToS and network

与Code 0相同,但仅适用于与此代码具有相同ToS值的数据包

Prohibited since RFC 1812

3

Redirect for ToS and host

与Code 1相同,但仅适用于与此代码具有相同ToS值的数据包

  • 本例中的header如下:

  • IP地址:此字段表示应将数据包发送到的路由器的IP地址,而不是此路由器。 
  • IP报头和原始数据报数据的前8个字节:此字段指示导致发送此重定向消息的消息。

4.3 超时:

  • 超时消息用于两种情况: 
    • 通知发送方路由器无法转发数据包,因为IP TTL已过期。 
    • 通知发送方,由于并非所有碎片都及时到达,设备必须丢弃碎片数据包。 
  • ICMP Type=11。 
  • ICMP  Code见下表:

0

TTL exceeded in transit

1

Fragment reassembly time exceeded

  • 本例中的header如下:

  • IP报头和原始数据报数据的前8个字节:此字段指示导致发送此超时消息的消息。

4.4 Ping(回波请求和回波回复):

  • 如果主机收到回声请求,它应该向请求的源发送回声回复。
  • 对于回显请求,ICMP Type=0。对于回显应答,ICMP Type=0。
  • ICMP Code = 0.
  • 本例中的header如下:

  • 标识符:此字段用于跟踪它发送的ping。对于发送的每个ping序列,此值将递增1。应答消息将使用与请求消息相同的标识符。 
    • 例如:ping 8.8.8.8,主机将发送5个标识符为0的Echo请求。那么。ping 1.1.1.1,主机将发送5个标识符为1的回声请求。 
  • 序列号:此字段用于跟踪一系列中的每个请求和应答交换。 
    • 例如:ping 8.8.8.8,主机将发送5个标识符为0的Echo请求。请求1和应答1将具有相应的序列号=0,请求2和应答2将具有相应序列号=1,。。。 
    • 注意:此序列号可以解释为大端阶或小端阶(下图中的蓝色框)。示例:Wireshark显示两者。

  • 有效载荷:此字段只是一串ASCII字符。注: 
    • 请求的有效载荷必须在回复中发回。 
    • Ping可以在没有有效载荷的情况下发送。消息大小为28字节(IP报头+ICMP报头)。

5. ICMP如何工作:

5.1 目标不可达:

  • 步骤1:PC1向R1发送一个数据包(目的地为PC3)。 
  • 步骤2:R1有一个匹配的路由,因此它将数据包转发给R2。 
  • 步骤3:R2没有与目标192.168.3.10匹配的路由,因此它丢弃了数据包。→ 解释一下? 
  • 步骤4:R2向PC1发送ICMP目标不可达消息。

5.2 重定向:

  • 步骤1:PC1向R1发送数据包(目的地SRV1)。 
  • 步骤2:R1将数据包转发到目的地R2。 
  • 步骤3:R1向PC1发送ICMP重定向,说明:“发送到SRV1 IP地址的数据包应通过R2发送”。 
  • 步骤4:PC1通过R2而不是R1向SRV1发送未来的数据包。

5.3 超时:

  • 步骤1:PC1向R1发送一个TTL=2的数据包(目标PC3)。 
  • 步骤2:R1接收到一个数据包,并意识到必须将其转发给R2,然后将TTL减为1并转发给R2。 
  • 步骤3:R2接收到一个数据包,并意识到必须将其转发给R3,然后将TTL减为1,这将导致TTL=0。然后,R2丢弃该数据包。 
  • 步骤4:R2向PC1发送ICMP超时消息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/916533.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【计算机视觉】FusionGAN

1. FusionGAN论文阅读 abreheret/FusionGAN: Pytorch implementation of "Generating a Fusion Image: One’s Identity and Another’s Shape" 1.1. WHY 在现实世界中,将对象或人物转换为期望的形状是一种常用技术,但现有的图像翻译方法在处理身份和形状时存在…

<项目代码>YOLOv8 瞳孔识别<目标检测>

YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…

24/11/12 算法笔记<强化学习> 自注意力机制

自注意力机制(Self-Attention Mechanism),也称为内部注意力机制,是一种在深度学习模型中,特别是在自然语言处理(NLP)和计算机视觉领域中广泛使用的机制。它允许模型在处理序列数据时&#xff0c…

前后端交互之动态列

一. 情景 在做项目时,有时候后会遇到后端使用了聚合函数,导致生成的对象的属性数量或数量不固定,因此无法建立一个与之对应的对象来向前端传递数据,这时可以采用NameDataListVO向前端传递数据。 Data Builder AllArgsConstructo…

k8s服务内容滚动升级以及常用命令介绍

查看K8S集群所有的节点信息 kubectl get nodes 删除K8S集群中某个特定节点 kubectl delete nodes/10.0.0.123 获取K8S集群命名空间 kubectl get namespace 获取K8S所有命名空间的那些部署 kubectl get deployment --all-namespaces 创建命名空间 web界面上看到的效果,但是…

【视觉SLAM】1-概述

读书笔记 文章目录 1. 经典视觉SLAM框架2. 数学表述2.1 运动方程2.2 观测方程2.3 问题抽象 1. 经典视觉SLAM框架 传感器信息读取:相机图像、IMU等多源数据;前端视觉里程计(Visual Odometry,VO):估计相机的相…

低成本出租屋5G CPE解决方案:ZX7981PG/ZX7981PM WIFI6千兆高速网络

刚搬进新租的房子,没有网络,开个热点?续航不太行。随身WIFI?大多是百兆级网络。找人拉宽带?太麻烦,退租的时候也不能带着走。5G CPE倒是个不错的选择,插入SIM卡就能直接连接5G网络,千…

如何在Typora中绘制流程图

如何在Typora中绘制流程图 在撰写文档时,清晰的流程图能极大地提升信息传递的效率。Typora是一款优秀的Markdown编辑器,支持通过Mermaid语法快速绘制流程图。本文将介绍如何在Typora中创建和自定义流程图,帮助你用更直观的方式呈现逻辑结构和…

莱特币转型MEME币:背后隐含的加密市场现象

随着加密市场的风云变幻,莱特币(LTC)这款曾经的“老牌矿币”近日以自嘲式推文宣布“自己是一个MEME币”,迅速引发了市场的广泛关注和一波围绕MEME币的炒作浪潮。这一举动看似玩笑,却反映出当前加密市场的一种微妙转变&…

【代码大模型】Is Your Code Generated by ChatGPT Really Correct?论文阅读

Is Your Code Generated by ChatGPT Really Correct? Rigorous Evaluation of Large Language Models for Code Generation key word: evaluation framework, LLM-synthesized code, benchmark 论文:https://arxiv.org/pdf/2305.01210.pdf 代码:https:…

LC12:双指针

文章目录 125. 验证回文串 本专栏记录以后刷题碰到的有关双指针的题目。 125. 验证回文串 题目链接:125. 验证回文串 这是一个简单题目,但条件判断自己写的时候写的过于繁杂。后面参考别人写的代码,首先先将字符串s利用s.toLowerCase()将其…

MySQL5.7.37安装配置

1.下载MySQL软件包并解压 2.配置环境变量 3.新建my.ini文件并输入信息 [mysqld] #端口号 port 3306 #mysql-5.7.27-winx64的路径 basedirC:\mysql-5.7.37\mysql-5.7.37-winx64 #mysql-5.7.27-winx64的路径\data datadirC:\mysql-5.7.37\mysql-5.7.37-winx64\data #最大连接数…

python习题4

1 判断车牌归属地 输入一串车牌号,按e结束,判断车牌归属于那里 例如: 输入: jingA12345 huB34567 zheA99999 e 输出: jing hu zhe chepai input(请输入车牌号:\n) lst [] while chepai ! e:lst…

【原创】java+ssm+mysql社区疫情防控管理系统设计与实现

个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…

《深度学习》VGG网络

文章目录 1.VGG的网络架构2.案例:手写数字识别 学习目标: 知道VGG网络结构的特点能够利用VGG网络完成图像分类 2014年,⽜津⼤学计算机视觉组(Visual Geometry Group)和GoogleDeepMind公司的研究员⼀起研发出了新的深度…

探索 Python HTTP 的瑞士军刀:Requests 库

文章目录 探索 Python HTTP 的瑞士军刀:Requests 库第一部分:背景介绍第二部分:Requests 库是什么?第三部分:如何安装 Requests 库?第四部分:Requests 库的基本函数使用方法第五部分&#xff1a…

无桥Boost-PFC 双闭环控制MATLAB仿真

一、无桥Boost-PFC原理概述 无桥 Boost-PFC(Power Factor Correction,功率因数校正)的工作原理是通过特定的电路结构和控制策略,对输入电流进行校正,使其与输入电压同相位,从而提高电路的功率因数&#xf…

数据结构Python版

2.3.3 双链表 双链表和链表一样,只不过每个节点有两个链接——一个指向后一个节点,一个指向前一个节点。此外,除了第一个节点,双链表还需要记录最后一个节点。 每个结点为DLinkNode类对象,包括存储元素的列表data、…

力扣-Hot100-二叉树其一【算法学习day.32】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴&am…

京东商品详情,Python爬虫的“闪电战”

在这个数字化的时代,我们每天都在和数据打交道,尤其是电商数据。想象一下,你是一名侦探,需要快速获取京东上某个商品的详细信息,但是没有超能力,怎么办?别担心,Python爬虫来帮忙&…