【lwip】10-ICMP协议&源码分析( 二 )

RFC 792
类型代码描述查询差错00回显应答(如ping应答)√3目的不可达:0网络不可达√1主机不可达√2协议不可达√3端口不可达√4需要进行分片,但设置不了分片比特√5源站选路失败√6目的网络不认识√7目的主机不认识√8源主机被隔离(作废不用)√9目的网络被强制禁止√10目的主机被强制禁止√11由于服务类型TOS,网络不可达√12由于服务类型TOS,主机不可达√13由于过滤,通信被强制禁止√14主机越权√15优先权中止生效√40源站抑制√5重定向:0对网络重定向√1对主机重定向√2对服务类型和网络重定向√3对服务类型和主机重定向√80请求回显(如ping请求)√90路由器通告√100路由器请求√11超时:0传输期间TTL为0√1分片数据报重装超时√12参数问题:0坏IP首部√1缺少必须的选项√130时间戳请求√140时间戳应答√150信息请求√160信息应答√170地址掩码请求√180地址掩码应答√10.3 ICMP差错报告报文注意,有几种数据报出现错误是不会产生对应的差错报文的:

  1. 携带ICMP差错报文的数据报 。
  2. 不是某数据报第一个分片的分片数据报 。
  3. 具有多播地址的数据报 。
  4. 具有其它特殊目的地址的数据报 。(如环回、多播、广播地址等等)
10.3.1 目的不可达类型代码描述查询差错3目的不可达:0网络不可达√1主机不可达√2协议不可达√3端口不可达√4需要进行分片,但设置不了分片比特√5源站选路失败√6目的网络不认识√7目的主机不认识√8源主机被隔离(作废不用)√9目的网络被强制禁止√10目的主机被强制禁止√11由于服务类型TOS,网络不可达√12由于服务类型TOS,主机不可达√13由于过滤,通信被强制禁止√14主机越权√15优先权中止生效√当路由器不能给数据报找到合适的路由路径,或者主机不能将数据报递交给上层协议时,相应的IP数据报就会被丢弃,然后返回给源主机一个目的站不可达的ICMP差错控制报文 。
ICMP 目的不可达报文首部剩下的 4 字节全部未用:目的不可达的ICMP报文格式:
【lwip】10-ICMP协议&源码分析

文章插图
10.3.2 源站抑制类型代码描述查询差错40源站抑制√ICMP源站抑制报文格式参考 目的不可达的ICMP报文格式 。
ICMP源站抑制报文的目的就是告诉源主机,数据降速,这边快处理不过来了 。
源站抑制详细描述:
如果网关没有必要的缓冲区空间,则可以丢弃Internet数据报,以便将数据报排队输出到目的地网络路由上的下一个网络 。
【【lwip】10-ICMP协议&源码分析】如果网关丢弃一个数据报,它可以向该数据报的Internet源主机发送一个源站抑制消息 。
如果数据报到达得太快而无法处理,目标主机也可以发送源抑制消息 。
源站抑制消息是向主机发出的请求,要求它降低向Internet目的地发送通信的速度 。
网关可以为它丢弃的每一个消息发送一个源站抑制消息 。
在接收到源站抑制消息时,源主机应该降低它向指定目的地发送通信的速率,直到它没有收到源站抑制消息为止 。
然后,源主机可以逐渐增加它向目标发送流量的速度,直到它再次接收到源站抑制消息为止 。
网关或主机可以在接近其容量限制时发送源站抑制消息,而不是等待直到容量超过再发 。
因为这样可以触发源站抑制的数据报可以被交付 。
代码0可以从网关或主机接收 。
10.3.3 重定向(改变路由)类型代码描述查询差错5重定向:0对网络重定向√1对主机重定向√2对服务类型和网络重定向√3对服务类型和主机重定向√数据包格式:

经验总结扩展阅读