【网络层】网际控制报文协议ICMP(湖科大慕课自学笔记)

news2024/11/24 10:54:20

网际控制报文协议ICMP

1:网际控制报文协议ICMP基本概述

ICMP报文被封装在IP数据报中发送

1:ICMP报文格式

ICMP报文作为IP数据报的数据载荷,IP协议为其添加一个首部使之成为IP数据报

2:ICMP报文类型

ICMP报文分为两大类,一类是差错报告报文,一类是询问报文

这两类报文的功能如下:

2:ICMP差错报告报文

常见的ICMP差错报告报文有以下五种

1:终点不可达

注释:上图是发送终点不可达报文,不是发送终点可达报文,表述有误

简单举例:

主机H1给H2发送IP数据报,H1会将IP数据报发送给路由器R1,由R1帮其转发,若R1的路由表中没有与网络N3匹配的路由条目,例如H2的特定主机路由,N3的路由,默认路由,则R1就不知道如何转发该数据报了,只能将其丢弃,并向发送该数据报的源主机H1发送ICMP差错报告报文,具体类型为终点不可达

2:源点抑制

简单举例:

还是主机H1给H2发送IP数据报,当该数据报传送到路由器R2时,由于R2拥塞,也就是R2比较繁忙,R2根据自己的丢包策略丢弃了该IP数据报,并向发送该数据报的源主机H1发送ICMP差错报告报文,具体类型为源点抑制,同理,主机也有可能出现因为拥塞而丢弃IP数据报,并发送ICMP差错报告报文的情况(例子:服务器拒绝服务)

3:时间超过(超时)

简单举例:

还是主机H1给H2发送IP数据报,该IP数据报从H1发出时,其首部中生存时间TTL字段的值被设置为2,当该数据报传送到路由器R1后,R1将其TTL字段的值减去1,结果是1这表明该数据报的生存时间还没有结束,R1将其转发出去,当该数据报传送到路由器R2后R2将其TTL的字段值减去1,结果是0,这表明该数据报的生存时间结束了,R2丢弃该数据报,并向发送该数据报的源主机H1发送ICMP差错报告报文,具体类型为时间超过

其他情况:

4:参数问题

简单举例:

还是主机H1给H2发送IP数据报,但是该数据报在从H1到路由器R1的传送过程中受到了干扰,其首部出现了误码,当该数据包传送到R1后,R1检测到该数据报的首部出错,于是丢弃该数据报,并向发送该数据报的源主机H1发送ICMP差错报告报文,具体类型为参数问题

5:改变路由(重定向)

简单举例:

假设给主机H1指定的默认网关是路由器R1,则H1要发送到网络N2的IP数据报,都会传送给R1,由其帮忙转发,但是久而久之R1发现发往N2的数据报的最佳路由不应该经过R1而是应该经过R4时,就由改变路由报文把这个情况告诉H1,于是H1就在自己的路由表中添加一个项目,即到达N2应该经过R4而不是默认网关R1,之后H1要发往N2的IP数据报都会传送给R4,由其帮忙转发

特殊情况:

练习1:

3:ICMP询问报文

常用的ICMP询问报文有以下两种:

回送请求和回答报文

时间戳请求和回答报文

这两类报文的功能如下:

1:ICMP的两个典型应用

分组网间探测与跟踪路由

1:分组网间探测PING

简单举例:

使用windows命令行工具PING测试我的主机与中国互联网络信息中心官方网站服务器的连通性,主机总共发送了四个ICMP回送请求报文,并且成功收到了相应的四个ICMP回送回答报文,由于往返的ICMP报文上都有时间戳,因此很容易得出往返时间

注释:有些主机或服务器为了防止恶意攻击,并不会理睬外界发来的这种报文

2:跟踪路由traceroute

简单举例:

图中的每一行有三个时间这是因为针对路径中的每一个路由器,要进行三次测试,时间中出现*号表示在超时时间内,没有收到路由器发来的响应报文,出现这种情况的原因有多种,例如路由器对IP数据报出现差错的情况进行策略性的差错报告,例如10个同样的差错只报告一个,而不是针对每一个同样的错误,都发送一个相应的差错报告,否则容易受到恶意攻击

接下来我们以windows版本为例,看看ICMP是如何实现跟踪路由的功能

如下图所示:

假设主机H1想知道到达主机H2需要经过那些路由器,于是H1给H2发送ICMP回送请求报文,该报文被封装在IP数据报中进行发送,IP数据报首部中,生存时间TTL的值被设置为1,IP数据报到达路由器R1后,其TTL的字段的值被减去1,结果为0,因此R1丢弃该数据报,并向发送该数据报的源主机H1发送封装有ICMP差错报告报文的IP数据报,ICMP差错报告报文类型为时间超过,这样,H1就知道了,到达H2路径中的第一个路由器的IP地址,如下图所示:

H1继续发送下一个封装有ICMP回送请求报文的IP数据报,IP数据报首部中,生存时间TTL的值被设置为2,经过路由器R1的转发后,该数据报TTL的字段的值被减去1,该数据报到达R2后,数据报TTL的字段的值再被减去1,结果为0,因此R2丢弃该数据报,并向发送该数据报的源主机H1发送封装有ICMP差错报告报文的IP数据报,ICMP差错报告报文类型为时间超过,这样,H1就知道了,到达H2路径中的第二个路由器的IP地址

如下图所示:

后面的以此类推,知道到达目的主机H2,并发送ICMP回送回答报文的IP数据报,这样H1就知道已经跟踪到路径中的最后一站

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++string类的介绍及常用函数用法总结

🎉个人名片: 🐼作者简介:一名乐于分享在学习道路上收获的大二在校生🐻‍❄个人主页🎉:GOTXX 🐼个人WeChat:ILXOXVJE🐼本文由GOTXX原创,首发CSDN&a…

java 打印日志的几种方式

java 打印日志的几种方式 Java 日志框架进化史日志门面与日志系统 Log4jslf4jLog4j2slf4jLogbackslf4j 一、先简单介绍五种 (1)最简单的方式,就是system.println.out(error) ,这样直接在控制台打印消息了; (2&#xff…

web前端——clear可以清除浮动产生的影响

clear可以解决高度塌陷的问题&#xff0c;产生的副作用要小 未使用clear之前 <!DOCTYPE html> <head><meta charset"UTF-8"><title>高度塌陷相关学习</title><style>div{font-size:50px;}.box1{width:200px;height:200px;backg…

晶圆代工降价竞争进入白热化,降幅最高15% | 百能云芯

随着半导体产业的不确定性和市况回落&#xff0c;晶圆代工市场再次掀起波澜&#xff0c;“降价大军”再添猛将。 据综合媒体报道&#xff0c;传三星计划在2024年第一季度调降晶圆代工报价&#xff0c;提供5%至15%的折扣&#xff0c;并表示愿意进一步协商。 台积电根据客户的投产…

【Pytorch】学习记录分享10——TextCNN用于文本分类处理

【Pytorch】学习记录分享10——PyTorchTextCNN用于文本分类处理 1. TextCNN用于文本分类2. 代码实现 1. TextCNN用于文本分类 具体流程&#xff1a; 2. 代码实现 # coding: UTF-8 import torch import torch.nn as nn import torch.nn.functional as F import numpy as np…

79 Python开发-sqlmapapiTamperPocsuite

目录 本课知识点本课目的:演示案例:Sqlmap_Tamper模块脚本编写绕过滤SqlmapAPI调用实现自动化SQL注入安全检测Pocsuite3漏扫框架二次开发POC/EXP引入使用 涉及资源: 本课知识点 Request爬虫技术&#xff0c;Sqlmap深入分析&#xff0c;Pocsuite分析&#xff0c;框架代码二次修…

玩转Mysql 二(MySQL的目录结构与表结构)

一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。 一、MYSQL目录结构及命令存放路径 1、查看MYSQL数据文件存放路径 mysql> show variables like datadir; 注意:生成环境要提前规划好数据存放目录,存储一般以T为单位闪盘。 2、MYSQL命令存放…

RKE安装k8s及部署高可用rancher之证书私有证书但是内置的ssl不放到外置的LB中 4层负载均衡

先决条件# Kubernetes 集群 参考RKE安装k8s及部署高可用rancher之证书在外面的LB&#xff08;nginx中&#xff09;-CSDN博客CLI 工具Ingress Controller&#xff08;仅适用于托管 Kubernetes&#xff09; 创建集群k8s [rootnginx locale]# cat rancher-cluster.yml nodes:- …

【开源】基于JAVA语言的智能教学资源库系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 课程档案表3.2.2 课程资源表3.2.3 课程作业表3.2.4 课程评价表 四、系统展示五、核心代…

vue2 element 弹出框拖拽会出现一层阴影问题

问题如图所示&#xff1a; 因增加 draggable 属性导致我弹窗表单清空文本框时&#xff0c;从右向左选中字体会出现拖拽阴影效果 去掉 draggable 即可 <template><div class"sys-jobTrigger-container"><el-dialog:visible.sync"state.isShowD…

抖店不好做?类目赛道没选对、选品能力跟不上,做不起来很正常!

我是王路飞。 抖店一直做不起来&#xff1f; 新手吐槽抖店不好做&#xff0c;绝大多数都有以下两个问题存在&#xff1a;类目赛道没选对、选品能力跟不上。 那你们做不起来也是很正常的一件事了。 今天围绕抖店的核心&#xff0c;给你们聊下&#xff0c;正确的运营抖店思路…

IP2312U_VSET 5V 2A 单节锂电池同步开关降压充电IC

IP2312U是一款5V输入&#xff0c;支持单节锂电池同步开关降压充电管理的IC。 IP2312U集成功率MOS&#xff0c;采用同步开关架构&#xff0c; 使其在应用时仅需极少的外围器件&#xff0c;并有效减小整体方案的尺寸&#xff0c;降低BOM 成本。 IP2312U的升压开关充电转换器工作频…

单片机大小端模式

单片机大小端模式 参考链接 单片机干货-什么是大小端_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Ju4y1M7Tx/?spm_id_from333.337.search-card.all.click&vd_sourcee821a225c7ba4a7b85e5aa6d013ac92e 特此记录 anlog 2024年1月2日

SpringMVC通用后台管理系统源码

整体的SSM后台管理框架功能已经初具雏形&#xff0c;前端界面风格采用了结构简单、 性能优良、页面美观大的Layui页面展示框架 数据库支持了SQLserver,只需修改配置文件即可实现数据库之间的转换。 系统工具中加入了定时任务管理和cron生成器&#xff0c;轻松实现系统调度问…

TMC4671闭环调试步进、伺服、音圈、永磁、无刷电机

一、IDE 连接开发板 下 面 讲 解 IDE 和 开 发 板 连 接 的 详 细 操 作 。 这 里 我 们 选 择 用 主 控 板 TMC671-EVALTMC6200-EVAL 开发板做讲解。其它型号的开发板也是大同小异 的操作步骤。 1&#xff0e;首先我连接好开发板&#xff0c;并给开发板上电 连接好的开发板如下…

.NET 8.0 本机 AOT

在软件开发领域&#xff0c;优化性能和简化效率仍然至关重要。.NET 平台二十年来不断创新&#xff0c;为开发人员提供了构建弹性且高效的软件解决方案的基础架构。 与本机 AOT&#xff08;提前&#xff09;编译相结合&#xff0c;取得了显着的进步。本文深入研究.NET Native AO…

Stable Diffusion架构的3D分子生成模型 GeoLDM - 测评与代码解析

之前&#xff0c;向大家介绍过3D分子生成模型 GeoLDM。 GeoLDM按照Stable Diffusion架构&#xff0c;将3D分子生成的扩散过程运行在隐空间内&#xff0c;优化了基于扩散模型的分子生成。可能是打开Drug-AIGC的关键之作。让精确控制分子生成有了希望。 详见&#xff1a;分子生成…

在Ubuntu22.04上离线部署Tailchat(一)

一&#xff1a;Tailchat介绍 Tailchat 是一款插件化易拓展的开源 IM 应用。可拓展架构赋予 Tailchat 无限可能性。前端微内核架构 后端微服务架构 使得 Tailchat 能够驾驭任何定制化/私有化的场景&#xff0c;是面向企业与私域用户打造&#xff0c;高度自由的群组管理与定制化…

Transformer 的双向编码器表示 (BERT)

一、说明 本文介绍语言句法中&#xff0c;最可能的单词填空在self-attention的表现形式&#xff0c;以及内部原理的介绍。 二、关于本文概述 在我之前的博客中&#xff0c;我们研究了关于生成式预训练 Transformer 的完整概述&#xff0c;关于生成式预训练 Transformer (GPT) 的…

C# 反射的乌云,MethodInfo的Json序列化参数入参问题

文章目录 前言直接运行MethodInfo运行结果 Json解决ParamterInfo实例化运行结果无法实例化问题部分参数的问题 Json反序列化 经过长达一天的研究&#xff0c;我终于完全的解决的了实战思路方法测试用例运行测试运行结果 代码总结总结 前言 我上篇文章已经基本解决了反射的基本…