LWIP-ICMP

概述

IP协议完成各个主机之间的数据交互,但是并不可靠

ICMP协议,为了弥补IP协议的缺陷,数据错误信息 网络状况信息 ,提高数据报递交的有效性

ICMP协议虽然很复杂,但是 LWIP中只实现了一部分

ICMP协议

作用

  1. 在IP数据报递交出现异常时,能够提供错误信息,实现重传或其他处理
  2. 主机的管理与查询机制: 确定主机是否活跃,获取路由器的信息用来进行自身的配置

层次划分

  1. 封装在 IP 数据报中,但不是传输层信息,而是网络层, 所以IMCP 本身也存在丢失的可能
  2. ICMP 报文,不是为2个主机的应用程序提供服务,而是网络层

报文类型:  详细见 图11-2

  1. 差错报告报文

    介绍:路由器/主机不能对当前数据报进行处理: 无法将数据报递交给上层 或者:TTL为0

    作用: 只是简单的报告差错,不能纠正错误,差错的纠正应该留给上层

  2. 查询报文

    介绍: 查询时间戳 查询

差错报文

接收与发送处理

  1. 差错报文发送:根据数据报的处理异常,发送: 目的站不可达报文 和 数据包超时报文
  2. 差错报文处理: 直接将报文丢弃,不做处理

目的站不可达

网络不可达、主机不可达、协议不可达、端口不可达

数据报超时

数据报 每转发一次,TTL就减一,当TTL=0时,数据报超时

源站抑制

IP协议没有流量控制: 因为数据报源主机 转发数据报的路由器 目的主机 之间没有稳定的 通信关系

​ 所以不可能存在流量控制

导致拥塞: 源主机不知道 通路上的设备已经 负荷

源站抑制解决拥塞: 告诉数据源

1. 你的数据报发送的太快,我丢了好多
2. 路径中拥塞,放慢脚步

重定向

设备刚上电会将所有的报文发送给一个默认的路由器,而这些报文的正确路径是其他路由器,所以重定向报文告诉源主机,改变他的路由表,你可以直接将那些数据发送给另外一个路由器。

查询报文

LWIP中唯一实现的报文: 回送请求和回答报文

目的:诊断,任何一台主机都可以用它,发现网络上的问题

使用:ping 命令的本质:发送查询报文

ICMP的实现

数据结构

发送差错报文

ICMP报文的处理

ping命令

ICMP洪水

undefined