【lwIP(第九章)】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的查询报文

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

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eiker_3169

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值