为了更有效的转发IP数据报提高交付成功的机会,在网际层使用网际控制协议ICMP,主机或者路由器使用ICMP来发送差错报告报文和询问报文

ICMP报文格式

icmp报文 no response found_数据

前8位表示报文类型:将ICMP分为两类

  1. 差错报文:主要是回应网络错误(终点不可达,重定向等)
  2. 查询报文:用来查询网络信息

8位代码:主要是对ICMP进一步细分。
16位校验和:对整个报文进行循环冗余校验,检验报文在传输的过程中是否损坏。

ICMP协议常见的差错报文情景

  • 路由器不知道如何发送报文。当路由器收到一个IP数据报,根据其首部的数据字段的值,查找路由表,但是在路由表中找不到该数据字段的值,就丢弃该数据报,并向源数据端发送“终点不可达”的差错报文。
  • 当主机收到了一个数据报,但是发现该数据报不知道是哪个程序的,则将其丢弃,同时会向发送端发送“终点不可达”信号。
    每个数据报中都有 一个端口号,用来标记该数据报是哪个应用程序的。例如:当主机收到了一个抖音的数据报,但是发现自己根本没有抖音这个软件,则会告诉发送端“终点不可达”。

  • 每个数据报都有一个生存周期TTL,数据报经过一个路由该TTL值会减1,当TTL的值为0时,则路由会将该数据报给强制丢弃。
  • 当终点在预先的时间内,没有收到所有的数据报文,则会将已经收到的数据报文给丢弃,并想发送端发送时间超过的报文。

系统

TTL默认初始时间

Windows

128

Linux

64

Unix

255


  • 当路由器或目的主机收到的数据报的首部中有些字段的值不正确时,就会丢弃该数据报,并向发送端发送“参数问题”的数据报

  • 路由器把“改变路由”的报文发送给主机,告诉主机下次应将数据报发送给另一个路由器,使得数据报的发送可以通过更好的路由。
ICMP协议常见的询问报文情景


IGMP协议

IGMP主要是用来在互联网上传送多播数据报。IGMP叫做网际组管理协议。

提到IGMP协议就不得不说数据在互联网上通信的方式:

  • 点对点通信
    例如:我们生活中一个人对另一个人说话,这种方式就类似于点对点通信。
  • 广播通信
    例如:在学校举行运动会时,领导在前面讲话,下面的学生都可以听到。
  • 多播通信
    例如:网络视频会议,网络视频点播。

IGMP就主要负责多播传输数据报,它作用于路由器,当检测到路由中有多播通信,则要求路由器传输数据报。

IGMP工作可分为两个阶段
  • 阶段一:当某个主机加入到多播组时,该主机向多播组的路由器发送一个IGMP报文,声明自己是该组成员,路由器收到IGMP协议后,同样也会告诉其他路由器。
  • 阶段二:当多播组里面没有主机时,路由器也就不往该多播组发送数据报。

例如:班里转来了一个新同学,班主任会将该同学告诉给各个任课老师。(阶段一)
放假时,班里已经没有一个同学了,老师自然也不会上课了。(阶段二)