【lwIP(第九章)】ICMP协议

您所在的位置:网站首页 协议栈测试 【lwIP(第九章)】ICMP协议

【lwIP(第九章)】ICMP协议

2023-03-31 11:03| 来源: 网络整理| 查看: 265

目录 一、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的查询报文

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

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3