跳转至

第四章网络层

大纲

网络层的功能 异构网络互联;路由与转发;SDN基本概念(22年新增);拥塞控制
路由算法 静态路由与动态路由;距离向量路由算法;
链路状态路由算;层次路由
IPv4 IPv4 分组;IPv4地址与NAT;子网划分、路由聚集、子网码与CIDR;
ARP协议、DHCP协议与ICMP协议
IPv6 IPv6 的主要特点;IPv6地址
路由协议 自治系统;域内路由与域间路由;RIP路由协议;OSPF路由协议;BGP路由协议
IP多播 多播的概念;IP多播地址
移动IP 移动IP的概念;移动IP通信过程
网络层设备 路由器的组成和功能;路由表与路由转发

历年考频

1723998752850-88d5809d-f9d4-42f0-8a63-602011713dc9.png

4.1 网络层的功能

  • 概述: 网络层提供主机到主机的通信服务,主要任务是将分组从源主机经过 多个网络 和 多段链路 传输到目的主机。

       该任务可划分为<strong>分组转发</strong>和<strong>路由选择</strong>两种重要功能。传输单位:<strong>数据报</strong>
    
  • 不同模型网络层功能对比

OSI OSI主张在网络层使用面向连接的虚电路服务,认为应由网络自身来保证通信的可靠性。

TCP/IP
在TCP/IP体系结构中,网络层向上只提供简单灵活的、 无连接的、尽最大努力交付 的数据报服务
(所传送的分组可能出错、丢失、重复、失序或超时),通信的可靠性可以由更高层的传输层来负责。(其核心思想是应由用户主机来保证通信的可靠性)

4.1.1 异构网络互连

1724000124687-47b76884-11af-4dc3-aa10-5f0994be64ab.png

异构网络:因特网是由全世界范围内数以百万计的网络通过路由器互连起来的。这些网络的拓扑结构、寻址方案、性能以及所使用的网络协议都不尽相同,这是由用户需求的多样性造成的,没有一种单一的网络能够适应所有用户的需求。

要将众多的异构型网络都互连起来,并且能够互相通信,则会面临许多需要解决的问题,如下:

不同的网络接入机制;不同的差错恢复方法;不同的路由选择技术;不同的寻址方案;不同的最大分组长度;不同的服务(面向连接服务和无连接服务)。

网络互连:

  • 定义1:指将两个以上的计算机网络,通过一定的方法,用一些中继系统(中间设备)相互连接起来,以构成更大的网络系统。

中继系统:当使用物理层或数据链路层的中继系统时,只是把一个网络扩大了,而从网络层的角度看,它仍然是同一个网络,一般并不称为网络互连。

  • 定义2:网络互连通常是指用路由器进行网络连接和路由选择。路由器是一台专用计算机,用于在互联网中进行路由选择。(由于历史原因,许多有关TCP/IP的文献也将网络层的路由器称为网关。)

路由器功能:通常是指用路由器进行网络连接和路由选择(路由器是一台专用计算机,用于在互联网中进行路由选择)

  • (TCP/IP体系结构中的)虚拟互连网络:又称逻辑互连网络,意思是互连起来的各种物理网络的异构性本来是客观存在的,但是通过IP协议就可使这些性能各异的网络在网络层上看起来像是一个统一的网络。(简称IP网络)

使用IP网络的好处:当IP网上的主机进行通信时,就好像在单个网络上通信一样,而看不见互连的各个网络的具体异构细节(如具体的编址方案、路由选择协议等)。

1724000530293-37ce2097-f823-4a6a-9899-286502ff6562.png

中继系统:按所处层次分为四类

物理层中继系统 数据链路层中继系统 网络层中继系统 网络层以上的中继系统
转发器,集线器 网桥或交换机 路由器 网关

4.1.2 分组转发和路由选择

网络层的主要任务就是将分组从源主机经过多个网络和多段链路传输到目的主机,可以将该任务划分为分组转发和路由选择两种重要的功能。

1724601487339-7048f9b2-1d25-48bb-b10a-257a5860758b.png

  1. 路由选择: 根据路由协议构造 路由表,同时经常或定期地与相邻路由器交换信息,获取网络最新拓扑,动态更新维护路由表,以决定分组到达目的地结点的最优路径。(确定哪一条路径)
  2. 分组转发 指路由器根据转发表将分组从合适的端口转发出去。(当一个分组到达时所采取的动作)
  3. 区分点 : 路由表是根据路由选择算法得出的,而转发表是从路由表得出的。转发表的结构应当使查找过程最优化,路由表则需要最优化网络拓扑变化的计算。(在讨论路由选择的原理时,往往不区分转发表和路由表,而笼统地使用路由表一词)

4.1.3 网络层提供的两种服务

分组交换网根据其通信子网向端点系统提供的服务,还可进一步分为面向连接的虚电路服务和无连接的数据报服务。这两种服务方式都是由网络层提供的。

4.1.3.1 面向连接的虚电路服务

(虚电路的特性 2020年真题)

  • 概述:在虚电路方式中,当两台计算机进行通信时,先建立网络层的连接,建立一条逻辑上的虚电路(Virtual Circuit,VC),连接一旦建立,就固定了虚电路对应的物理路径。

虚电路表示这是一条逻辑上的连接,分组沿着这条逻辑连接按照存储转发方式传送,而不是真正建立了一条物理连接。而采用电路交换的电话通信,则是先建立一条真正的物理连接。因此,分组交换的虚连接与电路交换的连接只是类似,但并不完全一样。

  • 每次建立虚电路时,将一个未用过的虚电路号(VCID)分配给该虚电路,以区别于本系统中的其他虚电路,然后双方就沿着已建立的虚电路传送分组。
  • 分组的首部仅在连接建立时使用完整的目的地址,之后每个分组的首部只需携带这条虚电路的编号。
  • 在虚电路网络中的每个结点上都维持一张虚电路表,表中每项记录一个打开的虚电路的信息

包括在接收链路和发送链路上的虚电路号、前一结点和下一结点的标识,它是在虚电路建立过程中确定的

【工作原理和图解】:

(与电路交换类似)通信过程分为三个阶段:虚电路建立、数据传输与虚电路释放。

  1. 数据传输前,主机A与主机B先建立连接,主机A发出“呼叫请求”分组,该分组通过中间结点送往主机B,若主机B同意连接,则发送“呼叫应答”分组予以确认。
  2. 虚电路建立后,主机A和主机 B就可相互传送数据分组。
  3. 传送结束后,主机A通过发送“释放请求”分组来拆除虚电路,逐段断开整个连接。

1724001810568-04a9ce81-b841-4cb3-835d-f7e217586d9d.png

1724002305297-8f5a4644-2f4c-4b38-b66a-640dd1dce7cb.png

4.1.3.2 无连接的数据报服务

  • 网络在发送分组前不需要先建立连接:源主机的高层协议将报文拆成若干较小的数据段,并加上地址等控制信息后构成分组。中间结点存储分组很短一段时间,找到最佳的路由后,尽快转发每个分组。且网络层不提供服务质量的承诺。
  • 造价低廉:因为网络不提供端到端的可靠传输服务,所以这就使得网络中的路由器比较简单,大大降低了网络造价。(与电话网络相比)。
  • 好处:网络的造价大大降低、运行方式灵活、能够适应多种应用。

【工作原理和图解】:

假定主机A向主机B发送分组。

  1. 主机A先将分组逐个发往与它直接相连的交换结点A,交换结点A缓存收到的分组。
  2. 然后查找自己的转发表。因为不同时刻的网络状态不同,所以转发表的内容可能不完全相同,所以有的分组转发给交换结点C,有的分组转发给交换结点D。(选最佳路由)
  3. 网络中的其他结点收到分组后,类似地转发分组,直到分组最终到达主机B。
  4. 备注:当分组正在某一链路上传送时,分组并不占用网络其他部分的资源。因为采用存储转发技术,资源是共享的,所以主机A在发送分组时,主机B也可同时向其他主机发送分组。

1724602436313-10af816a-c9c9-4ac3-9f97-825a6af0da73.png

这种设计思想的运行方式灵活、能够适应多种应用。因特网能够发展到今日的规模,充分证明了当初采取这种设计思想的正确性。

4.1.3.3 数据报服务和虚电路服务的比较

对比方面 虚电路服务 数据报服务
核心思想 可靠通信应当由网络自身来保证 可靠通信应当由用户主机来保证
连接 必须建立网络层连接 不需要建立网络层连接,可随时发送/接收分组
可靠性 这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组最终正确(无差错按序到达、不丢失、不重复)到达接收方。 网络尽最大努力交付,传输不保证可靠性,所以分组可能出错或丢失;网络为每个分组独立地选择路由,转发的路径可能不同,因此分组不一定按序到达目的结点。
目的地址 仅在连接建立阶段使用,之后每个分组使用短的虚电路号 每个分组都必须携带完整的目的地址,以便可以独立传输。
时延 虚电路通信链路的建立和拆除需要时间开销。 当分组在交换结点存储转发时,会带来一定的时延。当网络发生拥塞时,时延会大大增加,交换结点还可根据情况丢弃部分分组。
分组转发 属于同一条虚电路的分组均按同一路由进行转发 每个分组可走不同的路由
节点故障 当网络中的某个结点或某条链路出现故障而彻底失效时,所有经过该结点或该链路的虚电路将遭到破坏。 出故障的节点可能会丢失分组,一些路由可能会发生变化;但网络具有冗余路径,当某个交换结点或一条链路出现故障时,可相应地更新转发表,寻找另一条路径转发分组,对故障的适应能力强 。
空间开销 分组首部不包含目的地址,包含的是虚电路号,相对于数据报方式,其开销小。 发送的分组中要包括发送方和接收方的完整地址,因此开销更大
分组顺序 总是按发送顺序到达目的主机 到达目的主机时不一定按发送顺序
差错处理和流量控制 可由分组交换网负责,也可由用户主机负责 由用户主机进行流量控制,不保证数据报的可靠性

4.1.4 软件定义网络SDN

4.1.4.1 SDN概述(网络层的数据层面和控制层面)

  1. 基本概念

_软件定义网络(Software Defined Network,SDN)_是一种创新网络架构,它采用集中式的控制平面和分布式的数据平面 (也称转发平面),两个平面相互分离。控制平面利用控制-数据接口对数据平面上的路由器进行集中式控制(控制路由选择),方便软件来控制网络。

备注:传统网络中的路由器既有转发表又有路由选择软件,即既有数据平面又有控制平面

  1. 传统的网络层

路由器的功能:为主机间的通信提供转发服务;路由选择

路由器之间传送的信息:主机间的分组;路由信息

网络层的数据层面和控制层面

1724604225673-b386dec5-a99f-401b-a266-9aa43cf38d89.png

  1. SDN模式示例
  2. 在SDN体系结构中,路由器中的路由软件都不存在了。因此,路由器之间不再交换路由信息
  3. 在控制层面中,有一个在逻辑上集中的远程控制器。逻辑上集中的远程控制器在物理上可由不同地点的多个服务器组成。
  4. 远程控制器掌握各主机和整个网络的状态,为每个分组计算出最佳路由,为每一个路由器生成其正确的转发表。路由器的工作很单纯,即收到分组、查找转发表、转发分组。
  5. SDN这种新型网络体系结构的核心思想: 把网络的控制层面和数据层面分离,而让控制层面利用软件来控制数据层面中的许多设备。
  6. 这样的网络又变成集中控制的,而本来互联网是分布式的。

SDN并非现在就要把整个因特网都改造成集中控制模式,因为这显然是不现实的。但在某些具体条件下,尤其是一些大型数据中心之间的广域网,如果采用SDN模式来建造,就可以提高网络的运行效率,还可以获得更好的经济效益。

1724604422583-6d5e3b0b-3aa4-4494-99b7-a7892c8fd9a3.png1724603962803-e35f490b-385a-4f4f-b7fc-45e83d13ff81.png

4.1.4.2 OpenFlow协议

  1. OpenFlow协议概述
  2. OpenFlow协议是一个得到高度认可的标准,在讨论SDN时往往与OpenFlow一起讨论。
  3. OpenFlow协议可被看成是SDN体系结构中控制层面与数据层面之间的通信接口。
  4. OpenFlow协议使得控制层面的控制器可以对数据层面中的物理设备进行直接访问和控制。

1724604824257-5d002399-bdd6-4685-9142-0da616a250f9.png

  1. 传统意义上的数据层面的任务

根据转发表转发分组, 转发分组分为以下两个步骤

1. 进行“<strong>匹配</strong>”:查找转发表中的<strong>网络前缀</strong>,进行<strong>最长前缀匹配</strong>。
2. 执行“<strong>动作</strong>”:把分组从匹配结果指明的接口<strong>转发</strong>出去。

1724607508860-d81667eb-c6ef-4ae2-aa59-2f2eafcb18c2.png

  1. SDN的广义转发分为以下两个步骤:
    1. 进行“匹配”:能够对网络体系结构中各层(数据链路层、网络层、运输层)首部中的字段进行匹配。
    2. 执行“动作”:不仅转发分组,还可以负载均衡、重写IP首部(类似NAT路由器中的地址转换)、人为地阻挡或丢弃一些分组(类似防火墙一样)。
  2. OpenFlow交换机和流表

1724607827748-ad70f120-ef24-4adc-94b0-90f28d282c85.png

  • 在SDN的广义转发中,完成“匹配+动作”的设备并不局限在网络层工作,因此不再称为路由器,而称为“OpenFlow交换机”或“分组交换机”,或更简单地称为“交换机”。
  • 相应的,在SDN中取代传统路由器中转发表的是“流表(Flow Table)”。
    • 一个流就是穿过网络的一种分组序列,而在此序列中的每个分组都共享分组首部某些字段的值。例如,某个流可以是具有相同源IP地址和目的IP地址的一连串分组。
    • OpenFlow交换机中的流表是由SDN远程控制器来管理的。SDN远程控制器通过一个安全信道,使用OpenFlow协议来管理OpenFlow交换机中的流表。
  • 每个OpenFlow交换机必须有一个或多个流表。
  • 每一个流表可以包含多个流表项。
  • 每个流表项包含三个字段:首部字段值(或称匹配字段)、计数器、动作。
  • 首部字段值字段包含有一组字段,用来使入分组(Incoming Packet)的对应首部与之匹配,因此又称为匹配字段。匹配不上的分组就被丢弃,或被发送到SDN远程控制器做更多的处理。
  • 在OpenFlow交换机中,既可以处理数据链路层的帧,也可以处理网际层的IP数据报,还可以处理运输层的TCP或UDP报文。
  • 计数器字段是一组计数器:
    • 记录已经与该流表项匹配的分组数量的计数器;
    • 记录该流表项上次更新到现在经历时间的计数器。
  • 动作字段是一组动作,当分组匹配某个流表项时,执行该流表项中动作字段指明的以下某个或多个动作:
    • 把分组转发到指明的端口
    • 丢弃分组
    • 把分组进行复制后再从多个端口转发出去
    • 重写分组的首部字段(包括数据链路层、网际层以及运输层的首部)

1724607963943-9c1b54c6-cfb2-4064-bc5d-3573522b053f.png

示例:简单转发


4.1.4.3 SDN体系结构

  • 对上层应用的开发者,SDN 提供的编程接口称为北向接口,北向接口提供了一系列丰富的API。
  • SDN 控制器和转发设备建立双向会话的接口称为南向接口,通过不同的南向接口协议,SDN控制器就可兼容不同的硬件设备,可在设备中实现上层应用的逻辑。
  • SDN控制器集群内部控制器之间的通信接口称为东西向接口,用于增强整个控制平面的可靠性和可拓展性。
  • 开发者可以在此基础上设计自己的应用,而不必关心底层的硬件细节。
  • 四个关键特征
    1. 基于流的转发
    2. 数据层面与控制层面分离
    3. 位于数据层面分组交换机之外的网络控制功能
    4. 可编程的网络

1724037879402-f904290b-df1a-4c20-8788-e257826198b7.pngSDN控制器

  1. SDN的优点
  2. 全局集中式控制和分布式高速转发,既利于控制平面的全局优化,又利于高性能的网络转发。
  3. 灵活可编程与性能的平衡,控制和转发功能分离后,使得网络可以由专有的自动化工具以编程方式配置。
  4. 降低成本,控制和数据平面分离后,尤其是在使用开放的接口协议后,就实现了网络设备的制造与功能软件的开发相分离,从而有效降低了成本。
  5. 控制与转发功能分离/控制平面集中化/接口开放可编程
  6. SDN的问题
  7. 安全风险,集中管理容易受攻击,若崩溃,则整个网络会受到影响。
  8. 瓶颈问题,原本分布式的控制平面集中化后,随着网络规模扩大,控制器可能成为网络性能的瓶颈。

4.1.5 拥塞控制

拥塞定义:因出现过量的分组而引起网络性能下降的现象

判断拥塞的方法? 观察网络的吞吐量与网络负载的关系:

  • 若随着网络负载的增加,网络的吞吐量明显小于正常的吞吐量,则网络就可能已进入轻度拥塞状态;
  • 若网络的吞吐量随着网络负载的增大而下降,则网络就可能已进入拥塞状态。

拥塞控制

  1. 主要解决的问题:如何获取网络中发生拥塞的信息,从而利用这些信息进行控制,以避免因拥塞而出现分组的丢失。
  2. 作用:确保网络能够承载所达到的流量
  3. 解决方法:
  4. 开环控制。在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。
    • 这是一种静态 的预防方法,一旦启动,中途就不再需要修改。
    • 开环控制手段包括1.确定何时可接收新流量2.何时可丢弃分组及丢弃哪些分组3.确定何种调度策略且在做决定时不考虑当前网络的状态。
  5. 闭环控制。事先不考虑有关发生拥塞的各种因素,采用监测网络系统去监视,及时检测哪里发生了拥塞,然后将拥塞信息传到合适的地方,以便调整网络系统的运行,并解决出现的问题
    • 闭环控制是基于反馈环路的概念,是一种动态 的方法。
  6. 与流量控制的区别:流量控制往往是指在发送方和接收方之间的点对点通信量的控制。流量控制所要做的是抑制发送方发送数据的速率,以便使接收方来得及接收。

4.2 IPv4

1724656745536-db6ced20-8cb1-4017-bb15-5ac36e358627.png

4.2.1 IPv4数据报的首部格式

  1. IPv4定义:现在普遍使用的网际协议(Intemet Protocol,IP)。IP定义数据传送的基本单元一IP分组及其确切的数据格式。

IP也包括一套规则,指明分组如何处理、错误怎样控制。特别是IP还包含非可靠投递的思想,以及与此关联的路由选择的思想。不能保证ip分组不丢失

  1. IPv4分组的格式
  2. IP数据报格式

1724041099979-03cb9be7-2199-4a5c-bbea-1892591a3e23.png

一个IP分组(或称IP数据报)由首部和数据部分组成。

  • 首部组成
    • 前一部分的长度固定,共20B,是所有IP分组必须具有的。
    • 在首部固定部分的后面是一些可选字段,其长度可变,用来提供错误检测及安全等机制。实际很少使用
    • 填充:当首部长度(20字节固定部分+可变部分)的长度不是4字节整数倍时,填充相应数量的全0字节,以确保IPv4数据报的首部长度是4字节的整数倍。
  • IP地址通常以16进制出现,注意与10/2进制之间的转换
  • 熟记首部长度、总长度、片偏移,它们的基本单位,分别为4B、1B、8B

口诀:一种八片首饰

【部分重要字段含义】

版本 占4位。指IP的版本,IPv4数据报中该字段值是4。通信双方使用的IP协议的版本必须一致
首部长度 占4位(此字段二进制可表示0~15)。以4B为单位,用来表示IPv4数据报的首部长度
+ 最小取值为二进制的0101,即十进制的5,再乘以4字节单位,表示IPv4数据报首部只有20字节固定部分。
+ 最大取值为二进制的1111,即十进制的15,再乘以4字节单位,表示IPv4数据报首部包含20字节固定部分和最大40字节可变部分。
+ 注意:IP首部前两个字节往往以0x45开头,解题时可用于定位IP数据报的开始位置。
总长度 占16位。指首部和数据载荷的长度和, 单位为字节B。
+ 数据报的最大长度为\(2^{16}-1=65535B\)。
+ 以太网帧的最大传送单元(MTU)为1500B,因此当一个IP数据报封装成帧时,数据报的总长度(首部加数据)一定不能超过下面的数据链路层的 MTU 值。
标识 占16位。它是一个计数器,每产生一个数据报就加1,并赋值给标识字段。
+ 它并不是“序号”(因为IP是无连接服务)。
+ 当一个数据报的长度超过网络的MTU时,必须分片,此时每个数据报片都复制一次标识号,以便能正确地重装成原来的数据报。(属于同一数据报的各分组应该具有相同的标识)
标志Flag 占3位。
+ 标志字段的最低位为MF(More Fragment),MF=1表示后面还有分片,MF=0表示最后一个分片。
+ 标志字段中间的一位是DF(Don’t Fragment),只有当DF=0时才允许分片。
+ 最高位为保留位,必须设置为0
片偏移 占13位。它指出较长的数据报在分片后,某片在原数据报中的相对位置,片偏移以8B为偏移单位。
除最后一个分片外,每个分片的长度一定是8B的整数倍。
生存时间TTL 占8位。数据报在网络中可通过的路由器数的最大值。
+ 标识数据报在网络中的寿命,防止被错误路由的IPv4数据报无限制地在因特网中兜圈。
+ 生存时间字段后来改为以“跳数”为单位,路由器收到待转发的IPv4数据报时,将其首部中的该字段的值减1,若结果不为0就转发,否则就丢弃。
协议 占8位。用来指明IPv4数据报的数据载荷是何种协议数据单元PDU。
1724742998768-e55f4821-882e-436c-985f-677f5fdc6895.png
首部检验和 占16位。它只检验数据报/分组的 首部 ,但不包括数据部分。
+ 这是因为数据报每经过一个路由器,都要重新计算首部检验和(有些字段,如生存时间、总长度、标志、片偏移、源/目的MAC地址都可能发生变化)。不检验数据部分可减少计算的工作量。
> 由于网际层并不向其高层提供可靠传输的服务,并且计算首部检验和是一项耗时的操作,因此在IPv6中,路由器不再计算首部检验和,从而更快转发IP数据报。
源IP地址 占4B,标识发送方的IP地址。
目的IP地址 占4B,标识接收方的IP地址。

IP数据报分片

1724688255077-bcff42ea-3dd4-4a68-82de-c52c51456014.png

  1. 为什么要分片
  2. 背景:IP数据报被封装在链路层的帧中,因此链路层的MTU(最大传送单元) 严格地限制了IP数据报的长度。(常考以太网的MTU为1500B。)

1724741991480-a3fa6ddf-54b2-4bf3-9bc5-2017cda5ca10.png

  • MTU:在IP数据报的源与目的地路径上的各段链路可能使用不同的链路层协议,有不同的 MTU。以太网的MTU为1500B,而许多广域网的MTU不超过576B。以太网的MTU(最大传送单元)是1500字节
  • 分片:当IP数据报的总长度大于链路MTU时,就需要将IP数据报中的数据分装在多个较小的IP数据报中,这些较小的数据报称为片。
  • 传输过程:在传输过程中仍然存在分片的可能(不同网络的MTU可能不同),每个分片都将独立地传输到目的地,其间有可能会经过不同的路径,甚至不一定以原先的次序到达,而最后在目的端主机分组才能被重组
  • 片的重组
  • 重组参与的字段:目的主机使用IP首部中的标识、标志和片偏移字段来完成对片的重组。(片在目的地的网络层被重新组装)
  • 重组的方法:当一个路由器需要将一个数据报分片时,形成的每个数据报(即片)都具有原始数据报的标识号。当目的主机收到来自同一发送主机的一批数据报时,它可通过检查数据报的标识号来确定哪些数据报属于同一个原始数据报的片。当MF=1时,表示相应的原始数据报还有后续的片;当MF=0时,表示该数据报是相应原始数据报的最后一个片。目的主机在对片进行重组时,使用片偏移字段来确定片应放在原始IP数据报的哪个位置。
  • 丢弃分组:DF=1时不能分片,分组的长度又超过MTU时,丢弃该分组,并用ICMP差错报文向源主机报告
  • 分片举例:

某个IPv4数据报总长度为3820字节,采用20字节固定首部,根据数据链路层要求,需要将该IPv4数据报分片为长度不超过1420字节的数据报片。

1724685004116-293e9849-83cd-45ee-813c-0fd609bb1cb3.png

【2021年 题36】若路由器向MTU=800B的链路转发一个总长度为1580B的IP数据报(首部长度为20B)时,进行了分片,且每个分片尽可能大,则第2个分片的总长度字段和MF标志位的值分别是( )。

A. 796,0 B. 796,1 C. 800,0D. 800,1

解析:

1724742478978-5bef0c14-16a6-4620-84aa-5759457e5420.png

1724742503129-b7fea082-62f9-4c37-a90a-c0d19abeb6c6.png

首部检验和的计算方法

1724743590646-3727a7d3-ca26-44f3-bd73-665a11e98e10.png

(1)发送方先把IPv4数据报首部划分为若干个16比特字的序列,并把首部检验和字段的值置为全0。用反码算术运算把所有16比特字相加后,将得到的和的反码写入首部检验和字段。

(2)接收方收到IPv4数据报后,将首部的所有16比特字再使用反码算术运算相加一次。将得到的和取反码,即得出接收方检验和的计算结果。若在IPv4数据报传输过程中其首部没有产生差错,则此结果必为0,保留该IPv4数据报。否则即认为出现差错,将该IPv4数据报丢弃。

上述检验和的计算方法 不仅用于IP协议,还用于运输层的用户数据报协议UDP和传输控制协议TCP ,常被称为因特网检验和(Internet Checksum)。这种检验和的检错性能虽然不如CRC,但更易用软件实现。

首部检验和计算的重点在于二进制反码求和的运算

两个数进行二进制反码求和的运算规则是从低位到高位逐列进行计算:

  • 0和0相加是0
  • 0和1相加是1
  • 1和1相加是0,但要产生一个进位1,加到下一列
  • 若最高位相加后产生进位,则最后得到的结果要加1

【示例】

image
image
image
image


4.2.2 IPv4地址

  1. 定义:IPv4地址是给因特网(Internet)上的每一个主机(或路由器)的每一个接口分配的一个在全世界范围内唯一的32比特的标识符。
  2. 发展历史:

IPv4地址的编址方法经历了三个历史阶段

  1. IPv4地址的表示方法:由于IPv4地址由32比特构成,不方便阅读、记录以及输入等,因此IPv4地址采用点分十进制表示方法以方便用户使用。

1724657207185-cc4bb2ca-db07-4ddd-81cb-80a88d81b9ae.png

  1. 组成:由网络号和主机号两部分组成。即IP地址:={<网络号>,<主机号>}。一个IP地址在整个互联网范围内是唯一的。
网络号 主机号
+ 标志主机(或路由器)的接口所连接到的网络
+ 同一个网络中,不同主机(或路由器)的接口的IPv4地址的网络号必须相同,表示它们属于同一个网络。
+ 标志主机(或路由器)的接口
+ 同一个网络中,不同主机(或路由器)的接口的IPv4地址的主机号必须各不相同,以便区分各主机(或路由器)的接口。

1724657445288-9c74d87f-1e90-487b-90b1-256fc545f3d8.png

  1. IPv4地址的分类编址方法(早期)

1724657661480-a970b60d-dfe8-42c6-a131-1e893affda08.png

Info

  • A类、B类和C类地址都是单播地址,只有单播地址可以分配给网络中的主机(或路由器)的各接口。
  • 主机号为“全0”的地址是网络地址,不能分配给主机(或路由器)的各接口。
  • 主机号为“全1”的地址是广播地址,不能分配给主机(或路由器)的各接口。

1724657957762-77350118-df4d-4d44-9d18-454139ce3cd1.png

  • 最小网络号为0,表示本网络,不能指派;
  • 最小可指派的网络号为1,网络地址为1.0.0.0
  • 最大网络号为127,作为本地环回测试地址,不能指派
    • 最小的本地环回测试地址为127.0.0.1
    • 最大的本地环回测试地址为127.255.255.254
  • 最大可指派的网络号为126,网络地址为126.0.0.0
  • 可指派的A类网络数量为\(2^{(8−1)}−2=126\),(减2是去掉最小网络号0和最大网络号127)
  • 每个A类网络中可分配的地址数量为\( 2^{24−2}=16777214 \),减2是去掉主机号为全0的网络地址和全1的广播地址

1724659346783-5e991298-bf87-4ff5-be11-854e15d583f2.png

  • 最小可指派的网络号为128.0 网络地址为128.0.0.0

  • 最大可指派的网络号为191.255 网络地址为191.255.0.0

  • 可指派的B类网络数量为\(2^{(16−2)}=16384\)

  • 每个B类网络中可分配的地址数量为\( 2^{16−2}=65534 \)(减2是去掉主机号为全0的网络地址和全1的广播地址)

1724659502515-40ef337d-a56f-4e4d-8a08-5aaf7a840dd5.png

  • 最小可指派的网络号为192.0.0,网络地址为192.0.0.0

  • 最大可指派的网络号为223.255.255,网络地址为223.255.255.0

  • 可指派的C类网络数量为\( 2^{24−3}=2097152 \)
  • 每个C类网络中可分配的地址数量为\( 2^{8−2}=254 \)(减2是去掉主机号为全0的网络地址和全1的广播地址)

1724659654960-aa3d8846-5c67-4991-a107-fe83d16b3c65.png

1724659666541-e06dce5a-802e-4629-ab23-77cc7eb0d225.png

小练习,填表

1724660560373-e290b2e8-705e-4e52-b58b-c3fc3c3e9d1c.png

方法:

  1. 根据地址左起第一个十进制数的值,可以判断出地址类别:小于127为A类;128~191为B类;192~223为C类。
  2. 根据地址类别,可以找出地址 中的网络号部分和主机号部分:A类:网络号为左起第一个字节 B类:网络号为左起前两个字节 C类:网络号为左起前三个字节
  3. 以下三种情况的地址不能分配 给主机或路由器的接口:A类网络号0和127;主机号为全0,这是网络地址;主机号为全1,这是广播地址。
答案

题图

一般不使用的特殊IPv4地址(2017年考过)

网络号 主机号 IP地址 作为源地址 作为目的地址 用途
全0 全0 0.0.0.0 可以 不可以 + 在本网络的本主机(例如DHCP协议)
+ 路由表中用于表示默认路由(表示整个Internet网络)
全0 host-id 0.host-id 可以 不可以 在本网络上的某台特定主机host-id
全1 全1 255.255.255.255 不可以 可以 只在本网络上进行广播(各路由器均不转发),又称受限广播地址
net-id 全0 + A类:net-id.0.0.0
+ B类:net-id.0.0
+ C类:net-id.0
不可以 不可以 网络地址,表示一个网络(主机号为0表示本网络自身)
net-id 全1 + A类:net-id.255.255.255
+ B类:net-id.255.255
+ C类:net-id.255
不可以 可以 对网络net-id上的所有主机进行广播,又称直接广播地址(主机号全为1表示本网络的广播地址)
127 非全0或全1的任何数 127.0.0.1~127.255.255.254 可以 可以 用于本地软件环回测试(127.x.x.x此地址表示任意主机自身,目的地址为环回地址的IP数据报永远不会出现在任何网络上)

IP地址特点:

  • 只配网络号:IP地址管理机构只分配网络号,主机号由得到该网络的单位自行分配,方便IP地址管理;
  • 只转发网络号:路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目标主机号),从而减小了路由表所占的存储空间。
  • IP地址个数:IP地址是标志一台主机(或路由器)和一条链路的接口。当一台主机同时连接到两个网络时,该主机就必须同时具有两个相应的IP地址,其网络号必须是不同的。因此路由器至少应具有两个或两个以上的IP地址,每个端口都有一个不同网络号的IP地址。
  • 同网同域:用转发器或桥接器(网桥等)连接的若干LAN仍然是同一个网络(同一个广播域),故LAN中所有主机的IP地址的网络号必须相同,但主机号必须不同。
  • 众网平等:在IP地址中,所有分配到网络号的网络(无论是LAN.还是WAN)都是平等的。
  • 同网号同:在同一个局域网上的主机或路由器接口的IP地址中的网络号必须是相同的。
  • 备注:近年来,因为广泛使用无分类IP地址进行路由选择,这种传统分类的IP地址已成为历史。

IPv4数据传输原理(考虑NAT)

  • 如果有内网的ip地址发到内网的路由器,路由器会把原ip地址换成自己的,如果不换的,外网的网关就是无法识别而丢弃
  • 访问外网,主机的网关需要和nat路由器的网关一样
  • 访问内网,也需要知道路由器,主机的网找不到就会去找路由器

1724076764287-294c8093-b32a-4b84-b1c3-eafecb9c4818.png

画板

IP相关的协议/操作

地址解析协议ARP(Address Resolution protocol) 作用:完成IP地址到MAc地址的映射

反向地址解析协议RARP(Reverse Address Resolution protocol) 作用:完成MAC地址到IP地址的映射

动态主机配置协议DHCP(Dynamic Host Configuration Protocol) 作用:用于给主机动态的分配IP地址

网络地址转换NAT(Network AddressTranslation)

4.2.3 虚拟专用网VPN和NAT地址转换

4.2.3.1 虚拟专用网

虚拟专用网(Virtual Private Network,VPN):

  • 利用公用的因特网作为本机构各专用网之间的通信载体,这样形成的网络又称为虚拟专用网。
  • 给专用网内各主机配置的IP地址应该是该专用网所在机构可以自行分配的IP地址,这类IP地址仅在机构内部有效,称为专用地址 (Private Address),不需要向因特网的管理机构申请。
  • [RFC 1918]规定了以下三个CIDR地址块中的地址作为专用地址:

1724775724955-1f6259b2-4edb-4c9f-93de-a555d6abcab5.png

Info

在因特网中的所有路由器,对目的地址是专用地址的IP数据报一律不进行转发,这需要由因特网服务提供者ISP对其拥有的因特网路由器进行设置来实现。

1724079327225-50e170c7-2513-4ddb-9e32-af0dbe82d773.png

出于安全考虑,专用网内的各主机并不应该直接“暴露”于公用的因特网上。因此,给专用网内各主机配置的IP地址应使各主机在专用网内可以相互通信,而不能直接与公用的因特网通信。

1724079573953-6eb3cdb1-1431-4b1c-88cc-fb72fa172263.png

1724079697637-35696a0a-9135-4f53-b402-fffba4e00622.png

1724079742348-23a34b9d-f61c-4025-a021-2f20367bac44.png

IP数据报在因特网中可能要经过多个网络和路由器,但从逻辑上看,路由器R1和R2之间好像是一条直通的点对点链路,因此也被称为IP隧道技术。

1724079828128-f54d2a3d-3b16-47f1-9e00-104fd2400261.png

本例所示的是同一机构内不同部门的内部网络所构成的VPN,又称为内联网VPN。

有时,一个机构的虚拟专用网VPN需要某些外部机构(通常是合作伙伴)参加进来,这样的VPN就称为外联网VPN。

在外地工作的员工需要访问公司内部的专用网时,只要在任何地点接入因特网,运行驻留在员工PC中的VPN软件,在员工的PC和公司的主机之间建立VPN隧道,就可以访问专用网中的资源,这种虚拟专用网又称为远程接入VPN。

4.2.3.2 网络地址转换(NAT)

定义:网络地址转换(NAT)是指:通过将专用网络地址转换为公用地址,从而对外隐藏内部管理的IP地址。其作用是连接内网和外网,NAT的表项需要由管理员来添加

优点:

  • 节省消耗:专用网只需一个全球IP 地址就可与互联网连通,且专用网本地IP地址是可重用的,大大省了IP地址的消耗
  • 降低安全风险:隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。

私有IP地址:

  • 背景:为了网络安全,划出了部分IP地址为私有IP地址。私有IP地址只用于LAN,不用于WAN连接(因此私有IP地址不能直接用于Intemet,必须通过网关利用NAT把私有IP地址转换为Intemet中合法的全球IP地址后才能出现在Internet上),并且允许私有IP地址被LAN重复使用。
  • 说明:在互联网中的所有路由器,对目的地址是私有地址的数据报一律不进行转发,这种采用私有IP地址的互联网络称为专用互联网或本地互联网。私有IP地址也称可重用地址。
  • 划分:划部分IP地址为私有IP地址,私有IP地址网段如下:
A类 1个A类网段 10.0.0.0~10.255.255.255
B类 16个B类网段 172.16.0.0~172.31.255.255
C类 256个C类网段 192.168.0.0~192.168.255.255

最基本的NAT方法

image
image
image
image

网络地址与端口号转换方法

  • 由于目前绝大多数基于TCP/IP协议栈的网络应用,都使用运输层的传输控制协议TCP或用户数据报协议UDP,为了更加有效地利用NAT路由器中的全球IP地址,现在常将NAT转换和运输层端口号结合使用。

当使用本地地址的主机和外界通信时,NAT路由器使用NAT转换表进行本地IP地址和全球IP地址的转换。表中存放着{本地IP地址:端口}到{全球IP地址:端口}的映射。通过这种映射方式,可让多个私有IP地址映射到一个全球IP地址。

- 这样就可以使内部专用网中使用专用地址的<strong>大量主机,共用NAT路由器上的1个全球IP地址</strong>,因而可以同时与因特网中的不同主机进行通信。
  • 将NAT和运输层端口号结合使用,称为网络地址与端口号转换(Network Address and Port Translation,NAPT)
    • 现在很多家用路由器将家中各种智能设备(手机、平板、笔记本电脑、台式电脑、物联网设备等)接入因特网,这种路由器实际上就是一个NAPT路由器,但往往并不运行路由选择协议。

image
image
image
image
image
image

  • 尽管NAT(和NAPT)的出现在很大程度上缓解了IPv4地址资源紧张的局面,但NAT(和NAPT)对网络应用并不完全透明,会对某些网络应用产生影响。
  • NAT(和NAPT)的一个重要特点就是通信必须由专用网内部发起,因此拥有内部专用地址的主机不能直接充当因特网中的服务器。

1724776501980-d0ab1901-b2d1-4d6e-a1ae-e9c910dc0d5f.png

  • 对于目前P2P这类需要外网主机主动与内网主机进行通信的网络应用,在通过NAT时会遇到问题,需要网络应用自身使用一些特殊的NAT穿透技术来解决。

NAT路由器的工作原理:

  • 假设用户主机10.0.0.1(随机端口3345)向Web服务器128.119.40.186(端口80)发送请求。
  • NAT 路由器收到IP分组后,为该IP分组生成一个新端口号5001,将IP分组的源地址改为138.76.29.7(即NAT路由器的全球IP地址),将源端口号改为5001。NAT路由器在NAT转换表中增加一个表项。
  • Web服务器并不知道刚抵达的IP分组已被NAT路由器改装,更不知道用户的专用地址,它响应的IP分组的目的地址是NAT路由器的全球IP地址138.76.29.7,目的端口号是5001。
  • 响应分组到达NAT路由器后,通过NAT转换表将IP分组的目的IP地址改为10.0.0.1,将目的端口号改为3345。

1724685176165-e02b01a4-5cb1-4dc5-bf1e-f5e90ccdc678.png

NAT转化流程

  • 下图有两个客户端192.168.1.10 和192.168.1.11与服务器183.232.231.172进行通信,并且这两个客户端的本地端口都是1025
  • 此时,两个私有IP都转换IP为公有地址120.229.175.121,但以不同的端口号作为区分,于是,生成一个NAT 路由器的转换表,该表可以正确地转换地址跟端口的组合,令客户端A、B能同时与服务器之间进行通信
  • 这种转换表在NAT 路由器上自动生成。
  • 例如,在TCP的情况下,建立TCP连接首次握手时的SYN包一经发出,就会生成这个表,后又随着收到关闭连接时发出FIN包的确认应答从表中被删除

1724776728117-0a61166d-d202-443f-89ef-1ca6997ae6a4.png

4.2.4 IPv4地址的子网划分与无分类编址方法

4.2.4.1 IPv4地址的划分子网编址方法

  1. 背景

1724662501830-3cc3e075-f5d2-4696-8398-533932b08bf8.png

随着更多的中小网络加入因特网,IPv4分类编址方法不够灵活、容易造成大量IPv4地址资源浪费的缺点就暴露出来了。

1724662624990-e0726422-1117-49fe-a5ab-23476689068f.png

申请新的网络号存在以下弊端:

  • 需要等待很长的时间,并且要花费更多的费用。
  • 即便申请到了两个新的网络号,其他路由器的路由表还需要新增针对这两个新的网络的路由条目
  • 浪费原来已申请到的B类网络中剩余的大量地址

如果可以从IPv4地址的主机号部分借用一些比特作为子网号来区分不同的子网,就可以利用原有网络中剩余的大量IPv4地址,而不用申请新的网络地址了。

1724662944133-a951f1ff-1a5f-43c8-8f1b-f43ac5b9c0e8.png

  1. 划分子网的定义:
  2. 在IP地址中又增加了一个“子网号字段”,使两级IP地址变成了三级IP地址。三级IP地址的结构:

IP地址:={<网络号>,<子网号>,<主机号>}。

  • 划分子网通过从网络的主机号借用若干比特作为子网号,从而使原来较大规模的网络细分为几个规模较小的网络,提高IP地址的利用率(子网是一个ip地址的集合,可以有很多主机号)

  • 划分子网的方法

  • 子网掩码可以表明分类IPv4地址的主机号部分被借用了几个比特作为子网号。
  • 与IPv4地址类似,子网掩码也是由32比特构成的。
    • 用左起多个连续的比特1对应IPv4地址中的网络号和子网号;
    • 之后的多个连续的比特0对应IPv4地址中的主机号。
  • 将划分子网的IPv4地址与相应的子网掩码进行逐比特的逻辑与运算,就可得到该IPv4地址所在子网的网络地址。

1724663318296-f777d74f-4a84-4d3b-9f33-fee36958279d.png

Info

只要给定了一个分类的IPv4地址及其相应的子网掩码,就可以得出子网划分的全部细节。

举例:已知某个网络的地址为218.75.230.0,使用子网掩码255.255.255.128对其进行子网划分,请给出划分细节。

1724663441403-c43a3661-a6ad-4516-8f5c-fcf1eb650deb.png

1724663782333-974bdaea-6d34-4b96-b8e5-26816f9a90b8.png

【2012年 题39】某主机的IP地址为180.80.77.55,子网掩码255.255.252.0,若该主机向其所在子网发送广播分组, 则目的地址可以是( )。

A. 180.80.76.0 B. 180.80.76.255 C. 180.80.77.255 D. 180.80.79.255

答案

题图


关于子网掩码

  • 默认子网掩码:现在的互联网标准规定:所有网络都必须使用子网掩码。若一个网络未划分子网,则该网络的子网掩码就使用默认子网掩码。A、B、C类地址的默认子网掩码分别为255.0.0.0、255.255.0.0、255.255.255.0
  • 路由器相互之间交换路由信息时,必须将自己所在网络的子网掩码告诉对方。分组转发时,路由器将分组的目标地址和某网络的子网掩码按位相与,若结果与该网络地址一致,则路由匹配成功,路由器将分组转发至该网络。
  • 一台主机在设置IP地址信息的同时,必须设置子网掩码。
  • 同属于一个子网的所有主机及路由器的相应端口,必须设置相同的子网掩码。
  • 路由器的路由表中所包含的信息主要内容有目的网络地址、子网掩码、下一跳地址。

其他注意点:

  1. 划分子网可以增加子网的数量,子网之间的数据传输需要通过路由器进行,因此自然就减少了广播域的大小。另外,划分子网,由于子网号占据了主机号位,所以会减少主机的数量;划分子网仅提高IP地址的利用率,并不增加网络的数量
  2. 从一个IP地址本身无法判断该主机所连接的网络是否进行了子网划分,即本单位外的网络看不见本单位内子网的划分。(划分子网只是把IP地址的主机号进行再划分,不改变IP地址的网络号)
  3. 路由器转发分组根据的仍然是IP数据报的目的网络号,本单位的路由器收到IP数据报后,再按目的网络号和子网号找到目的子网。最后把IP数据报交付给目的主机。
  4. 子网中的主机号全0或全1的地址不能被指派,主机号全0的地址为子网的网络地址,主机号全1的地址为子网的广播地址。
  5. 如果一台主机有两个或两个以上的IP地址,那么说明这台主机属于两个或两个以上的逻辑网络。在同一时刻一个合法的IP地址只能分配给一台主机,否则就会引起IP地址冲突。定长子网划分&不定长子网划分:后者可以得到最小子网可分配的ip地址数
  6. 同一网段下的主机是可以进行通信的,不同网段的主机需要找路由器发送ARP请求查找MAC地址,如果需要寻找的主机没有配置对应的网关或者对应的路由网关配置错误,ARP就无法查找到这个主机,此时这两个网段的主机就无法通信[2016真题)

默认网关

  • 定义:默认网关是子网与外部网络连接的设备,也就是连接本机或子网的路由器接口的IP地址。
  • 作用:当主机发送数据时,根据所发送数据的目的IP地址,通过子网掩码来判定目的主机是否在子网中,若目的主机在子网中,则直接发送。若目的主机不在子网中,则将该数据发送到默认网关,由网关(路由器)将其转发到其他网络,进一步寻找目的主机。
  • 考向:默认网关是离主机最近的路由器的接口地址[2022年真题]

默认网关配置错误对访问局域网和跨网访问的影响(2015)

默认网关和子网掩码的配置分析(2016、2019、2022)

4.2.4.2 IPv4地址的无分类编址方法

  1. 背景:
  2. IPv4地址的划分子网编址方法在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网(\(2^{24−3}=2097152\))由于其每个网络所包含的地址数量太小(\(2^8=256\)),因此并没有得到充分使用,而因特网的IPv4地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁。
  3. 为此,因特网工程任务组IETF又提出了采用无分类编址的方法,来解决IPv4地址资源紧张的问题,同时还专门成立IPv6工作组负责研究新版本的IP,以彻底解决IPv4地址耗尽问题。
  4. 无分类域间路由选择(Classless Inter-Domain Routing,CIDR )消除了传统A类、B类和C类地址以及划分子网的概念。
  5. CIDR可以更加有效地分配IPv4地址资源,并且可以在IPv6使用之前允许因特网的规模继续增长。

1724670349690-48d39829-0f57-4354-9242-cc2942dcaf64.png

  1. 具体划分方法说明
  2. 无分类编址方法使用的地址掩码与划分子网使用的子网掩码类似,由32比特构成。
    • 用左起多个连续的比特1对应IPv4地址中的网络前缀;
    • 之后的多个连续的比特0对应IPv4地址中的主机号。

示例:假设给定的无分类编址的IPv4地址为128.14.35.7,配套给定的地址掩码为255.255.240.0,请指出该IPv4地址的网络前缀和主机号各自的长度。

1724670528663-ce211126-d6d3-45e2-ba94-7fa0e95202fd.png

  • 斜线记法: 为了简便起见,可以不明确给出配套的地址掩码的点分十进制形式,而是在无分类编址的IPv4地址后面加上斜线“/”,在斜线之后写上网络前缀所占的比特数量(也就是地址掩码中左起连续比特1的数量,位数不固定,可变长);

斜线记法不仅能表示其IP地址,而且能表示这个地址块的网络前缀有多少位。

1724670731845-a563c78b-5f42-409d-bff0-37f6d05a1fee.png

  • 实际上,无分类域间路由选择CIDR是将网络前缀都相同的、连续的多个无分类IPv4地址,组成一个CIDR地址块,只要知道CIDR地址块中的任何一个地址,就可以知道该地址块的以下全部细节:

1724670839257-d4902198-4ede-4c6c-aed4-125bec8ff160.png

【例1】给定的无分类编址的IPv4地址为128.14.35.7/20,请给出该地址所在CIDR地址块的全部细节。

1724670893681-8a4f9d17-8e28-415e-8f15-2793a6668dc8.png

【练习】给定的无分类编址的IPv4地址为206.0.64.8/18,请给出该地址所在CIDR地址块的全部细节。

答案

题图

  1. 无分类编址方法的优点
  2. 使用无分类编址方法,可以根据客户的需要分配适当大小的CIDR地址块,因此可以更加有效地分配IPv4的地址空间。

分类编址方法

无分类编址方法

  • 路由聚合(也称为构造超网):一个CIDR地址块可以表示很多地址,所以在路由表中就可利用CIDR地址块来查找目的网络,这些地址的聚合称为路由聚合或超网(将多个子网构成一个较大的子网)(聚和使得网络前缀变短)
  • 它使得路由表中的一个项目可以表示多个原来传统分类地址的路由,有利于减少路由器之间的信息交换,进而提高网络性能。

1724671340388-684d7c55-f866-4eea-8c31-b96ec01e95ec.png

1724671390277-7208e2ef-8b1e-417f-86ee-60e5bb66a083.png

  • 网络前缀越长,地址块越小,路由越具体;
  • 若路由器查表转发分组时发现有多条路由条目匹配,则选择网络前缀最长的那条路由条目,这称为最长前缀匹配,因为这样的路由更具体。

【2011年 题38】在子网192.168.4.0/30中,能接收目的地址为192.168.4.3的IP分组的最大主机数是( )。

A. 0 B. 1 C. 2 D. 4

答案

选C

题图

【2018年 题38】某路由表有转发接口相同的4条路由表项,其目的网络地址分别为35.230.32.0/21、35.230.40.0/21、 35.230.48.0/21和35.230.56.0/21,将这4条路由聚合后的目的网络地址为( )。

A. 35.230.0.0/19 B. 35.230.0.0/20 C. 35.230.32.0/19 D. 35.230.32.0/20

答案

题图

4.2.4.3 IPv4地址的应用规划

IPv4地址的应用规划是指将给定的IPv4地址块(或分类网络)划分成若干个更小的地址块(或子网),并将这些地址块(或子网)分配给互联网中的不同网络,进而可以给各网络中的主机和路由器的接口分配IPv4地址。

定长的子网掩码
(Fixed Length Subnet Mask,FLSM)
变长的子网掩码
(Variable Length Subnet Mask,VLSM)
+ 所划分出的每一个子网都使用同一个子网掩码,因此各子网的网前缀相同
+ 所划分出子网的数量,只能是2的整数次幂个,即\(2^1,2^2,\cdots,2^n\)
+ 每个子网所分配的IP地址数量相同,容易造成地址资源的浪费。
+ 所划分出的每一个子网可以使用不同的子网掩码, 因此各子网的网络前缀可以不同
+ 所划分出子网的数量,可以不是2的整数次幂个,例如3,5,6,7,9,11....
+ 每个子网所分配的IP地址数量可以不同,尽可能减少对地址资源的浪费。
  1. 使用定长子网掩码划分子网
  • 使用同一个子网掩码来划分子网
  • 子网划分方式不灵活,只能划分出\(2^n\)个子网
  • 每个子网所分配的IP地址数量相同,容易造成IP地址浪费

【定长子网掩码划分子网的应用(2009、2010、2017、2018)】

【举例】假设申请到的C类网络为 218.75.230.0 ,使用定长的子网掩码给下图所示的小型互联网中的各设备分配IPv4地址。

1724675307018-44d1d202-ed7a-4c0e-be34-ab96a7133fb7.png

注意:对于一段连接两个路由器的链路,可以分配一个“/30”地址块,这样可分配地址为2个,恰好可分配给链路两端的路由器接口。

应用需求: 网络1需要IP地址数量为9,网络2需要IP地址数量为28,网络3需要IP地址数量为15,网络4需要IP地址数量为13,网络5需要IP地址数量为4。

1724675465190-0bad873d-d955-416c-95fb-7bc45cab9650.png

1724675706673-6619ab17-8e00-4085-b920-d21a1aab2fab.png1724675600501-25020d6f-98fe-4a87-95d7-a608cfeaf853.png


  1. 使用变长子网掩码划分子网
  • 使用不同的子网掩码来划分子网
  • 子网划分方式灵活:可以按需分配
  • 每个子网所分配的IP地址数量可以不同,尽可能减少对IP地址的浪费

【变长子网掩码划分子网的应用(2019、2021)】

【举例】假设申请到的地址块为 218.75.230.0/24, 使用 变长的子网掩码 给下图所示的小型互联网中的各设备分配IPv4地址。

1724675929753-4b5b07d5-4bb8-47d0-91a8-06b1cb46466e.png


1724676041476-c712fc3f-e79c-4de8-b761-a07c3a9cf638.png

Info

在地址块中选取子块的原则:每个子块的起点位置不能随便选取,只能选取主机号部分是块大小整数倍的地址作为起点。

建议先为大的子块选取。

不这样做的弊端

定长子网划分和不定长子网划分的二叉树解法

【例1】将CIDR地址块218.75.230.0/24均分为8个子块,以便分配给8个子网。

解:均分->定长子网划分

1724678343238-1b8e315d-8136-47d0-93a7-a64e741c0607.png


【例2】:将CIDR地址块218.75.230.0/24划分为5个子块,以便分配给5个子网

解:划分子网个数不是2的整数次幂个->变长子网划分,注意划分方法不止一种

【不符合题意的划分方法】

划分子块个数有剩余

1724678690934-003d9fc5-23b2-40a2-9570-dbbc7db39dc8.png

【可行方案】:

1724678745473-494a10b4-2cb0-4f27-bcfb-35983bea40a8.png

1724678825413-8fa1ba13-762b-41a2-af04-f8ff81597392.png

1724678877048-428e82aa-cc0a-4b86-a086-847857d8c2b1.png

1724678975883-6155d1bc-046f-432a-9177-2045ae7488d2.png

【2021年 题35】现将一个IP网络划分为3个子网,若其中一个子网是192.168.9.128/26,则下列网络中,不可能是另外两个子网之一的是() A. 192.168.9.0/25 B. 192.168.9.0/26

C. 192.168.9.192/26 D. 192.168.9.192/27

解析:

题图

题图

这种划分方法可行,A、C排除

题图

所以选B

题图

1724680456075-09609fee-2827-46f5-9fba-cbb21265781d.png

答案

题图

4.2.5 网络层转发分组的过程

原理:

  • 优势:分组转发都是基于目的主机所在网络,互联网上的网络数远小于主机数,这样可以极大地压缩转发表的大小。
  • 大致过程:当分组到达路由器后,路由器根据目的IP地址的网络前缀来查找转发表,确定下一跳应当到哪个路由器。因此,在转发表中,每条路由必须有下面两条信息:(目的网络地址,下一跳地址) IP数据报最终一定能找到目的主机所在目的网络上的路由器(可能要通过多次间接交付),当到达最后一个路由器时就试图向目的主机进行直接交付。

分组转发特点

  • 最长匹配:采用CIDR 编址时,若一个分组在转发表中可以找到多个匹配的前缀,则应当使用最长前缀匹配。为了更快地查找转发表,可以按照前缀的长短,将前缀最长的排在第1行,按前缀长度的降序排列。这样,从第1行最长的开始查找,只要检索到匹配的,就不必再继续查找。
  • 非完整路径:转发表(或路由表)并没有给分组指明到某个网络的完整路径(即先经过哪个路由器,然后经过哪个路由器等)。转发表指出,到某个网络应当先到某个路由器(即下一跳路由器),到达下一跳路由器后,再继续查找其转发表,知道再下一步应当到哪个路由器。这样一步一步地查找下去,直到最后到达目的网络。
  • MAC帧变化:得到下一跳路由器的IP地址后,并不是直接将该地址填入待发送的数据报,而是将该IP 地址转换成MAC地址(通过ARP),将此 MAC地址填入MAC帧首部,然后根据这个MAC 地址找到下一跳路由器。在不同网络中传送时,MAC帧的源地址和目的地址要发生变化。

特殊路由

  • 特定主机路由:对特定目的主机的IP地址专门指明一个路由,以方便网络管理员控制和测试网络。若特定主机的IP地址是a.b.c.d,则转发表中对应项的目的网络是a.b.c.d/32。/32 表示的子网掩码没有意义,但这个特殊的前缀可以用在转发表中
  • 默认路由:用特殊前缀0.0.0.0/0 表示默认路由,全0掩码和任何目的地址进行按位与运算,结果必然为全0,即必然和前缀0.0.0.0/0 相匹配。只要目的网络是其他网络(不在转发表中),就一律选择默认路由。默认路由通常用于路由器到互联网的路由,互联网包括无数的网络集合,不可能在路由表项中一一列出,因此只能采用默认路由的方式
  • 拓展路由选择:路由选ip,都是会选择匹配程度最高的那个,全部不符合转到0.0.0.0/24

详细过程:

  • 划分子网后,路由表必须包含三项内容:目的网络地址,子网掩码 和下一跳地址
  • 划分子网后,路由器转发分组的算法:
    1. 从收到的数据报的首部提取目的IP地址D(目的地址)
    2. 判断是否为直接交付,判断网络是否直接与路由器相连:用各网络的子网掩码和D逐位相与,判断结果是否和相应的网络地址匹配?若匹配,则把分组进行直接交付,将D通过ARP将IP地址转成MAC地址,封装成MAC帧发送出去,否则就是间接交付,执行c(是在本子网上直接交付,还是要通过本子网上的路由器间接交付?在网络层设备-路由器有详细解释:直接交付与间接交付)
    3. 若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表所指明的下一跳路由器,否则执行d
    4. 对路由表中的每一行,用其中的子网掩码和目的ip地址D逐位相与,结果为N,若N与该行的目的网络地址匹配,则把数据报传送给该行指明的下一跳路由器,否则,执行e(检测路由表是否有路径可交付?)
    5. 若路由表中有一个默认路由0.0.0.0/0(全0掩码和任何目的地址进行按位与运算,结果必然为全0,即必然和前缀0.0.0.0/0相匹配),则把数据报传送给路由表中所指明的默认路由器,否则,执行f
    6. 报告转发分组出错(例如若生存时间TTL=0,丢弃并报告出错)

1724864601106-8b6ecea8-a4e2-42be-87d3-03dd00715fb7.png

示意图

为了将重点放在TCP/IP体系结构的网际层发送和转发IP数据报的过程上,在之后的举例中,将忽略以下过程:

  • 使用ARP协议来获取目的主机或路由器接口的MAC地址的过程。
  • 以太网交换机自学习和转发帧的过程。

image
image
image
image
image
image
image
image
image

4.2.6 IPv4地址与MAC地址

  1. IPv4地址与MAC地址的封装位置

1724680979910-a582e7a7-f347-4cab-9fac-97a6e9d7796a.png

把IP数据报封装为MAC 帧后,数据链路层看不见IP数据报中的IP地址。因为路由器的隔离,IP网络中无法通过广播MAC地址来完成跨网络的寻址,所以在网络层只使用IP 地址来完成寻址

  1. 数据报传送过程中IPv4地址与MAC地址的变化情况(2018年37题)

1724681058884-6fea0510-7046-440a-bdd1-a99dac6a7d05.png

1724681346841-0c9b65f0-2898-4618-980a-6a5b5d2ae6b9.png

Info

  • 在数据报的传送过程中,数据报的源IP地址和目的IP地址保持不变;
  • 在数据报的传送过程中,数据报的源MAC地址和目的MAC地址逐链路(或逐网络)改变。

因特网为什么要使用IP地址和MAC地址这两种类型的地址来共同完成寻址工作,仅使用MAC地址进行通信不可以吗?

如果仅使用MAC地址进行通信,则会出现以下主要问题:

  • 因特网中的每台路由器的路由表中就必须记录因特网上所有主机和路由器各接口的MAC地址。
  • 手工给各路由器配置路由表几乎是不可能完成的任务,即使使用路由协议让路由器通过相互交换路由信息来自动构建路由表,也会因为路由信息需要包含海量的MAC地址信息而严重占用通信资源。
  • 包含海量MAC地址的路由信息需要路由器具备极大的存储空间,并且会给分组的查表转发带来非常大的时延。

因特网的网际层使用IP地址进行寻址,就可使因特网中各路由器的路由表中的路由记录的数量大大减少,因为只需记录部分网络的网络地址,而不是记录每个网络中各通信设备的各接口的MAC地址。

  • 路由器收到IP数据报后,根据其首部中的目的IP地址的网络号部分,基于自己的路由表进行查表转发
  • 查表转发的结果可以指明IP数据报的下一跳路由器的IP地址,但无法指明该IP地址所对应的MAC地址。因此,在数据链路层封装该IP数据报成为帧时,帧首部中的目的MAC地址字段就无法填写,该问题需要使用网际层中的地址解析协议ARP来解决。

4.2.7 地址解析协议ARP

下列几个性质是计算机网络的精髓,有必要特别强调:

  1. 在IP层抽象的互联网上只能看到IP数据报
  2. 虽然在IP数据报首部中有源IP地址,但路由器只根据目的IP地址进行转发。
  3. 在局域网的链路层,只能看见MAC帧。IP数据报被封装在MAC帧中。通过路由器转发时,IP 数据报在每个网络中都被路由器解封装和重新封装,其MAC帧首部中的源地址和目的地址会不断改变。这也决定了无法使用MAC地址跨网络通信。(MAC地址的封装和剥离:硬件地址只具有本地意义,每当路由器将IP数据报转发到一个具体的网络时,都需要重新封装源硬件地址和目的硬件地址路由器在收到分组后,剥离该分组的数据链路层协议头,然后在分组被转发之前,给分组加上一个新的链路层协议头)
  4. 尽管互连在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机与主机或路由器之间的通信。
  5. 路由器因为互连多个网络,所以它不仅有多个IP地址,而且有多个硬件地址。
  6. 从IP地址到硬件地址的解析是自动进行的,主机的用户并不知道这种地址解析过程。只要主机或路由器和本网络上的另一个已知IP地址的主机或路由器进行通信,ARP 就自动地将这个IP地址解析为数据链路层所需要的硬件地址。

地址解析协议ARP介绍

  • 功能:无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址。所以需要一种方法来完成IP地址到MAC地址的映射,这就是地址解析协议(Address Resolution Protocol,ARP)。
  • 作用:ARP用于解决同一局域网上的主机或路由器的IP地址和硬件地址的映射问题。若目的主机和源主机不在同一个局域网上,则要通过ARP找到本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络,剩下的工作就由下一个网络来做。尽管ARP请求分组是广播发送的,但ARP响应分组是普通的单播。ARP广播只在子网中传播
  • 存在位置:每台主机都设有一个ARP高速缓存,用来存放本局域网上各主机和路由器的IP地址到MAC地址的映射表,称ARP表。使用ARP来动态维护ARP表,来完成IP地址到MAC地址的映射。(IP地址表示来源和目的,MAC地址为了找下一跳)
  • 注意:由于ARP协议的主要用途是从网际层使用的IP地址解析出在数据链路层使用的MAC地址。因此,有的教材将ARP协议划归在网际层,而有的教材将ARP协议划归在数据链路层。这两种做法都是可以的。

地址解析协议ARP工作原理

ARP工作在网络层,其工作流程如下:

  1. 主机A欲向本局域网上的某台主机B发送IP数据报时,先在其ARP高速缓存中查看有无主机B的P地址。
  2. 若有,则可以查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址。若没有,则通过使用目的MAC地址为FF-FF-FF-FF-FF-FF的帧来封装并广播ARP请求分组(广播发送,由于不知道目标设备在哪里),使同一个局域网里的所有主机都收到此ARP请求。主机 B收到该ARP请求后,向主机A发出ARP响应分组(单播发送),分组中包含主机B的IP地址与MAC地址的映射关系,主机A收到ARP响应分组后就将此映射写入ARP缓存,然后按查询到的硬件地址发送MAC帧。

具体工作示意图:

image
image
image
image

  • 通过ARP自动获取,生命周期默认为两分钟。
  • 手工配置,不同操作系统下的生命周期不同,例如系统重启后不存在或系统重启后依然有效。
  • 转发表中的MAC地址与交换机接口号的对应关系记录也要周期性删除,因为这种对应关系并不是永久不变的。
  • 同理,ARP高速缓存表中的IP地址与MAC地址的对应关系也并不是永久不变的。例如,主机更换了一块新网卡。

Info

不能跨网络使用ARP,但不同局域网可多次ARP,若目的主机和源主机不在同一个局域网上,则要通过ARP找到本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络,剩下的工作就由下一个网络来做。尽管ARP请求分组是广播发送的,但ARP响应分组是普通的单播

1724683048382-ef6fdf32-0eb5-4ccf-9eab-f1b5010a8ac9.png

ARP的四种典型情况

1724088751039-227ad462-c440-4b80-9769-12663863e270.png

  1. 发送方是主机(如H1),要把IP分组发送到本网络上的另一台主机(如H2)。这时H1在网1用ARP找到目的主机H2的硬件地址。
  2. 发送方是主机(如H1),要把IP分组发送到其他网络上的一台主机(如H3)。这时H1用ARP找到与网1连接的路由器R1的硬件地址(默认网关),剩下的工作由R1来完成。
  3. 发送方是路由器(如R1),要把IP分组转发到与R1连接的网络(网2)上的一台主机(如H3)。这时R1在网2用ARP找到目的主机H3的硬件地址。
  4. 发送方是路由器(如R1),要把IP分组转发到网3上的一台主机(如H4)。这时R1在网2用ARP找到与网2连接的路由器R2的硬件地址,剩下的工作由R2来完成。

4.2.8 网际控制报文协议(ICMP)

概述

  • 为了更有效地转发IP数据报以及提高IP数据报交付成功的机会,TCP/IP体系结构的网际层使用了网际控制报文协议(Internet Control Message Protocol,ICMP)
  • 主机或路由器使用ICMP来发送差错报告报文和询问报文。
  • ICMP报文被封装在IP数据报中发送

1724773578556-5699876d-d116-4feb-8243-2aefdce7d714.png

ICMP报文类型

ICMP报文有两种,即ICMP差错报告报文和ICMP询问报文。

ICMP差错报告报文用于目标主机或到目标主机路径上的路由器,向源主机报告差错和异常情况。有5种常用的类型:

终点不可达 当路由器或主机不能交付IP数据报时,就向源点发送终点不可达报文。具体可再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等13种。
源点抑制 当路由器或主机因为拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道把数据报的发送速率放慢

时间超过
+ 当路由器收到一个目的IP地址不是自己的IP数据报时,会将其首部中生存时间TTL字段的值减1。若结果不为0,则路由器将该数据报转发出去;若结果为0,路由器不但要丢弃该数据报,还要向发送该IP数据报的源点发送时间超过(超时)报文。
+ 另外,当终点在预先规定的时间内未能收到一个数据报的全部数据报分片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过(超时)报文
+ (Traceroute/Tracert跟踪分组经过的路由,工作在网络层,使用了ICMP时间超过报文)
参数问题 当路由器或目的主机收到的数据报的首部中有字段的值不正确时,丢弃该数据报,并向源点发送参数问题报文
改变路由
(重定向)
路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(更好的路由)

示意图

image
image
image
image
image
image
image

画板

ICMP询问报文有4种类型

常用的ICMP询问报文有以下两种:

  • 回送请求和回答:ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文这种询问报文用来测试目的站是否可达及了解其有关状态 。
  • 时间戳请求和回答:ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间。在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。这种询问报文用来进行时钟同步和测量时间

ICMP应用

分组网间探测PING

  • 分组网间探测PING用来测试主机或路由器之间的连通性。
    • PING是TCP/IP体系结构的应用层直接使用网际层ICMP的一个例子,它并不使用运输层的TCP或UDP。
    • PING应用所使用的ICMP报文类型为回送请求和回答。

1724773936192-475cc03e-a122-4e93-97c3-6f52b7250ff5.png

跟踪路由

  • 跟踪路由应用traceroute,用于探测IP数据报从源主机到达目的主机要经过哪些路由器。
  • 在不同操作系统中,traceroute应用的命令和实现机制有所不同:
    • 在UNIX版本中,具体命令为“traceroute”,其在运输层使用UDP协议,在网络层使用ICMP报文类型只有差错报告报文。
    • 在Windows版本中,具体命令为“tracert”,其应用层直接使用网际层的ICMP协议,所使用的ICMP报文类型有回送请求和回答报文以及差错报告报文。

1724774586210-71e53b63-1f4e-4fe9-bca7-4bc2b4166c66.png

1724775500373-cee29195-048d-4714-aadb-34b4bf32b51c.png

4.3 IPv6

4.3.1 IPv6的特点

为什么引入IPv6? 可从根本上解决IP地址耗尽问题。

地址耗尽的解决方法

  1. 采用无类别编址CIDR,使IP地址的分配更加合理。
  2. 采用网络地址转换(NAT)方法以节省全球IP地址。
  3. 采用具有更大地址空间的新版本的IPv6。

备注:前两种方法只是延长了IPv4使用寿命,只有第三种方法能从根本上解决IP地址耗尽问题。

IPv6引进的主要变化

  • 更大的地址空间(最重要的):IPv6将IPv4的32比特地址空间增大到了128比特,在采用合理编址方法的情况下,在可预见的未来是不会用完的。
  • 扩展的地址层次结构:可划分为更多的层次,这样可以更好地反映出因特网的拓扑结构,使得对寻址和路由层次的设计更具有灵活性。
  • 灵活的首部格式:与IPv4首部并不兼容。IPv6定义了许多可选的的扩展首部,不仅可提供比IPv4更多的功能,而且还可以提高路由器的处理效率,因为路由器对逐跳扩展首部外的其他扩展首部都不进行处理。
  • 改进的选项:IPv6允许分组包含有选项的控制信息,因而可以包含一些新的选项。然而IPv4规定的选项却是固定不变的。(必选项可变成可选项,可加快分组的处理速度)
  • 允许协议继续扩充:IPv6允许不断扩充功能,而IPv4的功能是固定不变的。
  • 支持即插即用(即自动配置):IPv6支持主机或路由器自动配置IPv6地址及其他网络配置参数。因此IPv6不需要使用DHCP。
  • 支持资源的预分配:IPv6能为实时音视频等要求保证一定带宽和时延的应用,提供更好的服务质量保证。
  • 只有主机分片:IPv6只有源主机才能分片,是端到端的,不允许类似IPv4传输路径中的路由分片。这种操作只能在源与目标主机,这将大大提高了路由器转发的速度
  • 首部固定:IPv6首部长度是固定的40B,而IPv4首部长度是可变的(必须是4B的整数倍)。
  • 增大了安全性:如身份鉴别、保密功能。
  • 支持Qos保障,当网络过载或拥塞时,Qos能确保重要业务量不受延迟或丢弃,同时保证网络的高效运行。(如果数据报太大IPv6会直接丢弃)(是网络的一种安全机制,解决网络延迟和阻塞等问题的一种技术。)

与IPv4的对比

二者不兼容,但总体而言它与所有其他的互联网协议兼容,包括TCP、UDP、ICMP、IGMP和 DNS等,只是在少数地方做了必要的修改(大部分是为了处理长地址)。

IPV6 IPV4
地址长度为128bit(16B) 地址长度为32bit(4B)
只有在源结点才能分片;
传输过程中不能分片
传输过程中可以分片
首部长度是8B的整数倍 首部度是4B的整数倍
IP首部更加简单、灵活;
取消了许多字段(放在扩展首部中)
相较IPV6的首部,IPV4首部的固定部分包含更多字段

4.3.2 IPv6数据报的基本首部

  1. 组成

IPv6数据报由两部分组成:基本首部和有效载荷(也称净负荷)

  • 基本首部的字段只有8个,但长度增大到40B
  • 有效载荷由零个或多个扩展首部及其后面的数据部分构成。(扩展首部不属于IPv6数据报的首部)

1724829550637-ff31fa74-0697-45e7-957d-d1ed58e9f732.png

  • 版本4位,指明协议的版本,IPv6 对应值是6
  • 通信量类: 8位,用来区分不同IPv6数据报的类别或优先级。
  • 有效载荷长度16位,除基本首部外的字节数,最大值是65535B(所有扩展首部都算在有效载荷之内)
  • 源/目的地址:128位,是数据报的发送端/接收端的IP地址
  • 下一个首部:8位(相当于IPv4的协议字段或可选字段)
    • 当IPv6没有扩展首部时,它指明IPv6数据报所运载的数据是何种协议数据单元PDU;
    • 当IPv6带有扩展首部时,它就标识后面第一个扩展首部的类型。

1724835054841-88e0806a-fdaf-4f17-9798-f795b3bd0391.png

  • 跳数限制:8位,(类似于IPv4的TTL字段),源点在每个数据报发出时即设定某个限制值(最大为255)。路由器每次转发时将其值减1,减为零时就将该数据报丢弃。该字段用来防止IPv6数据报在因特网中永久兜圈。
  • 流标号:20位,所有属于同一个流的数据报都具有相同的流标号,换句话说,流标号用于资源分配。(流是指互联网上从特定源点到特定终点(单播或多播)的一系列数据报(如实时音/视频传输),而在这个“流”所经过的路径上的路由器来保证指明的服务质量。

IPv6与IPv4基本首部的对比

1724830202937-9335a3dc-9a39-43a4-ba77-fdc76fbe15d9.png

IPv6将IPv4数据报首部中不必要的功能取消了,这使得IPv6数据报基本首部中的字段数量减少到只有8个。

  • 但由于IPv6地址的长度扩展到了128比特,因此使得IPv6数据报基本首部的长度反而增大到了40字节,比IPv4数据报首部固定部分的长度(20字节)增大了20字节。
  • 取消了首部长度字段,因为IPv6数据报的首部长度是固定的40字节。
  • 取消了区分服务(服务类型)字段,因为IPv6数据报首部中的通信量类和流标号字段实现了区分服务字段的功能。
  • 取消了总长度字段,改用有效载荷长度字段。这是因为IPv6数据报的首部长度是固定的40字节,只有其后面的有效载荷长度是可变的。
  • 取消了标识、标志和片偏移字段,因为这些功能已包含在IPv6数据报的分片扩展首部中。
  • 把生存时间TTL字段改称为跳数限制字段,这样名称与作用更加一致。
  • 取消了协议字段,改用下一个首部字段。
  • 取消了首部检验和字段,这样可以加快路由器处理IPv6数据报的速度。
  • 取消了选项字段,改用扩展首部来实现选项功能。

IPv6数据报的扩展首部

  • IPv4数据报如果在其首部中使用了选项字段,则在数据报的整个传送路径中的全部路由器,都要对选项字段进行检查,这就降低了路由器处理数据报的速度。
  • 实际上,在路径中的路由器对很多选项是不需要检查的。因此,为了提高路由器对数据包的处理效率,IPv6把原来IPv4首部中的选项字段都放在了扩展首部中,由路径两端的源点和终点的主机来处理,而数据报传送路径中的所有路由器都不处理这些扩展首部(除逐跳选项扩展首部)。
  • 1724838471470-e9ef476c-2c62-4cde-8232-30937a4bbe56.png
  • 每一个扩展首部都由若干个字段组成,它们的长度也各不相同。
  • 所有扩展首部中的第一个字段都是8比特的下一个首部字段。该字段的值指出在该扩展首部后面是何种扩展首部。
  • 当使用多个扩展首部时,应按以上的先后顺序出现。

4.3.3 IPv6地址

IPv6基本地址类型

  • 单播。就是传统的点对点通信。一对一通信,可做源地址或目的地址
  • 多播。一点对多点的通信,数据报发送到一组计算机中的每一台。可目的地址(IPv6没有采用广播的术语,而将广播看作多播的一个特例)
  • 任播。任播的终点是一组计算机,但只交付其中的一台计算机(通常是最近的一台),一对多中的一个通信,可做目的地址

1724780583372-54e7ecb4-32cb-43fd-a4a1-fdc2578bf033.png

IPv6地址表示形式(IPv4地址通常使用点分十进制表示法)

  • 冒号十六进制记法:把地址中的每4位用一个十六进制数表示,并用冒号分隔每16位。

1724838866610-d4e54af4-18c6-411e-b76b-bb2589a30e23.png

  • 在IPv6地址的冒号十六进制记法的基础上,再使用“左侧零”省略和“连续零”压缩,可使IPv6地址的表示更加简洁。
    • “左侧零”省略是指两个冒号间的十六进制数中最前面的一串0可以省略不写。
    • “连续零”压缩是指一连串连续的0可以用一对冒号取代。

1724838930010-32cc09fa-baef-481b-8eea-a49d1af4e72c.png

  • 在一个IPv6地址中只能使用一次“连续零”压缩,否则会导致歧义

1724839022928-c5198449-59c5-42b9-839a-1854bbab75bb.png

1724839074370-1574e9d4-27a1-48b0-b790-14988f5e5566.png

  • 冒号十六进制记法还可结合点分十进制的后缀。这在IPv4向IPv6过渡阶段非常有用。

1724839122726-0ed15450-6b03-4b3c-bcb5-b46eca7a09b8.png

  • CIDR的斜线表示法在IPv6中仍然可用。

1724839274220-68dc48bf-bbfa-45c6-82f3-b10acd9b9e1b.png

IPv6地址的分类

地址类型 二进制前缀 说明
未指明地址 \(00...0(128位)\),可记为\(::/128\) + 不能用作目的地址,只能用于还未配置IPv6地址的主机作为源地址
环回地址 \(00...01(128位)\),可记为\(::1/128\) (与IPv4的环回地址相同)IPv6的环回地址仅此一个
多播地址 最高8比特为“全1”的地址,可记为\(FF00::/8\) + IPv6多播地址的功能与IPv4多播地址相同。
+ 这类地址占IPv6地址空间的1/256
本地链路单播地址 最高10比特为1111111010的地址,可记为\(FE80::/10\) + 该地址的作用类似于IPv4的私有IP地址
+ 即使用户网络没有连接到因特网,但仍然可以使用TCP/IP协议。连接在这种网络上的主机都可以使用本地链路单播地址进行通信,但不能和因特网上的其他主机通信。
全球单播地址 除上述四种外的其他所有IPv6地址 用得最多的地址

IPv6 全球单播地址采用下图所示的三级结构:(这是为了使路由器可以更快地查找路由)

1724839501126-cbf67387-cf77-4196-bc0a-c3673f417c2b.png

  • 第一级为全球路由选择前缀,占48位,用于互联网中的路由选择,相当于IPv4分类地址中的网络号;
  • 第二级为子网标识符,占16位,用于各机构构建自己的子网;
  • 第三级为接口标识符,用于指明主机或路由器的单个网络接口,相当于IPv4分类地址中的主机号。

(接口位数有64bit之多,完全足够给接口的硬件地址编码,IPv6不需要使用地址解析协议(ARP)进行地址解析)

4.3.4 从IPv4向IPv6过渡

背景:

  • 因特网上使用IPv4的路由器的数量太大,要让所有路由器都改用IPv6并不能一蹴而就。因此,从IPv4转变到IPv6只能采用逐步演进的办法
  • 另外,新部署的IPv6系统必须能够向后兼容,也就是IPv6系统必须能够接收和转发IPv4数据报,并且能够为IPv4数据报选择路由

[IPv4向IPv6过渡的策略(2023)]

  1. 双协议栈
  2. 双协议栈(Dual Stack)是指在完全过渡到IPv6之前,使一部分主机或路由器装有IPv4和IPv6两套协议栈。
  3. 双协议栈主机或路由器既可以和IPv6系统通信,又可以和IPv4系统通信
  4. 双协议栈主机或路由器记为IPv6/IPv4,表明它具有一个IPv6地址和一个IPv4地址
    • 双协议栈主机在与IPv6主机通信时采用IPv6地址,而与IPv4主机通信时采用IPv4地址
    • 双协议栈主机通过域名系统DNS查询目的主机采用的IP地址:
      • 若DNS返回的是IPv4地址,则双协议栈的源主机就使用IPv4地址
      • 若DNS返回的是IPv6地址,则双协议栈的源主机就使用IPv6地址

1724840133014-84e3148e-9bbd-45fc-84dd-2482ca315ad2.png

  1. 隧道技术
  2. 隧道技术(Tunneling)的核心思想是:
    • 当IPv6数据报要进入IPv4网络时,将IPv6数据报重新封装成IPv4数据报,即整个IPv6数据报成为IPv4数据报的数据载荷。
    • 封装有IPv6数据报的IPv4数据报在IPv4网络中传输
    • 当IPv4数据报要离开IPv4网络时,再将其数据载荷(即原来的IPv6数据报)取出并转发到IPv6网络。

1724840281149-6c5ed8a7-7992-41cb-ac0e-022fa70ed4c5.png

4.4 路由算法与路由协议

4.4.1 路由算法

定义:需要何种算法来获得路由表中的各个项目。(路由选择协议的核心)

目的:找到一条从源路由器到目的路由器的“最佳”路径。(通常指具有最低费用的路径)

所有最短路径算法都依赖于一个性质:“两点之间的最短路径也包含了路径上其他顶点间的最短路径"

分类:路由器转发分组是通过路由表转发的,而路由表是通过各种算法得到的。从能否随网络的通信量或拓扑自适应地进行调整变化来划分,路由算法可以分为如下两大类。

静态路由选择 动态路由选择
+ 采用人工配置的方式给路由器添加网络路由、默认路由和特定主机路由等路由条目。
+ 静态路由选择简单、开销小,但不能及时适应网络状态(流量、拓扑等)的变化。
+ 静态路由选择一般只在小规模网络中采用。
+ 路由器通过路由选择协议自动获取路由信息。(路由器间彼此交换信息,按照路由算法优化出路由表项。)
+ 动态路由选择比较复杂、开销比较大,但能较好地适应网络状态的变化。(路由更新快,及时响应链路费用或网络拓扑变化)
+ 动态路由选择适用于大规模网络。

静态路由配置

静态路由配置是指用户或网络运维人员使用路由器的相关命令给路由器人工配置路由表。

  • 人工配置方式简单、开销小、但不能及时适应网络状态(流量、拓扑等)的变化,一般只在小规模网络中采用。

image
image
image
image
image

默认路由

1724746010294-db914ad9-3b17-4f3b-afdc-4b4bc85981f3.png

Info

  • 默认路由条目中的目的网络0.0.0.0/0,其中0.0.0.0表示任意网络,而网络前缀“/0”(相应的地址掩码为0.0.0.0)是最短的网络前缀。
  • 路由器在查找转发表转发IP数据报时,遵循“最长前缀匹配”的原则,因此默认路由条目的匹配优先级最低。

特定主机路由

出于某种安全问题的考虑,同时为了使网络运维人员更方便地控制网络和测试网络,特别是在对网络的连接或路由表进行排错时,指明到某一台主机的特定主机路由是十分有用的。

1724746073898-ae4b80eb-5a65-4e33-a348-fdf32b564c21.png

1724746157703-00014d6b-42b0-4533-9b32-8d654950f6fa.png

Info

  • 特定主机路由条目中的目的网络192.168.2.1/32,其中192.168.2.1是特定主机的IP地址,而网络前缀“/32”(相应地址掩码为255.255.255.255)是最长的网络前缀。
  • 路由器在查找转发表转发IP数据报时,遵循“最长前缀匹配”的原则,因此特定主机路由条目的匹配优先级最高。

进行静态路由配置需要认真考虑和谨慎操作,否则可能出现以下问题:

  • 路由条目配置错误,甚至导致出现路由环路。
  • 聚合路由条目时可能引入不存在的网络。

动态路由算法

常用的动态路由算法可分为两类:距离-向量路由算法(RIP)和链路状态路由算法(OSPF)。

链路状态路由算法OSPF 距离向量路由算法RIP
全局性 分散型
所有路由器掌握完整的网络拓扑和链路费用信息 路由器只掌握物理相连的邻居及链路费用

距离向量路由算法

Bellman-Ford 算法(距离-向量算法的基础)

1.目的意义:它用于计算单源最短路径。每个结点以自身为源点执行 Bellman-Ford算法,所以全局上可以解决任意结点对之间的最短路径问题。

(每个结点定期地向它的每个邻居发送它的距离向量副本。当结点x从它的任何一个邻居v接收到一个新距离向量时,它首先保存v的距离量,然后使用 Bellman-Ford 公式dx(y)=min{c(x,v)+dv(y)}更新自己的距离向量。若结点x的距离向量因这个更新步骤而改变,则结点x接下来继续向它的每个邻居发送其更新后的距离向量)

2.基本思想:

假设:

  • dx(y)表示结点x到结点y的带权最短路径的费用
  • c(x,v)是从x到其邻居v的费用,其中v是x的所有邻居

公式:

那么有dx(y)=min{c(x,v)+dv(y)},从x到y的最短路径费用是对所有邻居v的c(x,v)+dv(y)的最小值。1724564575353-a5b920b5-a2da-457f-8c05-01ea1cee97a6.png

3.每个结点x维护下列路由信息:

1)从x到每个直接相连邻居v的链路费用c(x,v) ,

2)结点x的距离向量(x到网络中其他结点的费用)

3)它收到的每个邻居的距离向量(x的每个邻居到网络中其他结点的费用)

示例:

距离向量路由算法的具体实现(2021)

介绍:图中的各列依次是三个结点的初始化距离向量,此时各结点之间尚未交换过任何路由信息,因此各结点的初始化距离向量就等于它到每个直接相连邻居v的费用

  • 图(a)中的各列依次是三个结点的初始化距离向量(各结点之间尚未交换过任何路由信息,等于结点自身到每个直接相连邻居v的费用
  • 图(b)每个结点第一次向它的所有邻居发送其距离向量,在接收到该更新报文后,每个结点重新计算自己的距离向量。结点x计算的过程为:dx(x)=0;dx(y)=min{c(x,y)+dy(y),c(x,z)+dz(y)}=min{2+0,7+1}=2;dx(z)=min{c(x,y)+dy(z),c(x,z)+dz(z)}=min{2+1,7+0}=3
  • 图(c)再次向它们的邻居发送它们更新的距离向量(没有变化的结点y本次不用发送更新报文)接收到邻居的更新报文后,结点又重新计算它们的距离向量,此次没有结点更新,因此也无更新报文发送,算法进入静止状态

1724573687315-3f2e1c1b-16ff-49b3-a8a7-beb88d0c43f8.png

备注:更新报文的大小与网络中的结点数目成正比,大型网络将导致很大的更新报文。最常见的距离-向量路由算法是RIP算法,它采用“跳数”作为距离的度量。

拓展:水平分割用于避免距离-向量路由算法中的无穷计数问题。TTL字段用于防止IP分组由于环路在网络中无限循环

链路状态路由算法

链路状态:指本路由器都和哪些路由器相邻,以及相应链路的代价

主要思想(典型的链路状态路由算法是OSPF算法)

  • 要求每个结点都具有全网拓扑结构图(这个拓扑结构图在全网范围内是一致的)
  • 执行两项任务:第一,主动测试所有相邻结点的状态;第二,定期地将链路状态传播给所有其他结点。(每个结点都知道全网共有多少个结点、哪些结点是相连的、其代价是多少等)
  • 每个结点都可使用Dijkstra最短路径算法计算出到达其他结点的最短路径。
  • 在链路状态算法中,结点每收到一个链路状态报文,便用其更新自己的网络状态“视野图”一旦链路状态发生变化,就使用 Dijkstra算法重新计算到达所有其他结点的最短路径。

适用性:因为一个结点的链路状态只涉及相邻结点的连通状态,而与整个互联网的规模并无直接关系,所以链路状态算法适用于大型的或路由信息变化聚敛的互联网环境。

主要优点:每个结点都使用同样的链路状态数据独立地计算路径,而不依赖中间结点的计算,易于查找故障,因为链路状态报文仅运载来自单个结点关于直接链路的信息,其大小与网络中的结点数目无关,所以链路状态算法比距离-向量算法有更好的规模可伸展性。

比较:在距离-向量算法中,每个结点仅与它的直接邻居交谈,向它的邻居发送自己的路由表,其大小取决于网络中的结点数目,代价较大。在链路状态算法中,每个结点通过广播的方式与所有其他结点交谈,但它只告诉它们与它直接相连的链路的费用。

4.4.2 分层次的路由选择协议

背景:互联网采用的是自适应的、分布式路由选择协议。因为互联网的规模非常大,许多联网单位不愿让外界了解自己单位网络的布局细节,所以互联网采用分层次的路由选择协议。

因特网采用的路由选择协议的特点:

  • 自适应:因特网采用动态路由选择,能较好地适应网络状态的变化
  • 分布式:因特网中的各路由器通过相互间的信息交互,共同完成路由信息的获取和更新
  • 分层次:将整个因特网划分为许多较小的自治系统(Autonomous System,AS)。在自治系统内部和外部采用不同类别的路由选择协议,分别进行路由选择。

采用分层次划分区域的方法虽然使交换信息的种类增多了,同时也使OSPF协议更加复杂了,但这样做却能使每个区域内部交换路由信息的通信量大大减少,进而使OSPF协议能够用于规模很大的自治系统中

自治系统(AS) 概念:在单一的技术管理下的一组路由器,而这些路由器使用一种AS内部的路由选择协议和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由协议以确定在AS之间的路由。一个AS内的所有网络都属于一个行政单位来管辖,一个自治系统的所有路由器在本自治系统内都必须连通。

1724747562864-8617621d-14d4-48cd-9d8b-5207ac486dda.png

路由选择协议分类

1724747579686-0ad7ddd5-7cf8-4952-9d2d-5b89f1c9d1a8.png

【注意】:

  • 外部网关协议EGP和内部网关协议IGP只是路由选择协议的分类名称,而不是具体的路由选择协议。
  • 外部网关协议和内部网关协议名称中使用的是“网关”这个名词,是因为在因特网早期的RFC文档 中,没有使用“路由器”而使用的是“网关”这一名词。

内部网关协议(IGP):即在一个自治系统内部使用的路由选择协议,如RIP和OSPF。

外部网关协议(EGP):在自治系统之间使用的路由选择协议

  • 若源主机和目的主机处在不同的自治系统中(两个自治系统可能使用不同的IGP),则当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。目前使用最多的外部网关协议是BGP
  • 如上图,每个自治系统自己决定在本自治系统内部运行哪个内部网关协议(例如,可以是RIP或OSPF),但每个自治系统都有一个或多个路由器除运行本系统的内部网关协议外,还要运行外部网关协议(如BGP)。

路由选择协议功能

  • 获取网络拓扑信息(交换网络状态/通路信息)
  • 选择最优路径(Dijkstra单源最短路径算法....)
  • 维护路由表(构建、更新、删除...路由表项)

4.4.3 路由信息协议RIP

相关基本概念

  • 路由信息协议(Routing Information Protocol,__RIP)是内部网关协议中最先得到广泛使用的协议之一。
  • RIP要求自治系统AS内的每一个路由器,都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为距离向量(Distance-Vector,D-V)。
  • RIP使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的距离。
    • RIP将路由器到直连网络的距离定义为1。
    • RIP将路由器到非直连网络的距离定义为所经过的路由器数加1。
    • RIP允许一条路径最多只能包含15个路由器,距离等于16时相当于不可达。因此RIP只适用于小型互联网。

1724748131565-e8ac541a-4e96-468a-970d-f08117ffb5a9.png

有些厂商的路由器并没有严格按照RIP标准文档的规定来实现RIP。例如,思科路由器中的RIP,将路由器到直连网络的距离定义为0,但这并不影响RIP的正常运行。

  • RIP认为好的路由就是“距离短”的路由,也就是所通过路由器数量最少的路由。

1724748187023-97732d09-b256-421e-a3d7-1e395e25ec99.png

  • 当到达同一目的网络有多条RIP距离相等的路由时,可以进行等价负载均衡,也就是将通信量均衡地分布到多条等价的路径上。

1724748227026-96e7b99a-ba3f-433c-a5d4-b792f0d69089.png

RIP具有以下三个重要特点:

  1. 和谁交换信息:仅和相邻路由器交换信息。
  2. 交换什么信息:路由器自己的路由表,即本路由器到所在自治系统AS中各网络的最短RIP距离,以及到各网络应经过的下一跳路由器。
  3. 何时交换信息:周期性交换(例如,每个约30秒),为了加快RIP的收敛速度,当网络拓扑发生变化时,路由器要及时向相邻路由器通告拓扑变化后的路由信息,这称为触发更新。

基本工作过程

  1. 路由器刚开始工作时,只知道自己到直连网络的RIP距离为1。
  2. 每个路由器仅和相邻路由器周期性地交换并更新路由信息。
  3. 若干次交换和更新后,每个路由器都知道到达本自治系统AS内各网络的最短距离和下一跳路由器,称为收敛。

所谓收敛,是指当路由环境发生变化后,各路由器调整自己的路由表以适应网络拓扑结构的变化,最终达到稳定状态(路由收敛:路由表与网络拓扑状态保持一致)。收敛越快,路由器就能越快适应网络拓扑结构的变化。

1724748541955-8467c28c-60e2-4ccf-9d5c-0dbee1b42b38.png


1724748565582-413d8c96-b741-4baa-97bc-141e271d373e.png


RIP的距离向量算法

1724758639963-6f822340-3933-44da-847c-d864f72d92c2.png

image
image
image
image
image
image
image
image
image
image
image

除了上述RIP路由条目更新规则,在RIP的距离向量算法中还包含以下一些时间参数:

  • 路由器每隔大约30秒向其所有相邻路由器发送路由更新报文。
  • 若180秒(默认)没有收到某条路由条目的更新报文,则把该路由条目标记为无效(即把RIP距离设置为16,表示不可达),若再过一段时间(如120秒),还没有收到该路由条目的更新报文,则将该路由条目从路由表中删除。

【2010年 题35】某自治系统内采用RIP协议,若该自治系统内的路由器R1收到其邻居路由器R2的距离矢量,距离矢量中包含信息,则能得出的结论是( )。

A. R2可以经过R1到达net1,跳数为17

B. R2可以达到net1,跳数为16

C. R1可以经过R2到达net1,跳数为17

D. R1不能经过R2到达net1

在RIP协议中,距离16表明目的网络不可达。因此,R2无法到达net1,R1也无法通过R2到达net1。

【2021年 题37】某网络中的所有路由器均采用距离向量路由算法计算路由。若路由器E与邻居路由器A、B、C和D之间的直接链路距离分别是8,10,12和6,且E收到邻居路由器的距离向量如下表所示,则路由器E更新后的到达目的网络Net1~Net4的距离分别是( )。

1724750063129-c218fe17-5c75-4453-977c-f44b322be31e.png1724750079700-b841ef05-6fc9-4bfe-9029-4a3c59ddabee.png

答案

选D

题图

RIP存在的问题-坏消息传得慢

慢收敛:是路由产生回路的根本原因(在距离-向量路由协议中,“好消息传得快,而坏消息传得慢”,这就导致了当路由信息发生变化时未能及时地被所有路由器知道,而仍然可能在路由器之间进行传递,这就是“慢收敛”现象。)”(两个路由都欺骗自己给对方加一就能到达)

1724750535866-fb950a44-0b03-40ce-a988-707743e29ec8.png

1724750662629-79571781-3c25-469e-b858-0107dfd3eb56.png

1724750708633-1d31f3f0-698f-4dbf-893a-b075fc695bfc.png

“坏消息传播得慢”的问题又被称为路由环路或RIP距离无穷计数问题。这是距离向量算法的一个固有问题。可以采取以下多种措施减少出现该问题的概率或减小该问题带来的危害:

  • 限制最大RIP距离为15(16表示不可达)。
  • 当路由表发生变化时就立即发送路由更新报文(即“触发更新”),而不仅是周期性发送。
  • 让路由器记录收到某个特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送(即“水平分割”)。

【注意】:使用上述措施仍无法彻底解决问题。因为在距离向量算法中,每个路由器都缺少到目的网络整个路径的完整信息,无法判断所选的路由是否出现了环路。

RIP版本和相关报文的封装

RIP相关报文使用运输层的用户数据报协议UDP进行封装,使用的UDP端口号为520。

  • 从RIP报文封装的角度看,RIP属于TCP/IP体系结构的应用层。
  • 但RIP的核心功能是路由选择,这属于TCP/IP体系结构的网际层。

1724759876951-8a7e3e45-05d4-4eef-b64e-a1f39e73bedd.png

优缺点

RIP优点:

  1. 实现简单、路由器开销小;
  2. 若一个路由器发现了更短的路由,在较短时间内便可被传至所有路由器,俗称“好消息传播得快”。

RIP缺点:

  1. RIP限制了最大RIP距离为15,这就限制了使用RIP的自治系统AS的规模。
  2. 相邻路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也随之增大。
  3. “坏消息传播得慢”,使更新过程的收敛时间过长。因此,对于规模较大的自治系统AS,应当使用OSPF协议。

4.4.4 开放最短路径优先(OSPF)协议

相关基本概念

  • 开放最短路径优先(Open Shortest Path First,OSPF)协议是为了克服路由信息协议RIP的缺点而开发出来的。
    • “开放”表明OSPF协议不是受某一厂商控制,而是公开发表的。
    • 最短路径优先”是因为使用了Dijkstra提出的最短路径算法(Shortest Path First,SPF)

【注意】“开放最短路径优先”只是一个路由选择协议的名称,但这并不表示其他的路由选择协议不是“最短路径优先”。实际上,用于自治系统AS内部的各种路由选择协议(例如RIP),都要寻找一条“最短”的路径。

  • OSPF是基于链路状态的,而不像RIP是基于距离向量的。
  • OSPF基于链路状态并采用最短路径算法计算路由,从算法上保证了不会产生路由环路。
  • OSPF不限制网络规模,更新效率高,收敛速度快
  • 链路状态(Link State,LS)是指本路由器都和哪些路由器相邻,以及相应链路的“代价(cost)”
    • 代价”用来表示费用、距离、时延和带宽等,这些都由网络管理人员来决定。

eg:思科路由器中OSPF协议计算代价的方法是:100Mb/s除以链路带宽计算结果小于1的值仍记为1,大于1且有小数的,舍去小数。)

1724761724815-fb919f19-0633-4a70-b1f9-c47044896645.png

OSPF路由器邻居关系的建立和维护:

  • OSPF相邻路由器之间通过交互问候(Hello)分组来建立和维护邻居关系。
    • 问候(Hello)分组封装在IP数据报中,发往组播地址224.0.0.5。IP数据报首部中的协议号字段的取值为89,表明IP数据报的数据载荷为OSPF分组。

1724766661009-bef2fc73-7cbd-49cc-8244-bccacce25b9d.png1724764862494-29e861a0-d1d0-4328-b063-5d166f1bfe54.png

【注意】:OSPF分组直接使用网际层的IP数据报进行封装,而不像RIP报文需要使用运输层用户数据报协议UDP封装。从数据包按网络体系结构逐层封装的角度看,OSPF属于网际层协议,而RIP属于应用层协议(但其核心功能是路由选择,属于网际层)。

- 问候(Hello)分组的<strong>发送周期为10秒</strong>。
- 若40秒未收到来自邻居路由器的问候(Hello)分组,则认为邻居路由器不可达。
- 每个路由器都会建立一张<strong>邻居表</strong>。

1724762071440-2f710c1a-6d3f-4767-afff-9fcedf848301.png

链路状态通告

  • 使用OSPF的每个路由器都会产生链路状态通告(Link StateAdvertisement,LSA)
  • LSA中包含以下两类链路状态信息:
    • 直连网络的链路状态信息
    • 邻居路由器的链路状态信息

1724762446579-97a880a5-c2b8-4479-80ae-6df836449655.png

链路状态更新分组

  • 链路状态通告LSA被封装在链路状态更新(Link State Update,LSU)分组中,采用可靠的洪泛法(Flooding)进行发送。
    • 洪泛法的要点是路由器向自己所有的邻居路由器发送链路状态更新分组,收到该分组的各路由器又将该分组转发给自己所有的邻居路由器(但其上游路由器除外),以此类推。
    • 可靠是指收到链路状态更新分组后要发送确认,收到重复的更新分组无需再次转发,但要发送一次确认。

1724762582982-42f052ae-895c-421f-9883-42f28331639c.png

链路状态数据库

  • 使用OSPF的每一个路由器都有一个链路状态数据库(Link State Database,LSDB),用于存储链路状态通告LSA。
  • 通过各路由器洪泛发送封装有各自链路状态通告LSA的链路状态更新分组LSU,各路由器的链路状态数据库LSDB最终将达到一致

1724763080052-b41ab772-9b16-450c-8047-ddff2f06bd3f.png

基于链路状态数据库进行最短路径优先计算

  • 使用OSPF的各路由器,基于链路状态数据库LSDB进行最短路径优先计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表。

1724763237675-e571bf01-878d-49ce-9446-e32d9ea1453a.png


OSPF的五种分组类型

  • 问候(Hello): 用来发现和维护邻居路由器的可达性。

(两个相邻路由器通常每隔10秒要交换一次问候分组,以便知道哪些站可达,40秒没收到问候分组,则认为该相邻路由器不可达,应立即修改链路状态数据库,并重新计算路由表。)

  • 数据库描述(Database Description):用来向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息。

(路由器可使用数据库描述分组和相邻路由器交换本数据库中已有的链路状态摘要信息)

  • 链路状态请求(Link State Request):用来向邻居路由器请求发送某些链路状态项目的详细信息。

使用链路状态请求分组,向对方请求发送自己所缺少的某些链路状态项目的详细信息

  • 链路状态更新(Link State Update):路由器使用链路状态更新分组将其链路状态信息进行洪泛发送,即用洪泛法对整个系统更新链路状态。
  • 链路状态确认(Link State Acknowledgement):对链路状态更新分组的确认分组。

OSPF的基本工作过程

1724763525059-08876577-2eaf-482d-9380-a8833cb6cfb3.png

工作原理综述:

  1. 因为各路由器之间频繁地交换链路状态信息,所以所有路由器最终都能建立一个链路状态数据库,即全网的拓扑结构图
  2. 每个路由器利用链路状态数据库中的数据,使用 Dijkstra算法计算自己到达各目的网络的最优路径,构造出自己的路由表
  3. 当链路状态发生变化时,每个路由器重新计算到达各目的网络的最优路径,构造出新的路由表。为确保链路状态数据库与全网的状态保持一致,OSPF还规定每隔一段时间(如30分钟)要刷新一次数据库中的链路状态。因为一个路由器的链路状态只涉及与相邻路由器的连通状态,与整个网络的规模并无直接关系,所以当互联网规模很大时,OSPF要比RIP好得多

注意:路由表中不会存储完整路径,而只存储“下一跳”(只有到了下一跳路由器,才能知道再下一跳应当怎样走)。

详细过程:

  1. 每个路由器发现它的邻居结点[HELLO问候分组],并了解邻居节点的网络地址。
  2. 设置到它的每个邻居的成本度量metric。
  3. 构造[DD数据库描述分组],向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
  4. 如果DD分组中的摘要自己都有,则邻站不做处理;如果有没有的或者是更新的,则发送[LSR链路状态请求分组]请求自己没有的和比自己更新的信息。
  5. 收到邻站的LSR分组后,发送[LSU链路状态更新分组]进行更新。
  6. 更新完毕后,邻站返回一个[LSAck链路状态确认分组]进行确认。只要一个路由器的链路状态发生变化:
  7. 泛洪发送[LSU链路状态更新分组]进行更新。
  8. 更新完毕后,其他站返回一个[LSAck链路状态确认分组]进行确认。
  9. 使用Dijkstra根据自己的链路状态数据库构造到其他节点间的最短路径。

多点接入网络中的OSPF路由器

  • 在多点接入网络中OSPF路由器邻居关系的建立

1724763616345-613fcd32-9a5f-4b1c-9304-af5f5074cc3d.png每个路由器需要向其他(n−1)个路由器发送问候分组和链路状态更新分组

  • 为了减少洪泛发送问候分组和链路状态更新分组的数量,OSPF采用以下措施:
    • 选举指定路由器(Designated Router,DR)和备用的指定路由器(Backup Designated Router,BDR)
    • 所有的非DR/BDR只与DR/BDR建立邻居关系
    • 非DR/BDR之间通过DR/BDR交换信息

1724763853559-e0683586-9980-4bb0-b8af-db7c90dc0324.png

OSPF划分区域

  • 为了使OSPF协议能够用于规模很大的网络,OSPF把一个自治系统AS再划分为若干个更小的范围,称为区域(area)。

1724764321224-5a8c5a49-ff74-434d-81c1-1cf395ffc569.png

Info

划分区域的好处就是把利用洪泛法交换链路状态信息的范围局限于每一个区域,而不是整个自治系统AS,这样就减少了整个网络上的通信量

  • 主干路由器:主干区域中,用于连接主干区域和其他下层区域的路由器称为区域边界路由器。只要是在主干区域中的路由器,就都称为主干路由器,因此主干路由器可以兼作区域边界路由器
  • 域互联:域之间通过区域边界路由器互联,主干路由器能兼作区域边界路由器
  • 域中的路由器:在自治系统中有4类路由器,区域内部路由器、主干路由器、区域边界路由器和自治域边界路由器

在上图中,

  • 自治系统边界路由器(AS Border Router,ASBR):R6
  • 主干路由器(Backbone Router,BBR):R3、R4、R5、R6和R7
  • 区域内路由器(Internal Router,IR):区域1内的R1和R2,区域2内的R8,区域3内的R9
  • 区域边界路由器(Area Border Router,ABR):R3、R4和R7

1724764537545-58d108ed-dbbe-46ac-ac3d-e31b812149ea.png

Info

采用划分区域的方法,虽然使交换信息的种类增多了,同时也使OSPF协议更加复杂了,但这样做能使每一个区域内部交换路由信息的通信量大大减小,因而使OSPF协议能够用于规模更大的自治系统AS。

1724764675123-77533516-9647-47e5-b6e8-33a8327fa665.png

OSPF特点

  • 和谁交换信息:OSPF使用洪泛法,向本自治系统中所有路由器发送信息。(广播)

(RIP仅仅向自己相邻的几个路由器发送信息)

  • 交换什么信息:与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。

    (RIP发送的信息是本路由器所知道的全部信息,即整个路由表)

  • 何时交换信息:只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。

(RIP不管网络拓扑是否发生变化,路由器之间都要定期交换路由表的信息)

  • 用什么传送信息:OSPF是网络层协议,它不用UDP或TCP,而直接用IP数据报传送(是指将该信息直接作为IP数据报的数据部分,其IP数据报首部的协议字段为89)。而RIP是应用层协议,它在传输层使用UDP。

【补充】

  1. OSPF允许对每条路由设置成不同的代价,对于不同类型的业务可计算出不同的路由。
  2. 若到同一个目的网络有多条相同代价的路径,则可将通信量分配给这几条路径。
  3. OSPF支持可变长度的子网划分和无分类编址CIDR.
  4. 每个链路状态都带上一个32位的序号,序号越大,状态就越新。
  5. 互联网规模很大时,使用OSPF协议要比RIP好的多,它收敛速度很快,不存在坏消息传的慢的问题。
  6. OSPF协议是一种用于自治系统内的路由协议,它是一种基于链路状态路由选择算法的协议,能适用大型全局IP网络的扩展,支持可变长子网掩码,所以OSPF协议可用于管理一个受限地址域的中大型网络。
  7. OSPF协议维护一张它所连接的所有链路状态信息的邻居表和拓扑数据库,使用组播链路状态更新(LinkStateUpdate,LSU)报文实现路由更新,并且只有当网络巳经发生变化时才传送LSU报文。
RIP协议 OSPF协议
类型 距离-向量 分布式链路状态
对象 仅与相邻路由交换路由信息 向AS中所有路由发送路由信息(洪泛法)
信息 发送已知的全部路由信息 发生相邻路由的链路状态
间隔 每间隔一定的时间(30s)发送信息 链路状态变化时发生信息
特点 坏消息传得慢 收敛快
层次 应用层 网络层

4.4.5 边界网关协议BGP(外部网关协议)

相关基本概念

  • 边界网关协议(Border Gateway Protocol,BGP)属于外部网关协议EGP这个类别,用于自治系统AS之间的路由选择协议。
  • 由于在不同AS内度量路由的“代价”(距离、带宽、费用等)可能不同,因此对于AS之间的路由选择,使用统一的“代价”作为度量来寻找最佳路由是不行的。

1724767763227-11b34cb4-df02-4d52-89d6-445a97b237f8.png

【举例】对于AS之间的路由选择,使用统一的“代价”作为度量来寻找最佳路由是不行的。

1724767814094-7ed0bc01-5496-4034-9110-7243334606b8.png

  • AS之间的路由选择还必须考虑相关策略(政治、经济、安全等)。

1724768133898-c225a011-f542-48cc-91fd-fa66c497cdf3.png

自治系统之间的路由选择协议应当允许使用多种路由选择策略。这些策略包括政治、经济、安全等,它们都是由网络管理人员对每一个路由器进行设置的。但这些策略并不是自治系统之间的路由选择协议本身。

Info

BGP只能是力求寻找一条能够到达目的网络且比较好的路由(即不能兜圈子),而并非要寻找一条最佳路由。

【注意 】:BGP交换的路由信息是到达某个目的网络所要经过的各个自治系统序列而不仅仅是下一跳,也就是到达某个网络所经过的路径

  • 在配置BGP时,每个AS的管理员要选择至少一个路由器作为该AS的“BGP发言人”。
  • 一般来说,两个BGP发言人都是通过一个共享网络连接在一起的,而BGP发言人往往就是BGP边界路由器。

1724768332232-fabd445a-2b5e-40cd-9f99-5a3c64fd58e9.png

  • 使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站(neighbor)或对等站(peer)。
  • BGP发言人除了运行BGP协议外,还必须运行自己所在AS所使用的内部网关协议IGP,例如RIP或OSPF。
  • BGP发言人交换网络可达性的信息,也就是要到达某个网络所要经过的一系列自治系统。
  • 当BGP发言人相互交换了网络可达性的信息后,各BGP发言人就根据所采用的策略,从收到的路由信息中找出到达各自治系统的较好的路由,也就是构造出树形结构且不存在环路的自治系统连通图。

1724768630706-35a132d4-56c9-42c7-b1d5-4bc5bda87649.png

  • BGP适用于多级结构的因特网。

1724768724971-7d4030e8-69cc-46d7-bc3c-04885a74169c.png


BGP-4的四种报文

  • 打开OPEN:用来与相邻的另一个BGP发言人建立关系,使通信初始化
  • 保活KEEPALIVE:用来周期性地证实邻站的连通性
  • 更新UPDATE:用来通告某一条路由的信息,以及列出要撤销的多条路由
  • 通知NOTIFICATION:用来发送检测到的差错
     如果一个BGP发言人想与另一个AS的BGP发言人<strong>建立对等关系</strong>,就需要向对方发送<strong>OPEN报文</strong>,若对方接受这种对等关系,就用<strong>KEEPALIVE报文响应</strong>。这样,两个BGP发言人就<strong>建立起了对等关系</strong>。

      一旦建立了对等关系,就要继续<strong>维持</strong>这种关系。双方中的每一方都需要确信对方是存在的,且一直在保持这种对等关系。为此,这两个BGP发言人彼此要<strong>周期性地交换KEEPALIVE报文</strong>(一般每隔30秒)。KEEPALIVE报文只有19字节长(只用BGP报文的通用首部),因此不会造成网络上太大的开销。

      UPDATE报文是BGP的核心内容。BGP发言人可以<strong>用UPDATE报文撤销</strong>它曾经通知过的路由,也可以<strong>宣布</strong>增加新的路由。撤销路由可以一次撤销多条,但增加新路由时,每个UPDATE报文只能增加一条。

具体协议

采用的是路径向量路由选择协议,BGP是应用层协议,它是基于 TCP的。

1724769247364-3f5a41e3-7a54-43d7-bbc2-d9f2bebbf46d.png

BGP工作原理

BGP的工作流程如下:

  • 和谁交换? 与其他AS的邻站BGP发言人交换信息。
  • 交换什么?交换的网络可达性的信息,即要到达某个网络所要经过的一系列AS。
  • 多久交换? 发生变化时更新有变化的部分。

工作原理:

  1. 配置BGP时,每个AS的管理员要选择至少一个路由器,作为该AS的“BGP发言人”,往往是 BGP 边界路由器。使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站(neighbor)或对等站(peer)
  2. 一个BGP发言人与其他AS中的 BGP发言人要交换路由信息,就要先建立TCP连接(端口号为179),然后在此连接上交换 BGP报文以建立 BGP会话,再利用BGP会话交换路由信息(例如增加新的路由,或撤销过时的路由,以及报告出错的情况等)。每个BGP发言人除了必须运行BGP外,还必须运行该AS所用的内部网关协议,如OSPF或RIP。
  3. BGP所交换的网络可达性的信息,就是要到达某个网络所要经过的一系列自治系统。互相交换网络可达性的信息后,各BGP发言人就根据所用的策略,从收到的路由信息中找出到达各自治系统的较好路由。(也就是构造出树形结构、不存在回路的自治系统连通图。)

BGP 发言人和自治系统AS 的关系示意图

【补充】:

  1. BGP交换路由信息的结点数量级是AS个数的数量级,这要比这些AS中的网络数少很多。
  2. 寻找一条较好的路径,取决于找准正确的 BGP发言人,而每个AS中BGP发言人(或边界路由器)的数目是很少的。这样就使得AS之间的路由选择不致过分复杂。
  3. BGP支持CIDR,因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列
  4. 当BGP刚运,BGP的邻站交换整个 BGP路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销方面都有好处。
  5. BGP适用于多级结构的因特网

三种路由协议的比较

1724770535279-1ee7daac-abb8-4a96-b1df-850d6ecd08fc.png

协议 RIP OSPF BGP
类型 内部 内部 外部
路由算法 距离-向量 链路状态 路径-向量
传递协议 UDP,应用层协议 IP,网络层协议 TCP,应用层协议
路径选择 跳数最少 代价最低 较好,非最佳
交换结点 和本结点相邻的路由器 网络中的所有路由器 和本结点相邻的路由器

交换内容
+ 当前本路由器知道的全部信息,即自己的路由表
+ RIP不知道全网的拓扑结构
+ 与本路由器相邻的所有路由器的链路状态
+ 任何一个路由器都知道自己所在区域的拓扑结构,发生的信息只是路由表的一部分
首次: 整个路由表
非首次:有变化的部分

Info

为何采用某个传递协议的原因总结:

  • RIP是一种分布式的基于距离向量的路由选择协议,它通过广播UDP报文来交换路由信息。
  • OSPF是一个内部网关协议,要交换的信息量较大,应使报文的长度尽量短,所以不使用传输层协议(如UDP或TCP),而直接采用IP
  • BGP是一个外部网关协议,在不同的自治系统之间交换路由信息,由于网络环境复杂,需要保证可靠传输,所以采用TCP

助记:1724770413313-40c9c4ff-d481-47fa-b5b9-faa0214196c9.png

4.5 IP多播

4.5.1 多播的概念

让源主机一次发送的单个分组可以抵达用一个组地址标识的若干目的主机,即一对多的通信。

  • 多播需要路由器的支持,能够运行多播协议的路由器称为多播路由器。
  • 多播时仅需发送一份数据,只有在传送路径出现分岔时才将分组复制后继续转发,可大大减轻了发送者的负担和网络负载.

在互联网上进行的多播,称为IP多播。

单播与多播的比较

  • 在一对多的通信中,多播可大大节约网络资源。假设视频服务器向90台主机传送同样的视频节目,单播与多播的比较如下图所示。多播时仅发送一份数据,并且只需发送一次,只有在传送路径出现分岔时才将分组复制后继续转发,因此大大减轻了发送者的负担和网络的负载。多播需要路由器的支持才能实现。能够运行多播协议的路由器称为多播路由器。
  • 多个单播可以仿真组播,但是一个组播所需要的带宽要小于多个单播带宽之和;
  • 用多个单播仿真一个组播时,路由器的时延将很大,而处理一个组播分组的时延是很小的

1724777158297-36f40bf0-4a57-43a1-84e1-e91f6803e585.png

4.5.2 IP多播地址和多播组

多播数据报

定义:源地址是源主机的IP 地址(大多为单播地址),目的地址是IP多播地址。

注意事项:

  • 使用IGMP协议(首部中的协议字段值是2)
  • “尽最大努力交付”,不提供可靠交付,也就是说,不保证一定能够交付给多播组内的所有成员
  • 对多播数据报不产生ICMP差错报文。

IP多播地址

  • 也就是IPv4中的D类地址。前四位是1110,范围是224.0.0.0~239.255.255.255。
  • 每个D类IP地址标志一个多播组(一组有共同需求的主机有相同标识),一台主机可以随时加入或离开一个多播组。
  • 多播地址只能用于目的地址,而不能用于源地址。
  • 多播组成员的数量和所在的地理位置也不受限制,一台主机可以属于几个多播组。
  • 非多播组成员也可以向多播组发送IP多播数据报

IPv4多播地址又可分为预留的多播地址(永久多播地址)、全球范围可用的多播地址以及本地管理的多播地址[RFC 3330]。

1724777577456-d4554d3a-775a-44d4-98b9-876dcbc2f7ef.png

IP多播的分类

  1. 只在本局域网上进行 硬件多播 ;
  2. 在因特网的范围内进行多播。

目前大部分主机都是通过局域网接入互联网的。因此,在互联网上进行多播的最后阶段,还是要把多播数据报在局域网上用硬件多播交付给多播组的所有成员。

1724776975538-d2be6f48-83e8-423d-97f7-b2972e9caa5a.png

Info

多播协议:

多播机制仅应用于UDP,它能将报文同时发送给多个接收者。

(而TCP是一个面向连接的协议,它意味着分别运行在两台主机的进程之间存在一条连接,会一对一地发送)

4.5.3 在局域网上进行硬件多播

  • 由于MAC地址(也称为硬件地址)有多播MAC地址这种类型,因此只要把IPv4多播地址映射成多播MAC地址,即可将IP多播数据报封装在局域网的MAC帧中,而MAC帧首部中的目的MAC地址字段的值,就设置为由IPv4多播地址映射成的多播MAC地址。这样,可以很方便地利用硬件多播来实现局域网内的IP多播。
  • 当给某个多播组的成员主机配置其所属多播组的IP多播地址时,系统就会根据映射规则从该IP多播地址生成相应的局域网多播MAC地址。

1724777689367-52790883-3983-4f0f-a468-2549052b2afc.png

D类IP地址与以太网多播地址的映射关系

  • 以太网多播MAC地址的范围是从01-00-5E-00-00-00到01-00-5E-7F-FF-FF (以01-00-5E打头)

1724776995036-53ecaa2e-47ba-46ce-be74-ec7e9e17e2f3.png

  • 48位MAC可用的低位23位与D类IP地址低23位有一一对应关系 (D类IP地址除1110外可供分配28位,但28位中前5位无法映射到多播MAC地址),即这些多播MAC地址的左起前25个比特都是相同的,剩余23个比特可以任意变化,因此共有2^23个。

1724777931833-33e9686f-1250-4d29-9da0-3004e52b5063.png


1724777978468-ff367447-0a57-4d1d-a61a-3a3174d9bd10.png


举例: IP多播地址与多播MAC地址的映射关系并不是唯一的。

1724778073165-24388cae-bacb-47c8-aa8f-e1de73328a6a.png

  • 多播IP 地址与以太网MAC地址的映射关系不唯一的,主机收到多播数据报时要在IP层利用软件进行过滤,把不是本主机要接收的数据报丢弃。

1724778272082-d106df59-bc22-4223-8ddf-7c2302fe269b.png

4.5.4 IGMP与多播路由协议

网际组管理协议(IGMP)

背景

  • 要在因特网上进行IP多播,就必须要考虑IP多播数据报经过多个多播路由器进行转发的问题。
    • 多播路由器必须根据IP多播数据报首部中的IP多播地址,将其转发到有该多播组成员的局域网。

定义:网际组管理协议(Internet Group Management Protocol,IGMP)是TCP/IP体系结构网际层中的协议,其作用是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(实际上是主机中的某个进程)加入或退出了某个多播组。

1724778578071-9c47e7a4-0a92-4c8c-b385-83c8d4067789.png

1724778601313-b300a78c-5fb7-4d26-a045-c15b2b291f4a.png

注意: IGMP仅在本网络有效,使用IGMP并不能知道多播组所包含的成员数量,也不能知道多播组的成员都分布在哪些网络中。

1724777060116-fa4dde9c-3f29-418b-812e-33ccb4fdbb37.png

  • 协议介绍:是网际协议IP的一个组成部分,同时也向IP提供服务。IGMP报文被封装在IP数据报中传送,但它也向IP提供服务。因此不把IGMP视为一个单独的协议,而视为整个网际协议IP的一个组成部分

1724777017885-7714123f-bd1c-49f8-85cc-11acaa38d07e.png

Info

仅使用IGMP并不能在因特网上进行IP多播。连接在局域网上的多播路由器还必须和因特网上的其他多播路由器协同工作,以便把IP多播数据报用最小的代价传送给所有的多播组成员,这就需要使用多播路由选择协议。

多播路由选择协议的主要任务是:在多播路由器之间为每个多播组建立一个多播转发树。

  • 多播转发树连接多播源和所有拥有该多播组成员的路由器
  • IP多播数据报只要沿着多播转发树进行洪泛,就能被传送到所有拥有该多播组成员的多播路由器。
  • 之后,在多播路由器所直连的局域网内,多播路由器通过硬件多播,将IP多播数据报发送给该多播组的所有成员。

1724778901334-5e4755b4-ef09-473a-85f5-28ecdabb5933.png

网际组管理协议IGMP的三种报文类型

  • 成员报告报文
  • 成员查询报文
  • 离开组报文

1724779060965-c000a8c0-0541-4b9d-b01a-70c4ce5bb887.png

基本工作原理

image
image
image
image
image
image
image
image
image
image

  • 同一网络中的多播路由器可能不止一个,但 没有必要每个多播路由器都周期性地发送IGMP成员查询报文。
  • 只要在这些多播路由器中选择一个作为查询路由器,由查询路由器发送IGMP成员查询报文,而其他的多播路由器仅被动接收响应并更新自己的多播组列表即可。
  • 选择查询路由器的方法:
    • 每个多播路由器若监听到源IP地址比自己的IP地址小的IGMP成员查询报文则退出选举。
    • 最后,网络中只有IP地址最小的多播路由器成为查询路由器。

工作阶段

  • 第一阶段:当某台主机加入新的多播组时,该主机应向多播组的多播地址发送一个IGMP报文,声明自己要成为该组的成员。本地的多播路由器收到IGMP报文后,还要利用多播路由选择协议,把这种组成员关系转发给互联网上的其他多播路由器。
  • 第二阶段:组成员关系是动态的。本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否仍继续是组的成员。只要对某个组有一台主机响应,多播路由器就认为这个组是活跃的。但一个组在经过几次探询后仍然没有一台主机响应,多播路由器就认为本网络上的主机都已离开了这个组,因此就不再把这个组的成员关系转发给其他的多播路由器。

4.6 移动IP

4.6.1 移动IP的概念

移动IP技术介绍

  • 定义:指移动站以固定的IP地址实现跨越不同网络的漫游功能,并保证基于IP的网络权限在漫游过程中不发生任何改变
  • 目标:移动IP的目标是把分组自动地投递给移动站。一个移动站是把其连接点从一个网络或子网改变到另一个网络或子网的主机。
  • 研究的问题:若我们需要在移动中进行TCP传输,则在移动站漫游时,应一直保持这个TCP连接,否则移动站的TCP连接就会断断续续。可见,若要使移动站在移动中的TCP连接不中断,就必须使笔记本的IP地址在移动中保持不变。

移动IP的功能实体

  • 移动结点。具有永久IP地址的移动主机(移动设备)。
  • 本地代理(归属代理)。通常就是连接在归属网络(原始连接到的网络)上的路由器。

在归属网络中代表移动节点执行移动管理功能的实体叫做归属代理

  • 外地代理(外部代理)。通常就是连接在被访网络(移动到另一地点所接入的网络)上的路由器。

在外部网络中帮助移动节点完成移动管理功能的实体称为外部代理。

  • 永久地址(归属地址/主地址)移动站点在归属网络中的原始地址

永久地址和归属网络的关联是不变的

  • 转交地址(辅地址)可以是外部代理的地址或动态配置的一个地址

4.6.2 移动IP通信过程

移动性对因特网应用的影响

1724779655277-ab8f866a-8fca-4667-92d1-3c6c055588d5.png

移动IP技术的相关基本概念

  • 移动IP(Mobile IP)是因特网工程任务组IETF开发的一种技术[RFC 3344],该技术使得移动主机在各网络之间漫游时,仍然能够保持其原来的IP地址不变
  • 移动IP技术还为因特网中的非移动主机提供了相应机制,使得它们能够将IP数据报正确发送到移动主机。
  • 1724779743162-e5994dbf-b87e-4032-913e-1991e0b0457a.png
  • 1724779762708-0f60a45b-64bc-49fd-8137-d20a7facfaa9.png

移动IP技术的基本工作原理

image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image

过程原理和实例

  1. 移动站A在归属网络时,按传统的TCP/IP方式进行通信。
  2. 移动站A漫游到被访网络时,向外地代理进行登记,获得一个临时的转交地址。外地代理要向A的归属代理登记A的转交地址
  3. 归属代理知道移动站A的转交地址后,会构建一条通向转交地址的隧道,将截获的发送给A的IP分组进行再封装,并通过隧道发送给被访网络的外地代理。
  4. 外地代理把收到的封装的IP分组进行拆封,恢复成原始的IP分组,然后发送给移动站A,这样A在被访网络就能收到这些发送给它的IP分组。
  5. 移动站A在被访网络对外发送IP分组时,仍然使用自己的永久地址作为IP分组的源地址,此时显然无须通过A的归属代理来转发,而是直接通过被访网络的外部代理。
  6. 移动站A移动到另一被访网络时,在新外地代理登记后,然后新外地代理将A的新转交地址告诉其归属代理。无论如何移动,A收到的IP分组都是由归属代理转发的。
  7. 移动站A回到归属网络时,A向归属代理注销转交地址。

1724779538542-98f2fe3c-b39d-485c-9897-aecbb077f686.png

A移动到了下一个网络:

  1. 在新外部代理登记注册一个临时的转交地址。
  2. 新外部代理给本地代理发送新的转交地址(覆盖旧的)
  3. 移动站A移动到另一被访网络时,在新外地代理登记后,然后新外地代理将A的新转交地址告诉其归属代理。无论如何移动,A收到的IP分组都是由归属代理转发的。
  4. 通信

A回到了归属网络:

  1. A向本地代理注销转交地址。

移动站A回到归属网络时,A向归属代理注销转交地址

  1. 按原始方式通信。
  2. 移动站A在归属网络时,按传统的TCP/IP方式进行通信

【一些补充】

  • 总体过程:当一个分组到达用户的本地LAN时,它被转发给某一台与本地LAN 相连的路由器。该路由器寻找目的主机,这时本地代理响应该请求,将这些分组封装到一些新IP分组的载荷,并将新分组发送给外部代理,外部代理将原分组解出来后,移交给移动后的主机。
  • 间接收发:移动ip不能直接收和发送分组是间接的接收和发送
  • 阶段描述:移动IP的基本工作过程可以分为代理发现、注册、分组路由与注销4个阶段
  • 分组路由分类:移动IP的分组路由可以分为单播、广播与组播
  • 主地址不变:移动主机在原始本地网时,获得的是主地址,当它移动到一个外地网络中时,需获得一个新的临时辅地址,主地址保持不变;当它移动到另一当它移动到另一个外地网络或返回本地网络时,辅地址改变或撤销,而主地址仍然保持不变。

外地代理的功能

①要为移动站创建一个临时地址,称为转交地址。在上例中,移动站A的转交地址是15.5.6.7/8。

②及时把移动站的转交地址告诉其归属代理。

  • 转交地址是供移动站、归属代理及外地代理(移动设备和两个路由器)使用的,各种应用程序都不会使用。
  • 外地代理要向连接在被访网络上的移动站发送IP分组时,直接使用移动站的MAC地址。

通信过程中网络层的功能

①移动站到外地代理的登记协议;

②外地代理到归属代理的登记协议;

③归属代理数据报封装协议;

④外地代理拆封协议。(4个功能为了支持移动性)

移动IP总结

1724589255060-dc1d90f5-2ee9-4b6f-aea3-a81c55843898.png


4.7 网络层设备

4.7.1 冲突域和广播域

域:冲突或广播在其中发生并传播的区域

冲突域:连接到同一物理介质上的所有节点的集合,这些节点之间存在介质争用的现象(OSI中第一层概念)

  • (第一层)集线器、中继器所连接的结点都属于同一个冲突域,不能划分冲突域。
  • 第2层(网桥、交换机)、第3层(路由器)设备都可以划分冲突域。

广播域:接受同样广播消息的节点集合(OSI中第二层概念)

  • 第1层(集线器等)、第2层(交换机等)设备所连接的结点都属于同一个广播域。
  • 路由器(第3层)可以划分广播域,可以连接不同的广播域。
  • 局域网(LAN)特指使用路由器分割的网络,也就是广播域。

1724770804866-15aed24f-5029-4682-92a5-e2ef91771618.png

路由器: 可以互联两个不同网络层协议的网段。

网桥: 可以互联两个物理层和链路层不同的网段。

集线器: 不能互联两个物理层不同的网段。

4.7.2 路由器的组成和功能

定义:路由器是一种具有多个输入/输出端口的专用计算机,其任务是连接不同的网络(连接异构网络)并完成分组转发。

  • 在同一个网络中传递数据无须路由器的参与,而跨网络通信必须通过路由器进行转发
  • 在多个逻辑网络(即多个广播域)互连时必须使用路由器。
  • 路由器可以连接不同的LAN,连接不同的VLAN,连接不同的WAN,或者把 LAN和WAN互连起来。可隔离广播域。

交付:

  • 直接交付:源主机向目标主机发送数据报时,源主机与目标主机连接在同一个网络上,则直接交付而无须通过路由器。
  • 间接交付:源主机向目标主机发送数据报时,若源主机和目标主机不在同一个网络上,则路由器按照转发表(由路由表得出)指出的路由将分组转发给下一个路由器。跨网络通信必须通过路由器进行转发
  • 判断交付类型:判断一个IP分组的交付方式是直接交付还是间接交付,路由器根据分组的目的IP地址和该路由器接收端口的IP地址是否属于同一个子网来进行判断,间接交付的最后一个路由器肯定直接交付,直接交付在同一网段内,因此不涉及路由器

路由器体系结构图示

1724770876353-d20d62f0-5d66-4067-83b6-9a9c984665cc.png

1724770727306-ccc09858-9558-4787-a025-33da64638ada.png

路由器结构和功能图

1724597720396-a85aa3f9-c7ac-41d6-a6ec-99216b8f8450.png

分组转发部分包括3部分:

①交换结构:根据转发表对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去。

②输入端口:包括物理层、数据链路层和网络层的处理模块

③输出端口:负责从交换结构接收分组,再将其发送到路由器外面的线路上。

路由器的路由选择,也称控制部分 ,包括3部分:

①路由选择处理机,路由选择处理机的任务是根据所选定的路由选择协议构造路由表,同时经常或定期地与相邻路由器交换路由信息而不断地更新和维护路由表。

②路由选择协议,用来更新路由表的算法。

③路由表:它是根据路由算法得出的,一般包括从目的网络到下一跳的映射。

1724771132661-77e3047c-3aa4-44e8-a3e9-124ed685ac58.png1724771163320-ebafa246-2398-444e-831d-c63bc3a47898.png

  • 缓冲队列:端口在网络层的处理模块中都设有一个缓冲队列,用来暂存等待处理或已处理完毕待发送的分组,还可用来进行必要的差错检测。若分组处理的速率赶不上分组进入队列的速率,就会使后面进入队列的分组因缓冲区满而只能被丢弃。(输入或输出队列产生溢出是造成分组丢失的重要原因)
  • 三种交换方式:通过存储器进行交换,通过总线进行交互,通过互联网络进行交互

Info

  • 模型上看:路由器是网络层设备,它实现了网络模型的下三层,即物理层、数据链路层和网络层。
  • 若一个存储转发设备实现了某个层次的功能,则它可以互连两个在该层次上使用不同协议的网段。如网桥实现了物理层和数据链路层,则网桥可以互连两个物理层和数据链路层不同的网段,但中继器实现了物理层后,却不能互连两个物理层不同的网段,这是因为中继器不是存储转发设备,它属于直通式设备。

【一些其他补充】

  • 协议相关:路由器是第三层设备,向传输层及以上层次隐藏下层的具体实现,所以物理层、数据链路层,网络层协议可以不同。而网络层之上的协议数据是路由器所不能处理的,因此网络层以上的高层办议必须相同。
  • IPV4-6互连:在目前的互联网中广泛使用的是TCP/IP协议族,在网络层用的最多是IPv4,所以误认为网络层协议必须相同。而实际上,使用特定的路由器连接IPv4与IPv6网络,就是典型的网络层协议不同而实现互连的例子
  • 存储转发机制:路由器转发一个分组的过程如下:先接收整个分组,然后对分组进行错误检查,如果出错.那么丢弃错误的分组:否则存储该正确的分组。最后根据路由选择协议,将正确的分组转发到合适的端口,这种机制称为存储转发机制。路由器只能根据IP地址进行转发。
  • 完整路径问题:每个路由器都根据路由表选择IP分组的下一跳地址,只有到了下一跳路由器,才能知道再下一跳应当怎样走。主机仅知道到达本地网络的路径,到达其他网络的IP分组均转发到路由器而源主机也只把IP分组发给网关,所以路由器和源主机都不知道分组要经过的完整路径
  • MAC地址作用:在数据链路层,MAC地址用来标识主机或路由器,数据报到达具体的目的网络后,需要知道目的主机的MAC地址才能成功送达,因此需要将IP地址转换成对应的MAC地址(物理地址)
  • 局域网互连:局域网的互连需要路由器作为连接设备,若是远程的局域网,要用到广域网技术
  • 转发速度:路由器是第三层设备,要处理的内容比第二层设备交换机更多,因而转发速度比交换机慢;(设备所在层次越高,延迟越大)
  • 默认设置:路由表中默认路由的目的地址和子网掩码都是0.0.0.0
  • 拥塞控制:当路由器监测到拥塞时,可合理丢弃IP分组,并向发出该IP分组的源主机发送源点抑制的ICMP报文[2012年真题]
  • 差错检验:路由器对收到的IP分组首部进行差错检验,丢弃有差错首部的报文,但不保证IP分组不丢失[2012年真题]
  • 延迟相关:虽然一些路由协议也将延迟等作为参数进行路由选择,但路由协议使用得最多的参数是传输距离此外还有一些其他参数

【拓展-对集线器的介绍】

1724598513264-f22ec93c-28e0-45d7-8740-8a95b79c7dbc.png

路由表

  • 路由表是根据路由选择算法得出的,用于路由选择。
  • 标准的路由表有4个项目:目的网络IP地址、子网掩码、下一跳IP地址、接口。

转发表

  • 转发表是从路由表得出的,其表项和路由表项有直接的对应关系。但转发表的格式和路由表的格式不同,其结构应使查找过程最优化(而路由表则需对网络拓扑变化的计算最优化)。
  • 转发表中含有一个分组将要发往的目的地址,以及分组的下一跳(即下一步接收者的目的地址,实际为MAC地址)。
  • 可以使用一个默认路由代替所有具有相同“下一跳”的项目,并将默认路由设置得比其他项目的优先级低

1724598711608-23d59369-9837-4c6e-9165-f22be2228e62.png

  • 转发:是路由器根据转发表把收到的IP数据报从合适的端口转发出去,它仅涉及一个路由器。
  • 路由选择:涉及很多路由器,路由表是许多路由器协同工作的结果,按照复杂的路由算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由,并由此构造出整个路由表。
  • 分组转发:分组的实际转发是靠直接查找转发表

两表比较

  1. 路由表是根据路由选择算法得出的,主要用途是路由选择,总是用软件实现,转发表可以用软件也可以用硬件实现
  2. 路由表不等于转发表,分组的实际转发是靠直接查找转发表,而不是直接查找路由表,路由表中默认路由的目的地址和子网掩码都是0.0.0.0

二者关系:由于转发表是根据路由表生成的,而路由表又是由路由算法得到的,因此路由算法决定了转发表中的值。