【lwIP(第九章)】ICMP协议

目录

  • 一、ICMP协议简介
    • 1. ICMP协议类型与结构
    • 2. ICMP 差错报文
    • 3. ICMP 查询报文
  • 二、ICMP协议原理
    • 1. ICMP报文数据结构
    • 2. ICMP的差错报文
    • 3. 差错报文的原理
    • 4. ICMP的查询报文

一、ICMP协议简介

ICMP协议是一个网络层协议。 一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通;但是IP协议并不提供可靠传输。如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。因此我们需要ICMP协议来完成这样的功能

为什么需要ICMP协议
① IP 协议本身不提供差错报告和差错控制机制来保证数据报递交的有效性,例如:数据报在网络中被丢弃了,源主机更希望等到该数据报递交过程中的异常信息。
② IP 协议不能进行主机管理与查询机制,例如:不知道对方主机或者路由器的活跃,对
于不活跃的主机和路由器就没有必要发送数据报。
为了更有效地转发IP数据报和提高交付成功机会


1. ICMP协议类型与结构

在这里插入图片描述

2. ICMP 差错报文

用于检测IP数据报在传输过程的异常信息(目的不可达、源站抑制、重定向、超时、参数错误)

在这里插入图片描述

3. ICMP 查询报文

用于诊断两个网络设备之间彼此是否能够通信,目的主机收到 ICMP 回送请求报文后立刻回送应答报文,若源主机能收到 ICMP 回送应答报文,则说明到达该主机的网络正常(PING)

在这里插入图片描述


二、ICMP协议原理

1. ICMP报文数据结构

/* icmp.h */
struct icmp_echo_hdr 
{ 
	PACK_STRUCT_FLD_8(u8_t type); 		/* 类型 */
	PACK_STRUCT_FLD_8(u8_t code); 		/* 代码 */
	PACK_STRUCT_FIELD(u16_t chksum); 	/* 校验和 */
	PACK_STRUCT_FIELD(u16_t id); 		/* 标志符 */
	PACK_STRUCT_FIELD(u16_t seqno); 	/* 序号 */
} 
PACK_STRUCT_STRUCT; 

在这里插入图片描述

2. ICMP的差错报文

lwIP只实现目的不可达、超时差错报文,它们分别为icmp_dest_unreach和icmp_time_exceeded函数

在这里插入图片描述


3. 差错报文的原理

把丢弃的数据包IP首部和数据区域(前8字节)拷贝到差错报文当中

在这里插入图片描述

4. ICMP的查询报文

请求报文发送,应答报文重复。简单来讲,应答包是在请求包的基础上修改得来

在这里插入图片描述

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

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

相关文章

为什么说学人工智能一定要学Python?

学习人工智能需要掌握大量的数据处理和算法实现,而Python作为一种高级编程语言,具有简单易学、灵活多变、开源丰富的库等优点,成为了人工智能领域广泛应用的语言之一。 具体来说,Python在人工智能中的优势包括: ​​…

Matlab群体智能优化算法之巨型睡莲优化算法(VAO)

Matlab群体智能优化算法之巨型睡莲优化算法(VAO) 摘要:介绍一种新型智能优化算法,巨型睡莲优化算法。其应用于24个基准测试函数,并与其他10个著名算法进行了比较。提出的算法在10个优化问题上进行了测试:最小生成树、枢纽位置分配…

Nginx学习(9)—— 负载均衡模块

文章目录Nginx负载均衡模块负载均衡配置指令钩子初始化配置初始化请求peer.get和peer.free回调函数小结Nginx负载均衡模块 负载均衡模块用于从”upstream”指令定义的后端主机列表中选取一台主机。nginx先使用负载均衡模块找到一台主机,再使用upstream模块实现与这…

HTTP代理端口是什么意思?

HTTP代理端口是指代理服务器所使用的端口。代理服务器是一种介于客户端和服务器之间的计算机系统,它可以拦截客户端发送给服务器的请求,并将其转发到服务器。而HTTP代理端口则是代理服务器上专门用于处理HTTP请求和响应的端口号。默认情况下,…

【Java】JavaSE概要

整理:【狂神说Java】JavaSE阶段回顾总结_哔哩哔哩_bilibili JavaSE概要 简介 JDK:开发者工具包 JRE:运行环境 //Hello.java public class Hello{public static void main(String[] args){System.out.println("Hello,World!");} }…

Redis数据库

一、关系数据库与非关系型数据库概述 1、关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。 SQL 语句(标准数据查询语言)就是一种基于关系型数据库的语…

Spring Boot基础学习之(六):前后端交互实现用户登录界面

本篇博客写的内容,是一个系列,内容都是关于spring boot架构的学习,实现前后端交互,极大的解放双手spring boot学习系列这是关于spring boot的专栏,后期也会不定期进行更新。内容都是有序号的,一步接着一步。…

有人物联口红DTU DR154配置与RS 485传感器数据处理

一、硬件设备 (1)有人物联口红DTU DR154(RS 485版本) 这个DTU非常给力,不用插卡自带esim卡,送8年流量,配置的话通过小程序【联博士】蓝牙配置(手机扫描DTU背后的二维码即可&#x…

界面开发框架Qt新手入门教程 - 项目视图示例介绍

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。Qt提供了许多功能&…

java基础问答

57、synchronized 各种加锁场景的作用范围 1.作用于非静态方法,锁住的是对象实例(this),每一个对象实例有一个锁。 public synchronized void method() {} 2.作用于静态方法,锁住的是类的Class对象,因为Cl…

chatgpt+安全机器人控制器+底盘一体化方案设计构想

“你有没有想过,你只需告诉你的家庭助理机器人:‘请加热我的午餐’,它就会自己找到微波炉。这是不是很神奇?” 近日,微软在其官网发表了一篇名为《机器人 ChatGPT:设计原则和模型能力(ChatGPT …

MongoDB 6.0 入门(一)

为什么研究MongDB 6.0 今天和老大聊天 聊到了一个场景的设计,我刚开始推荐了 clickhouse ,然后老大指出 前两天 测试的结果,因为clickhouse 因为 是列式存储,导致我们要查询一行数据,需要200ms(库中有2000…

MyBatis源码分析(二、续)SqlSource创建流程,SQL如何解析?如何将#{id}变成?的

文章目录实例一、SqlSource处理入口二、SqlSource处理逻辑1、XMLScriptBuilder 构造方法2、解析动态sql3、DynamicSqlSource4、RawSqlSource解析sql&#xff08;1&#xff09;parse方法解析sql写在后面实例 此处我们分析的sql&#xff1a; <select id"selectBlog&quo…

redis 十. 线程基础

目录一. redis 基础复习与了解redis6二. redis 线程问题总结一. redis 基础复习与了解redis6 redis官网, redis中文网站, redis命令参考网站此处以redis6.0.8或以上版本为例(查看自己redis版本命令"redis- server -v")按照redis6以上版本测试使用时,redis.conf下需要…

Baklib:企业知识管理帮助文档制作平台

在当今的商业环境中&#xff0c;企业面临着越来越多的挑战。其中之一是如何管理并传递企业内部的知识。企业知识管理的重要性不言而喻&#xff0c;它可以帮助企业更好地组织和利用内部的知识资源&#xff0c;提高生产力和竞争力。而Baklib作为一款企业知识管理&帮助文档制作…

新四级强化辅导

词汇题&#xff08;55道&#xff09; 1. You should carefully think over_____ the manager said at the meeting. A. that B. which C. what D. whose 1.选C,考察宾语从句连接词&#xff0c;主句谓语动词think over后面缺宾语&#xff0c;后面的宾语从句谓语动…

聚焦“专精特新” 共话高质量发展

3月23日&#xff0c;第七届杭州全球企业家论坛暨第三届中国专精特新企业&#xff08;新三板&#xff09;高峰论坛在杭州国博中心成功举办。超过500位专精特新企业代表、专家学者、政府部门代表、科研院所代表共聚一堂&#xff0c;现场座无虚席&#xff0c;气氛热烈。本届峰会以…

SQL Server 2016安装教程

✅作者简介&#xff1a;CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1&#x1f3c6; &#x1f4c3;个人主页&#xff1a;hacker707的csdn博客 &#x1f525;欢迎订阅系列专栏&#xff1a;SQL Server 2016从入门到精通&#x1f947; &#x1f4…

借东风拉马力,龙头券商东方财富发展持续向好

3月17日&#xff0c;互联网券商东方财富公布2022年年报。具体来看&#xff0c;东方财富2022年实现总营收124.9亿元&#xff0c;同比下滑4.6%&#xff1b;归母净利润85.1亿元&#xff0c;同比下滑0.5%&#xff0c;略低于预期。其中&#xff0c;2022年第四季度总营收同比下滑15.4…

【Python课堂】使用Akshare高效获得A股可转债的重要信息

文章目录前言一、准备二、获取基本信息1.引入库2.读入数据3.获取行情数据4.可转债比价表总结前言 Akshare是一个非常好用的开源A股数据获取模块&#xff0c;它是基于 Python 的财经数据接口库&#xff0c;目的是实现对A股、美股、期货等金融产品的基本面数据、实时和历史行情数…