《计算机网络》网络层

网络真是太复杂了…感觉很多东西单独理解起来很简单,但合起来内容就变得很复杂,懂完过一阵子就忘记了。

最近计算机网络课学到了网络层了,本文仅是自己对课本学习内容的一个整理,方便期末复习(其实也没怎么整理,本文巨长,阅读请谨慎!!!)

参考书籍是 谢希仁 《计算机网络》第七版

网络层提供什么样的服务?

在计算机网络领域,网络层应该向运输层提高怎样的服务,是面向连接还是无连接?曾引起了长期的争论。争论的焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?网络还是端系统

  • 支持面向连接的人认为,坚持让网络借助电信网的成功经验,让网络负责可靠交付。他们认为网络的实现是:当两台计算机进行通信时,应当先建立连接,思路是建立一条虚电路VC Virtual Circult,虚电路预留双方通信所需的一切网络资源,然后双方就沿着已建立的虚电路发送分组。在分组交换中,分组的首部不需要填写完整的目的主机地址,而只需要填写这条虚电路的编号,因此减少了分组的开销。
    采用虚电路的通信方式,分组无差错按序到达终点,不丢失,也不重复。在通信结束后释放建立了的虚电路。如图,主机H1和H2之间交换的分组都必须在实现建立的虚电路上传送。如图:

  • 互联网的先驱者却提出了一种崭新的网络设计思路,采用无连接的方式。
    设计的思路是这样的:网络层向上只提供简单灵活的,无连接的,尽最大努力交付的数据报服务。网络在发送分组不需要先建立连接。每一个分组(也就是IP数据报)独立发送,与其他分组无关。网络层不提供服务质量的承诺。所传送的分组可能出错,丢失,重复和失序,也不保证分组交付的时间。这种设计的好处是:网络不提供端到端的可靠传输服务,因此路由器的设计比较简单,造价也便宜。网络造价大大降低,运行方式也更加灵活。如图,主机H1和H2发送的分组各自独立地选择路由,并且在传送的过程中可能会丢失。

  • 下图归纳了虚电路服务和数据报服务的对比:

网际协议IP

网际协议IP是TCP/IP体系中两个最主要的协议之一,也是最重要的互联网标准协议之一。IP协议又称为Kahn-Cerf协议,以纪念它的两个研发者Robert Kahn和Vint Cerf。与IP协议配套使用的还有三个协议:

  • 地址解析协议ARP(Address Resolution Protocol)
  • 网际控制报文协议ICMP(Internet Control Message Protocol)
  • 网际组管理协议IGMP(Internet Group Management Protocol)

他们都属于网际协议,下图画出了这三个协议和IP协议的关系,ARP在最下面,因为IP协议经常需要ARP协议的辅助(后面会说到),而ICMP和IGMP协议画在网际协议的上部,因为它们要用到IP协议。

虚拟互连网络:

我们知道,要把全世界方位内数百万计的网络互连起来将会非常复杂,需要解决很多的问题如:不同的寻址方案,不同的差错恢复方法,不同的服务,不同的管理和控制方式等等,没有一种单一的网络能够适应所有用户的需求

从一般的概念讲,将网络互相连接起来要使用一些中间设备,根据设备所处的层次大概有四种不同的中间设备:

  • 转发器物理层中使用的中间设备
  • 网桥或桥接器数据链路层中使用的中间设备
  • 路由器网络层使用的中间设备
  • 网关: 网络层以上使用的中间设备

用转发器或网桥作为中间设备,仅仅是将一个网扩大了,从网络层的角度上看,这仍然是一个网络,我们并不称为网络互连。我们现在指的网络互连一般都是指用路由器进行网络互连和路由选择。

下面这张图表示有许多计算机网络通过众多路由器进行了互连,由于参加互连的计算机网络都使用相同的网际协议IP(Internet Protocal),所以可以把互连后的计算机网络看成如图所示的一个虚拟互联网络,这些使用IP协议的虚拟互连网络也可简称为IP网

使用IP网的好处是当IP网上的主机进行通信时,就好像在一个单个网络上通信一样,忽略了互连的各网络的具体异构细节(不知道可不可以用一个计算机名词来形容:透明:指在计算机的实现中客观存在的但我们一般不太需要去了解它的很多细节)。

如果在这种覆盖全球的IP网的上层使用TCP协议,就成为了现在的互联网了。

这里需要指出互联网(Internet)并不等于互连网(internet),互连网泛指由多个计算机网络互连而成的网络,在这些网络之间的通信协议可以是任意的,而互联网采用的协议是TCP/IP协议族作为通信的规则,可以粗略的理解为互联网是互连网的一种实现

直接交付和间接交付

直接交付和间接交付的区别,简单举例,假设如图的主机H1要把一个IP数据包发送给目的主机H2。主机H1首先会查找自己的路由表,如果目的主机在本网络上(与路由器直接相连的网络),则不需要通过任何路由器直接交付,如不是,必须先把IP数据报发送给某个路由器(如图中的R1)进行间接交付

分类的IP地址

整个互联网就是一个单一的,抽象的网络。IP地址就是给互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32位的标识符。

分类的IP地址就是将32位的IP地址划分为若干个固定的类,包括A,B,C,D,E五类地址。每一类的地址都由两个字段:网络号和主机号构成。IP地址之所以在全世界范围是唯一的,原因是一个网络号在整个互联网范围内是唯一的

这种两级的IP地址可以记为

IP=<>,<>IP地址= <网络号>,<主机号>

下图给出了五类IP地址的网络号字段和主机号字段各自的位数:

A类,B类,C类地址都是单播地址,是最常用的。D类地址为多播地址。

IP地址都是32位的二进制代码,为了提高可读性,采用了每8位为一个单位的点分十进制记法:每8位代表一位十进制数,中间用点隔开。

如10000000 00001011 00000011 00011111可以读为128.11.3.31。

注意1:IP地址中的全0的网络号表示**”这个(this)“。意思是”本网络“,是个保留地址。第二,网络号为127,也就是01111111保留作为本地软件环回测试**,所以网络号为127的地址不作为一个网络地址

注意2:全0的主机号(与上面区分,上面说的是网络号全0,这里指的是主机字段全0),表示的是该IP地址是”本主机“所连接到的单个网络地址,例如,一主机的IP地址为5.6.7.8,则该主机所在的网络地址就是5.0.0.0,所以一般不会分配给某一台主机全0的主机号。而主机号全1表示**”所有的“(all)**,表示该网络上的所有主机。

如B类地址128.7.255.255(255为全1的十进制),表示**”在网络128.7.0.0上的所有主机“。 而A类地址0.0.0.35,网络号为全0,表示本网络,主机号为35,所以表示的意思是”在本网络上主机号为35的主机**。

下图给出IP地址的指派范围一般不使用的特殊IP地址

下面介绍IP地址一些重要的特点:

  • IP地址由网络号和主机号组成,是一种分等级的地址结构。这种结构的好处首先是IP地址管理机构在分配地址的时候可以只分配网络号,主机号由各单位自己分配,就比如中国移动给某个学校分配一个C类地址的网络号,学校自行给校内主机编主机号。其次,路由器仅根据目的主机所连接的网络号转发分组,不考虑目的主机号,加快了查询的速度。

  • 按照互联网的观点,一个网络指的是具有相同网络号的主机的集合,所以用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有相同的网络号。具有不同网络号的局域网必须使用路由器进行互连

IP地址与硬件地址

硬件地址又称物理地址,MAC地址。

  • 物理地址是数据链路层和物理层使用的地址
  • IP地址是网络层和以上各层使用的地址,是一种逻辑地址

IP地址和MAC地址的区别:可以简单这么理解:

从负责的层次角度来看IP地址负责的是网络层和网络层以上层的运输,而物理地址负责的是数据链路层及以下层的运输

发送数据报时,当上层使用IP数据报一旦交给了数据链路层,就被封装成MAC帧了,而MAC帧在传送时使用的源地址和目的地址都是物理地址。收到数据报时,主机收下MAC帧后,将数据报上传给网络层后,网络层会获取数据报中的源IP地址和目的IP地址,再进行后面的处理。

从可不可以改变的角度来看IP地址一般是可以改变的,而MAC地址一般不可以改变(要改变一般要修改硬件)

但MAC地址和IP地址都可以我们标识一台主机的身份,MAC地址类似我们的姓名,而IP地址类似我们的学号。但我们改变了我们主机连接的网络(类似于升学),IP地址(学号)一般会改变,而MAC地址(姓名)一般不会改变。

地址解析协议ARP

APR协议简单地说就是在一个局域网上,根据某主机的IP地址找到该主机的MAC地址的一种协议。之所以需要知道MAC地址,是因为在数据链路层及以下的层次转发数据报需要MAC地址。

IP数据报的格式

IP数据报的格式如图:

下面对各字段的解释:

  1. 版本:占4位,指IP协议的版本,目前广泛使用的版本号为4(IPV4)。

  2. 首部长度:占4位,表示最大十进制数为15,注意首部长度的单位为32个字也就是四个字节,所以首部长度最大可为15*4=60字节。因为以32个字为单位,IP分组的首部长度不是4字节的整数倍时,需要填充。也因此数据报的数据部分永远在4字节的整数倍开始。
    最常用的首部长度是20字节(没有可选字段),也就是0101。

  3. 区别服务:没有被实际用过。

  4. 总长度:占16位,指的是首部和数据部分的长度和

  5. 标识:占16位。每一个数据报都有一个标识位,因为当数据报大于数据帧的最大长度:我们称之为最大传送单元MTU Maximum Transfer Unit,需要进行分片转发。同一数据报分片后标识字段的值仍然是是相同的,这样在目的主机收到这些分了片的数据报后,就能根据相同的标识字段将分片后的各数据报正确地重装为原来的数据报

  6. 标志位:占3位,目前只有2位有意义。

    • 标志字段的最低位为MF MF=1 表示后面还有分片,MF=0表示这已经是数据报片的最后一片了。
    • 标志字段的中间一位为DF DF=1 意思为不能分片 DF=0 才允许分片。
  7. 片偏移:占13位。片偏移表示的是在分组分片后,某片在原分组的相对位置。片偏移以8个字节为偏移单位。也就是说,每个分片的长度一定是8字节(64位)的整数倍。标识位让我们知道是哪一个数据报片偏移让我们知道了被分片了的某一块数据报是原来数据报里面的哪一块,加上标志位就可以不出差错的重组我们收到的多个数据报。

  8. 生存时间:占8位 TTL Time To Live表明数据报在网络中的寿命。其目的是防止无法交付的数据报无限制地在互联网中兜圈子。具体是实现我们叫做**“跳数限制”。路由器在每次转发数据报之前就把TTL值减1,若TTL值减小到0,就丢弃这个数据报,不再转发。显然:数据报能在互联网中经过的路由器的最大数值是255**。利用TTL的属性,我们有时候把TTL的初始值设置为1,表示这个数据报只能在本局域网中传送

  9. 协议:占8位,指出该数据报携带的数据使用了何种协议。

  10. 首部检验和:占16位。这个字段只检验数据报的首部,不包括数据部分。具体计算方法为:在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验和字段置零。用反码算术运算把16位字相加后,将得到的和的反码写入检验和字段。接收方收到数据报后,将首部的所有16位再使用反码算术运算相加一次,将得到的和取反码,即得出接收方检验和的计算结果。若首部未发生任何变化,则此结果必为0。

  11. 源地址:32位的IP地址

  12. 目的地址:32位的目的IP地址

路由表

每一条路由最主要是两个信息(目的网络地址下一条的地址)

划分子网和构造超网

划分子网
为什么要划分子网?

在今天看来,IP地址的设计不够合理。原因有:

  • IP地址空间的利用率有时很低
  • 给每一个物理网络分配一个网络号会使得路由表变得太大而使网络性能变坏。
  • 两级IP地址不够灵活

为解决上述问题,我们在IP地址中又增加了一个子网号字段,使得两级IP地址变成为三级IP地址,这种做法也叫做划分子网,或子网寻址或子网路由选择。

划分子网的基本思路

划分子网的基本思路,简单的两句话,一是内部划分,二是对外仍然表现为一个网络

一个拥有许多物理网络的单位,可将所属的物理网络划分为若干个子网。划分子网纯属一个单位内部的事情,本单位以外的网络看不见这个网络是由多少个子网组成,这个单位对外仍然表现为一个网络

划分子网的具体方法

划分子网的具体方法是从网络的主机号借用若干位作为子网号。因此主机号也就减少了相应的位数,于是两级IP地址在本单位内部就变成了三级IP地址

IP=<>,<>,<>IP地址=<网络号>,<子网号>,<主机号>

于是乎,凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的网络号找到连接在本单位网络上的路由器。但此路由器在收到IP数据报后,再按照目的网络和子网号找到目的子网,把IP数据报交付给主机。

比如下面这个例子:

图中表示某单位拥有一个B类IP地址,网络地址为145.13.0.0(网络号为145.13)。凡是目的地址为145.13.x.x的数据报都先发送这个网络的路由器R1。R1再根据数据报的目的地址把数据报转发到相应的子网

子网掩码
如何找到子网?

上面我们讲到了R1要根据数据报的目的地址把数据报转发到相应的子网,那么问题就很自然地来了,如何找到子网?从IP数据报的首部是无法看出子网的划分的。解决方法就是子网掩码

如图:IP地址为145.13.3.10的主机本身是两级IP地址结构,网络号为145.13.0.0。如果我们用三级IP地址结构去解释这个IP地址,主机号拿出8位作为子网号,则网络号为145.13.3.0。为了使路由器R1能够很方便地从数据报中的目的IP地址中提取出所要找的子网的网络地址,路由器就要使用三级地址的子网掩码。三级地址的子网掩码这里也是32位的,由一串24个1和跟随的一串8个0组成。

子网掩码中1的位数对应于IP地址中原来二级地址中的16位网络号和新加上的8位子网号,而0的位数对应于主机号所占的位数

把三级IP地址的子网掩码和收到的数据报中的目的IP地址进行与运算,就可以得到我们要的子网的网络地址,解决了如何找到子网的问题。

归述,对于IP地址145.13.0.0从网络外面看,这就是一个普通的B类网络,网络号为145.13.0.0。但进入到这个网络后(即到了路由器R1),我们对该网络进行了不同的子网划分,记录下子网掩码,就看到了还有许多网络。如我们设置子网掩码为24个1和8个0,其内部的网络地址就变为145.13.x.0。x可以为不同的数值,表示不同的子网。再次显示了子网设计的基本思路:内部划分对外仍表现为一个网络

默认子网掩码

在不划分子网时,虽然没有子网,但为了方便路由表查找的统一性,使用默认子网掩码

  • A类地址的默认子网掩码为255.0.0.0

  • B类地址的默认子网掩码为255.255.0.0

  • C类地址的默认子网掩码为255.255.255.0

路由表的改变

子网掩码是一个网络或一个子网的重要属性。在划分了子网后,路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器

我们之前提到,路由表的每一条目有两个信息(目的网络地址,下一跳的地址)。但在划分完子网后,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。所以路由表的每一条两个三个信息(目的网络地址目的网络地址的子网掩码下一跳的地址)。

现在路由表是如何工作的呢?原理挺简单,当路由表收到数据报,从首部提取出目的IP地址D,与路由表中各网络的子网掩码进行逐为与操作,与其对应的目的网络地址匹配,若匹配则直接交付或将数据报传给下一跳路由器

总结划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。原因很简单:划分子网使得能划分出来的网络更多了,而每个网络总要排除全0的主机号和全1的总机号,一般这两个不作为主机的IP地址,所以减少了能够连接在网络上的主机总数。

构造超网(无分类编址CIDR)
为什么要采用无分类编址?

划分子网在一定程度上缓解了互联网在发展中遇到的困难,但是仍面临着B类地址已经要全部分配完毕,互联网主干网上的路由表中的项目数目急剧增长。因此,IETF研究出无分类编址的方法来解决问题。

什么是无分类编址

无分类编址的正式名字是无分类域间路由选择CIDR(Classless Inter-Domain Routing),它的主要特点有两个:

  • 消除了传统的A类,B类,C类地址以及划分子网的概念。把32位的IP地址划分为前后两个部分,前面部分为网络前缀,或简称为前缀,用来指明网络,后面部门则用来表面主机。其实就是一种无分类的两级编址,记法为:

    IP=<>,<>IP地址=<网络前缀>,<主机号>

    同时,CIDR还使用斜线记法,或称CIDR记法,即在IP地址后面加上斜线“/”,然后写上网络前缀所占IP地址的位数。

  • CIDR网络前缀相同的连续的IP地址组成一个CIDR地址块。我们只要知道CIDR地址块中的任何一个地址,就可以知道这个地址块的最小地址和最大地址,以及地址块中的地址数。

    例如,IP地址128.14.35.7/20 是某CIDR地址块中的一个地址,其前20位是网络前缀,只要把IP地址的二进制写出来,进行简单修改很容易就知道,这个地址块中的最小地址为128.14.32.0,最大地址为128.14.47.255。

    我们通常用最小地址和网络前缀的位数指明一个CIDR地址块,例如上面的地址块可以表示为128.14.32.0/20。

地址掩码

为了更方便地进行路由选择,CIDR使用32位的地址掩码地址掩码由一串1和一串0组成,与子网掩码是一样的,不过地址掩码1的位数等于网络前缀的长度,而子网掩码的1的位数等于网络号的长度。之所以要引进地址掩码,是因为CIDR根本就不使用子网(指的是并没有直接指明若干位作为子网号),自然也不存在什么子网掩码。

但分配到一个CIDR地址块的单位,仍然可以在本单位内部根据需要“划分子网”,这些子网也都只有一个网络前缀和一个主机号字段。其实也可以理解为,这里说的子网也就是前缀更长些的CIDR块,有了更长的前缀,就可以划分出更多的网络。

路由聚合

前面我们提到互联网主干网上的路由表中的项目数目急剧增长。CIDR设计解决这个问题的方法是路由聚合

由于一个CIDR地址块有很多的地址,所以在路由表中就利用CIDR地址块来查找目的网络,这种地址的聚合就称之为路由聚合。它使得路由表中的一个项目可以表示原来传统分类地址的很多个路由,以此减少表项目。路由聚合也称为构成超网

每一个CIDR地址块中的地址数一定是2的整数次幂。

下面给出一个CIDR地址块分配的例子

假定某ISP(互联网服务提供商如中国移动)拥有地址块206.0.64.0/18,也就是相当于有64个C类网络。现在某大学需要800个IP地址,ISP可以给该大学分配一个地址块206.0.68.0/22,它包括1024个IP地址。然后这个大学可以自由地对本校的各系分配地址块,各系还可以再划分地址块。如下图:

对于该图,我们分析地址聚合的意义。

这个ISP共拥有64个C类网络,如果不采用CIDR技术,则与在与该ISP的路由器交换路由信息的每一个路由器的路由表中,都需要有64个项目。但采用路由聚合后,就只需要路由聚合后的一个项目206.0.64.0/18就可以找到该ISP。同理,四个系的路由也可以聚合为大学的路由206.0.65.0/22,简单地理解就是这个项目就是大学的收发室,寄给这个大学任何一个系的邮件,邮递员都不会考虑大学各个系的地址,而是不管三七二十一把邮件集中投递到大学的收发室,然后剩下的就交给大学的收发室,这样就减轻了邮递员的工作量,只需要把邮件发给某个大学,不管大学如何再把这封信交给各个系(相当于简化了路由表的查找)。

结论:路由聚合实际上是将网络前缀缩短,网络前缀越短,其地址块所包含的地址数越多。

最长前缀原则:在使用CIDR时,因为采用了网络前缀的这种记法,在查找路由表时可能会得到不止一个匹配结果,出现这种情况,我们应当从匹配结果中选择具有最长网络前缀的路由,也称之为最长前缀匹配。仍然用前面的例子,在ISP的路由表中,有以下两个项目,即206.0.68.0/22(大学)和206.0.71.128/25(四系)。现假设ISP收到一个数据报,其目的IP地址为D=206.0.71.130分别与这两个项目的掩码逐位与,得到结果206.0.68.0/22和206.0.71.128/25都匹配。这是我们选择后者,因为它是更具体的一个。

网际控制报文协议ICMP

网际控制报文协议的出现,是为了更有效地转发IP数据报和提高交付的机会。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。

ICMP报文是装在IP数据报中,作为其中的数据部分,是IP层的协议。ICMP报文格式如下图:

ICMP报文的种类

ICMP报文的种类有两种,ICMP差错报告报文ICMP询问报文

常用的ICMP报文类型,如图:

ICMP检验和字段用来检验整个ICMP报文,前面提到,IP数据报的首部的检验并不检验IP数据报的内容,因此无法保证经过传输的ICMP报文不产生差错。

ICMP差错报文

ICMP差错报文共有四种:

  • 终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文
  • 时间超过:路由器收到生存时间为0的数据报时,丢弃该数据报外,向源点发送时间超过报文 。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,丢弃数据报片,向源点发送时间超过报文Traceroute就是利用了该原理。
  • 参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确(通过检查首部检验和),就丢弃数据报,向源点发送参数问题报文
  • 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次数据报发送给另外的路由(可通过更好的路由)

不应发送ICMP差错报文报告的几种情况

  • 对ICMP差错报告报文,不再发送ICMP差错报告报文(禁止套娃!!!)
  • 对第一个分片的数据包片的所有后续数据报片,都不发送ICMP差错报告报文
  • 对具有多播地址的数据报,都不发送ICMP差错报告报文
  • 对具有特殊地址的数据报,不发送ICMP差错报告报文。
ICMP询问报文

ICMP询问报文有两种

  • 回送请求和回答 ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。这种询问可以用来测试目的站是否可达以及了解有关状态。如我们的cmd命令 PING就是利用回送请求与回送回答报文。
  • 时间戳请求和回答:ICMP时间戳请求报文是请某台主机或路由器回答当前的日期和时间

IP多播

IP多播即一对多的通信

以太网多播

以太网网卡接收两种帧:

  • 目的MAC地址为本机网卡地址
  • 目的MAC地址为广播地址(FF-FF-FF-FF-FF-FF)

且以太网网卡对单播和广播,硬件判别能力很好。以太网多播地址的最高字节的最低位为1

以太网多播实现机制:目前网卡或网卡驱动软件能进行多播地址的判别与过滤,看主机是否属于一个或多个多播组,然后决定丢弃或接受。

IP多播地址和地址映射

前面提到了D类地址,D类地址就是专用多播地址,范围为224.0.0.0~239.255.255.255

一个D类多播地址对应一组计算机,这组计算机的集合成为多播主机组。主机组成员可以是因特网上的任何主机,成员是动态的。多播地址不是一般的IP主机地址,而是参加多播组的所有主机的组地址,为一组主机共有。

那么问题来了,当一个IP多播组传送到一个以太网时,如何传送到LAN中的几台计算机上?这就要知道IP多播到以太网多播地址转换

IP多播包从路由网进入以太网前,通过多播地址的转换,把IP多播地址转化为相应的以太网硬件多播地址,然后利用以太网的多播机制完成多播

IANA定义的可转化的以太网多播地址范围为:01:00:5e:00:00:00~01:00:5e:7f:ff:ff

IP多播与以太网多播的映射关系如图(图源来自张老师PPT)

映射地址的前25bit是固定的

IP多播传送的基本过程

单个物理网络中的IP多播过程

  1. 发送主机的多播进程将目的IP地址设置为一个多播地址。

  2. 主机的设备驱动将IP多播地址转换为相应的以太网多播地址,并发送数据。

  3. 接收端的接收程序,先加入一个多播组,让驱动设备能够接收这些数据报。

  4. 当以太网以多播形式接收数据后,根据地址映射关系,传送给IP层相应的多播进程处理。

    多个物理网络中的IP多播过程
    比较复杂,需要使用支持多播的路由器,不太懂略。

IGMP协议

前面提到了多播的实现原理是利用多播组,那么主机如何加入或撤出多播组,多播组的状态如何维护?这就需要用到IGMP协议。

IGMP:Internet Group Management Protocol 解决互联网中多播组成员的加入或撤出,多播组状态维护的问题

多播工作的两个阶段

1 加入多播组:IGMP报告:主机A要加入一个多播组时,向多播地址发出一个IGMP报文,表明要成为组成员,本地多播路由收到该报文后,将该成员关系转发给互联网上的多播路由器,告诉大家有个B…站用户打不过就加入我们了,以后大家收到这个多播组的信息就传一份给他。

2 维护多播组:IGMP查询:A主机撤出多播组时,可以报告离开或不报告,多播组中成员是动态的。为了及时掌握组中的成员情况,多播路由器对所以多播组不断发出IGMP查询报文,问谁还在啊?还需要我给你转发多播数据报吗?根据组中各主机的响应判断还有哪些“活跃成员”,并将还存在的成员转告路由器,不活跃的成员就不再给他转发信息了。

本篇博客只是自己对课程学习的一些笔记和总结,大部分内容参考自**《计算机网络》**第七版,谢希仁编著。

如有出错(非常大可能会出错哈哈),欢迎指正!

完…

文章作者: luo
文章链接: https://luo41.top/2021/05/31/《计算机网络》网络层/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 luo's Blog