概述
摘要
ICMP全称是Internet Control Message Protocol,也就是互联网控制报文协议。网络包在复杂的网络传输环境里,常常会遇到各种问题。当遇到问题的时候,总不能死个不明不白,没头没脑的作风不是计算机网络的风格。所以需要传出消息,报告遇到了什么问题,这样才可以调整传输策略,以此来控制整个局面。
计算机网络知识脑图 | 计算机网络——计算机网络知识脑图_庄小焱的博客-CSDN博客_计算机网络面试题总结 |
计算机网络大厂面试问题集合 | 计算机网络——大厂面试问题集合_庄小焱的博客-CSDN博客 |
计算机网络基础知识 | 计算机网络——网络基础知识_庄小焱的博客-CSDN博客_数据转发服务器 |
IP相关基础原理 | 计算机网络——IP协议基础原理_庄小焱的博客-CSDN博客_ip网络技术 |
HTTP协议原理 | 计算机网络——HTTP协议原理_庄小焱的博客-CSDN博客_http协议原理 |
HTTP的优化方式 | 计算机网络——HTTP的优化方式_庄小焱的博客-CSDN博客 |
HTTPS协议原理 | 计算机网络——HTTPS协议原理_庄小焱的博客-CSDN博客_https协议原理 |
HTTPS的优化方式 | 计算机网络——HTTPS的优化方式_庄小焱的博客-CSDN博客 |
TCP可靠性传输原理 | 计算机网络——TCP可靠性传输原理_庄小焱的博客-CSDN博客_tcp的可靠性是如何实现的 |
TCP/IP三次握手四次挥手原理 | 计算机网络——HTTP的三次握手与四次挥手原理_庄小焱的博客-CSDN博客_三次握手和四次挥手原理 |
TCP的优化方式 | 计算机网络——TCP的优化方式_庄小焱的博客-CSDN博客_tcp协议优化技术 |
DNS协议(域名解析)原理 | 计算机网络——DNS协议(域名解析)原理_庄小焱的博客-CSDN博客_计算机网络dns |
ARP协议(地址解析)原理 | 计算机网络——ARP协议(地址解析)原理_庄小焱的博客-CSDN博客_地址解析协议的工作原理 |
ARQ协议(自动重传请求)原理 | 计算机网络——ARQ协议(自动重传请求)原理_庄小焱的博客-CSDN博客_连续arq协议的原理 |
DHCP协议原理 | 计算机网络——DHCP(动态获取IP)原理_庄小焱的博客-CSDN博客_计算机网络dhcp |
NAT协议原理 | 计算机网络——NAT协议(网络地址转换)原理_庄小焱的博客-CSDN博客 |
ICMP/IGMP协议原理 | 计算机网络——ICMP/IGMP协议原理_庄小焱的博客-CSDN博客_计算机网络igmp |
HTTP网络访问全流程 | 计算机网络——HTTP网络访问全流程_庄小焱的博客-CSDN博客_网络访问流程 |
虚拟网路模型原理 | 计算机网络——虚拟网路模型原理_庄小焱的博客-CSDN博客 |
其他网络知识 | 计算机网络——select/poll/epoll底层原理_庄小焱的博客-CSDN博客 计算机网络——cookie/session/token原理_庄小焱的博客-CSDN博客 计算机网络——网络通信加密原理_庄小焱的博客-CSDN博客_网络通信加密 计算机网络——GRPC通信原理_庄小焱的博客-CSDN博客_grpc原理 计算机网络——tcpdump/Wireshark抓包实战_庄小焱的博客-CSDN博客_网络抓包 计算机网络——TCP抓包连接实战_庄小焱的博客-CSDN博客_tcp全连接和半连接 |
一、ICMP协议原理
ICMP 主要的功能包括:确认 IP 包是否成功送达目标地址、报告发送过程中 IP 包被废弃的原因和改善网络设置等。在 IP 通信中如果某个 IP 包因为某种原因未能达到目标地址,那么这个具体的原因将由 ICMP 负责通知。
如上图例子,主机 A 向主机 B 发送了数据包,由于某种原因,途中的路由器 2 未能发现主机B 的存在,这时,路由器 2 就会向主机 A 发送一个 ICMP 目标不可达数据包,说明发往主机B 的包未能成功。ICMP 的这种通知消息会使用 IP 进行发送 。因此,从路由器 2 返回的 ICMP 包会按照往常的路由控制先经过路由器 1 再转发给主机 A 。收到该 ICMP 包的主机 A 则分解 ICMP 的首部和数据域以后得知具体发生问题的原因。
1.1 ICMP 大致可以分为两大类:
- 一类是用于诊断的查询消息,也就是查询报文类型。
- 另一类是通知出错原因的错误消息,也就是差错报文类型
1.2 目标不可达类型的代码
- 网络不可达代码为 0
- 主机不可达代码为 1
- 协议不可达代码为 2
- 端口不可达代码为 3
- 需要进行分片但设置了不分片位代码为 4
二、IGMP协议原理
ICMP跟 IGMP 是一点关系都没有的,就好像周杰与周杰伦的区别,大家不要混淆了。在前面我们知道了组播地址,也就是 D 类地址,既然是组播,那就说明是只有一组的主机能收到数据包,不在一组的主机不能收到数组包,怎么管理是否是在一组呢?那么,就需要 IGMP 协议了。
IGMP 是因特网组管理协议,工作在主机(组播成员)和最后一跳路由之间,如上图中的蓝色部分。
- IGMP 报文向路由器申请加入和退出组播组,默认情况下路由器是不会转发组播包到连接中的主机,除非主机通过 IGMP 加入到组播组,主机申请加入到组播组时,路由器就会记录 IGMP 路由器表,路由器后续就会转发组播包到对应的主机了。
- IGMP 报文采用 IP 封装,IP 头部的协议号为 2,而且 TTL 字段值通常为 1,因为 IGMP 是工作在主机与连接的路由器之间。
2.1 IGMPv2 查询与响应原理
- 路由器会周期性发送目的地址为 224.0.0.1 (表示同一网段内所有主机和路由器) IGMP 常规查询报文。
- 主机1 和 主机 3 收到这个查询,随后会启动「报告延迟计时器」,计时器的时间是随机的,通常是 0~10 秒,计时器超时后主机就会发送 IGMP 成员关系报告报文(源 IP 地址为自己主机的 IP地址,目的 IP 地址为组播地址)。如果在定时器超时之前,收到同一个组内的其他主机发送的成员关系报告报文,则自己不再发送,这样可以减少网络中多余的 IGMP 报文数量。
- 路由器收到主机的成员关系报文后,就会在 IGMP 路由表中加入该组播组,后续网络中一旦该组播地址的数据到达路由器,它会把数据包转发出去。
2.2 IGMPv2 离开组播组工作机制
离开组播组的情况一,网段中仍有该组播组:
- 主机 1 要离开组 224.1.1.1,发送 IGMPv2 离组报文,报文的目的地址是 224.0.0.2(表示发向网段内的所有路由器)
- 路由器 收到该报文后,以 1 秒为间隔连续发送 IGMP 特定组查询报文(共计发送 2 个),以便确认该网络是否还有 224.1.1.1 组的其他成员。
- 主机 3 仍然是组 224.1.1.1 的成员,因此它立即响应这个特定组查询。路由器知道该网络中仍然存在该组播组的成员,于是继续向该网络转发 224.1.1.1 的组播数据包。
离开组播组的情况二,网段中没有该组播组:
- 主机 1 要离开组播组 224.1.1.1,发送 IGMP 离组报文。
- 路由器收到该报文后,以 1 秒为间隔连续发送 IGMP 特定组查询报文(共计发送 2 个)。此时在该网段内,组 224.1.1.1 已经没有其他成员了,因此没有主机响应这个查询。
- 一定时间后,路由器认为该网段中已经没有 224.1.1.1 组播组成员了,将不会再向这个网段转发该组播地址的数据包。
博文参考
《小林图解网络》
最后
以上就是直率钢笔为你收集整理的计算机网络——ICMP/IGMP协议原理摘要一、ICMP协议原理1.1 ICMP 大致可以分为两大类:1.2 目标不可达类型的代码二、IGMP协议原理博文参考的全部内容,希望文章能够帮你解决计算机网络——ICMP/IGMP协议原理摘要一、ICMP协议原理1.1 ICMP 大致可以分为两大类:1.2 目标不可达类型的代码二、IGMP协议原理博文参考所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复