前言
IGMP协议是一个组管理协议,它帮助多播路由器创建以及更新与每一个路由接口相连的忠实成员列表(就是与该路由接口连接频率较高)。ICMP协议实际上就是差错控制协议,弥补了IP协议没有差错纠正机制以及差错报告的缺憾。ARP是一个地址映射协议,可以把一个IP地址映射为MAC地址。
IGMP协议
1、IGMP是管理组成员关系的协议
2、IGMP报文分为成员关系报告报文和成员关系查询报文。成员关系查询报文是为了查找网络中活跃的组成员而发送的报文,而成员关系报告报文是为了记录响应者在网络中的成员关系而发送的报文
3、IGMP在路由器上的应用:当路由器收到一个成员关系的查询报文后,路由器会等待接收一个多个报告,报告到达后路由器根据当前以及到达报告中的记录更新路由器的状态
4、IGMP能够为某个源点并且以某个多播组作为终点的分组做出是否转发的决定。根据IGMP协议,有三种情况IGMP协议会做出转发:
1)如果该网络中至少有一台主机希望接收这种类型的数据,会做出转发
2)如果源地址在不在过滤列表中,意味着IGMP认为网络中有主机希望接收这种类型的数据分组,所以也会转发
3)如果源地址在过滤列表中,但是源点计时器还没有超时,所以IGMP仍然会进行转发
ICMP协议
1、ICMP报文是一种差错控制协议。ICMP报文分为差错报告报文和查询报文。差错报告报文报告了路由器或者主机在处理IP数据报过程可能遇到的问题,查询报文总是成对成双出现的,主要帮助主机或者网络管理人员获取特定的信息
2、ICMP报文的首部为8字节,ICMP数据报要被封装成IP数据报才能传到下一层进行传输。所以任何一个ICMP报文都包括IP首部和数据报的前8个字节(为什么是8字节?书上说是包括了端口号和序号信息,但不知道在TCP是怎么处理的。还是继续往后看吧)
3、ICMP总是把出错信息发送给最初的数据源(可以发送其他数据源吗?答案是不能。因为在数据报中唯一可用的地址信息就是发送地址以及目的地址)
4、差错报告报文进行差错报告,差错高高报文会处理5种类型的信息:终点不可达、源点抑制、超时、参数问题和改变路由。
终点不可达:当路由器无法为一个数据找到路由或者主机无法交付一个数据的时候,会报告一个终点不可达
报文
源点抑制:源点抑制报文通知源点,由于路由器或者目的主机的拥塞,数据报已被丢弃,源点必须放慢发送速度,知道拥塞缓解为止
超时:当路由器将数据报的生存时间减为0就丢弃这个数据报,并向源点发送一个超时报文;当最后的终点没有在规定的时间收到全部的分片的时候,就丢弃已收到的分片,并给源点发送一个超时报文
参数问题:当数据报的首部出现二义性的时候会给源点发送一个参数问题报文
改变路由:发送改变路由报文可以更新主机的路由表
5、查询报文主要用来进行网络诊断有回送请求与回答和时间戳请求与回答。回送请求与回答报文可以用来测试两台机器能否彼此通信。一般会使用ping命令测试两台主机的可达性。时间戳请求与回答可以确定报文的往返时间,在计算的时候可以使用下面公式计算单向时间以及往返时间:
发送时间 = 接收时间戳 - 原始时间戳
接收时间 = 分组返回时间戳 - 发送时间戳
往返时间 = 发送时间 + 接收时间
6、在以下集中情况不会产生ICMP差错报文:
1)已经能够携带ICMP报文的数据报
2)对于分片的数据报,如果不是第一个分片那么就不产生ICMP差错数据报
3)对于具有多播地址的数据报不产生ICMP报文
4)具有特殊地址的数据报不产生ICMP报文
ARP协议
1、ARP把目的主机的IP地址映射为MAC地址,这样把IP数据报封装成帧(以太网上对01串的分组定义)后才能通过物理网络,这时就需要目的主机的MAC地址,而ARP协议正是这样的作用
2、为了找到接收主机的MAC地址,发送方会给同一个网络的所有主机发送一个ARP查询分组,网络上的主机收到该ARP分组后,只有期待接收的主机才会返回一个ARP响应分组。这个分组包括发送方的物理地址以及接收方的物理地址(当然还有IP地址),这个ARP响应分组是单独发给源主机的。
3、如果接收主机与源主机不是一个网络,源主机需要查找它的路由表,找到下一个路由器的IP地址。如果源主机中没有路由表,则会交给默认路由器处理ARP查询分组,这个路由器的IP地址必须是被映射为MAC地址的逻辑地址
4、如果源主机是路由器,该路由器收到要发送不同网络的数据报后,会先检查自己的路由表,找到下一个路由器的IP地址。下一个路由器的IP就是必须被映射为MAC地址的逻辑地址