计算机网络学习笔记 4-6章

第 4 章 网络层

【考纲内容】

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

【复习提示】

        本章是历年考查的重中之重,尤其是结合第 3 章、第 5 章、第 6 章出综合题的概率很大。其中 IPv4 和路由的相关知识点是核心,历年真题都有涉及,因此必须牢固掌握其原理,还要多做题,以便灵活应用。本章的其他知识点,如 IPv6、IP 多播、移动 IP 也要有所了解。

4.1 网络层的功能

        网络层提供主机到主机的通信服务,主要任务是将分组从源主机经过多个网络和多段链路传输到目的主机。该任务可划分为分组转发和路由选择两种重要功能。
        OSI 参考模型曾主张在网络层使用面向连接的虚电路服务,认为应由网络自身来保证通信的可靠性。而 TCP/IP 体系的网络层提供的是无连接的数据报服务,其核心思想是应由用户主机来保证通信的可靠性。虚电路和数据报服务将在 4.1.3 节中介绍。
        在互联网采用的 TCP/IP 体系结构中,网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。也就是说,所传送的分组可能出错、丢失、重复、失序或超时,这就使得网络中的路由器可以做得比较简单,而且价格低廉。通信的可靠性可以由更高层的传输层来负责。采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用。互联网能够发展到今日的规模,充分证明了当初采用这种设计思想的正确性。

4.1.1 异构网络互连

        互联网是由全球范围内数以百万计的异构网络互连起来的。这些网络的拓扑结构、寻址方案、差错处理方法、路由选择机制等都不尽相同。网络层所要完成的任务之一就是实现这些异构网络的互连。网络互连是指将两个以上的计算机网络,通过一定的方法,用一些中继系统相互连接起来,以构成更大的网络系统。根据所在的层次,中继系统分为以下 4 种:
        1)物理层中继系统:转发器,集线器。
        2)数据链路层中继系统:网桥或交换机。
        3)网络层中继系统:路由器。
        4)网络层以上的中继系统:网关。
        当使用物理层或数据链路层的中继系统时,只是把一个网络扩大了,而从网络层的角度看,它仍然是同一个网络,一般并不称为网络互连。因此,网络互连通常是指用路由器进行网络连接和路由选择。路由器是一台专用计算机,用于在互联网中进行路由选择。

注意:
由于历史原因,许多有关 TCP/IP 的文献也将网络层的路由器称为网关。

        TCP/IP 在网络互连方面的做法是在网络层采用标准化协议,但相互连接的网络可以是异构的。IP 网络的概念如图 4.1 所示。图 4.1 (a) 表示许多计算机网络通过一些路由器进行互连。因为参与互连的计算机网络都使用相同的 IP,通过 IP 就可使这些性能各异的网络在网络层上看起来像是一个统一的网络,所以可把互连后的网络视为如图 4.1 (b) 所示的一个虚拟互连网络,简称 IP 网络。

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

4.1.2 路由与转发

        路由器主要完成两个功能:一是路由选择(确定哪一条路径),二是分组转发(当一个分组到达时所采取的动作)。前者根据路由选择协议构造并维护路由表。后者处理通过路由器的数据流,关键操作是转发表查询、转发及相关的队列管理和任务调度等。
        1)路由选择:根据路由协议构造路由表,同时经常或定期地与相邻路由器交换信息,获取网络最新拓扑,动态更新维护路由表,以决定分组到达目的地点的最优路径。
        2)分组转发:指路由器根据转发表将分组从合适的端口转发出去。
        路由表是根据路由选择算法得出的,而转发表是从路由表得出的。转发表的结构应使查找过程最优化,路由表则需要最优化网络拓扑变化的计算。在讨论路由选择的原理时,往往不区分转发表和路由表,而笼统地使用路由表一词。

4.1.3 网络层提供的两种服务

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

1.虚电路

命题追踪 虚电路网络的特性(2020)
        在虚电路方式中,当两台计算机进行通信时,应当先建立网络层的连接,也就是建立一条逻辑上的虚电路(Virtual Circuit,VC),连接一旦建立,就固定了虚电路对应的物理路径。与电路交换类似,整个通信过程分为三个阶段:虚电路建立、数据传输与虚电路释放。
        每次建立虚电路时,将一个未用过的虚电路号(VCID)分配给该虚电路,以区别于本系统中的其他虚电路,然后双方就沿着已建立的虚电路传送分组。分组的首部仅在连接建立时使用完整的目的地址,之后每个分组的首部只需携带这条虚电路的编号即可。在虚电路网络中的每个节点上都维持一张虚电路表,表中每项记录一个打开的虚电路的信息,包括在接收链路和发送链路上的虚电路号、前一节点和下一节点的标识,它是在虚电路建立过程中确定的。
        虚电路方式的工作原理如图 4.2 所示
        1)数据传输前,主机 A 与主机 B 先建立连接,主机 A 发出 “呼叫请求” 分组,该分组通过中间节点送往主机 B,若主机 B 同意连接,则发送 “呼叫应答” 分组予以确认。
        2)虚电路建立后,主机 A 和主机 B 就可相互传送数据分组。
        3)传送结束后,主机 A 通过发送 “释放请求” 分组来拆除虚电路,逐段断开整个连接。
        通过上面的例子,可总结出虚电路服务具有如下特点:
        1)虚电路通信链路的建立和拆除需要时间开销,对交互式应用和少量的短分组情况显得很浪费,但对长时间、频繁的数据交换效率较高。
        2)虚电路的路由选择体现在连接建立阶段,连接建立后,就确定了传输路径。
        3)虚电路提供了可靠的通信功能,能保证每个分组正确且有序到达。此外,还可对两个端点的流量进行控制,当接收方来不及接收数据时,可以通知发送方暂缓发送。
        4)虚电路有一个致命的弱点,即当网络中的某个节点或某条链路出现故障而彻底失效时,所有经过该节点或该链路的虚电路将遭到破坏。
        5)分组首部不包含目的地址,包含的是虚电路号,相对于数据报方式,其开销小。
虚电路之所以是虚,是因为这条电路不是专用的,每个节点到其他节点之间的链路可能同时有若干条虚电路通过,也可能同时在多个节点之间建立虚电路。
注意,图 4.2 所示的数据传输过程是有确认的传输,B 收到分组后要发回相应的确认。

2.数据报
        网络在发送分组前不需要先建立连接。源主机的高层协议将报文拆成若干较小的数据段,并加上地址等控制信息后构成分组。中间节点存储分组很短一段时间,找到最佳的路由后,尽快转发每个分组。网络层不提供服务质量的承诺。因为网络不提供端到端的可靠传输服务,所以这就使得网络中的路由器比较简单,且造价低廉(与电话网络相比)。
        下面用图 4.3 中的例子来说明数据报服务的原理(此处无图 4.3 实际内容,按原文逻辑叙述)。假定主机 A 向主机 B 发送分组。
1)主机 A 先将分组逐个发往与它直接相连的交换节点 A,交换节点 A 缓存收到的分组。
2)然后查找自己的转发表。因为不同时刻的网络状态不同,所以转发表的内容可能不完全相同,所以有的分组转发给交换节点 C,有的分组转发给交换节点 D。
3)网络中的其他节点收到分组后,类似地转发分组,直到分组最终到达主机 B。
当分组正在某一链路上传送时,分组并不占用网络其他部分的资源。因为采用存储转发技术,资源是共享的,所以主机 A 在发送分组时,主机 B 也可同时向其他主机发送分组。
通过上面的例子,可总结出数据报服务具有如下特点:
1)发送分组前不需要建立连接。发送方可随时发送分组,网络中的节点可随时接收分组。
2)网络尽最大努力交付,传输不保证可靠性,所以分组可能出错或丢失;网络为每个分组独立地选择路由,转发的路径可能不同,因此分组不一定按序到达目的节点。
3)发送的分组中要包括发送方和接收方的完整地址,以便可以独立传输。
4)当分组在交换节点存储转发时,需要排队等候处理,这会带来一定的时延。当网络发生拥塞时,这种时延会大大增加,交换节点还可根据情况丢弃部分分组。
5)网络具有冗余路径,当某个交换节点或一条链路出现故障时,可相应地更新转发表,寻找另一条路径转发分组,对故障的适应能力强。
6)收发双方不独占某条链路,资源利用率较高。


        采用这种设计思想的好处是:网络的造价大大降低、运行方式灵活、能够适应多种应用。互联网能够发展到今天的规模,充分证明了当初采用这种设计思想的正确性。
        数据报服务和虚电路服务的比较见表 4.1。

4.1.4 SDN 的基本概念

        网络层的主要任务是转发和路由选择。可以将网络层抽象地划分为数据平面(也称转发层面)和控制平面,转发是数据平面实现的功能,而路由选择是控制平面实现的功能。
        软件定义网络(Software Defined Network,SDN)是近年流行的一种创新网络架构,它采用集中式的控制平面和分布式的数据平面,两个平面相互分离,控制平面利用控制 - 数据接口对数据平面上的路由器进行集中式控制,方便软件来控制网络。传统网络中的路由器既有转发表,又有路由选择软件,即既有数据平面,又有控制平面。但是在图 4.4 所示的 SDN 结构中(此处无图 4.4 实际内容,按原文逻辑叙述),路由器都变得简单了,它的路由选择软件都不需要了,因此路由器之间不再相互交换路由信息。在网络的控制平面有一个逻辑上的远程控制器(可由多个服务器组成)。远程控制器掌握各主机和整个网络的状态,为每个分组计算出最佳路由,通过 Openflow 协议(或其他途径)将转发表(在 SDN 中称为流表)下发给路由器。路由器的工作很单纯,即收到分组、查找转发表、转发分组。

        这样,网络又变成集中控制的,而本来互联网是分布式的。SDN 并非要把整个互联网都改造成如图 4.4 所示的集中控制模式,这是不现实的。然而,在某些具体条件下,特别是像一些大型的数据中心之间的广域网,使用 SDN 模式来建造,就可使网络的运行效率更高。

命题追踪 SDN 的南向接口的定义(2022)

        SDN 的可编程性通过为开发者提供强大的编程接口,使得网络具有很好的可编程性。对上层应用的开发者,SDN 提供的编程接口称为北向接口,北向接口提供了一系列丰富的 API,开发者可以在此基础上设计自己的应用,而不必关心底层的硬件细节。SDN 控制器和转发设备建立双向会话的接口称为南向接口,通过不同的南向接口协议(如 Openflow),SDN 控制器就可兼容不同的硬件设备,同时可在设备中实现上层应用的逻辑。SDN 控制器集群内部控制器之间的通信接口称为东西向接口,用于增强整个控制平面的可靠性和可拓展性。

SDN 的优点:

1.全局集中式控制和分布式高速转发,既利于控制平面的全局优化,又利于高性能的网络转发。

2.灵活可编程与性能的平衡,控制和转发功能分离后,使得网络可以由专有的自动化工具以编程方式配置。

3.降低成本,控制和数据平面分离后,尤其是在使用开放的接口协议后,就实现了网络设备的制造与功能软件的开发相分离,从而有效降低了成本。

SDN 的问题:

1.安全风险,集中管理容易受攻击,若崩溃,则整个网络会受到影响。

2.瓶颈问题,原本分布式的控制平面集中化后,随着网络规模扩大,控制器可能成为网络性能的瓶颈。

4.1.5 拥塞控制

        因出现过量的分组而引起网络性能下降的现象称为拥塞。判断网络是否进入拥塞状态的方法是,观察网络的吞吐量与网络负载的关系:若随着网络负载的增加,网络的吞吐量明显小于正常的吞吐量,则网络就可能已进入轻度拥塞状态;若网络的吞吐量随着网络负载的增大而下降,则网络就可能已进入拥塞状态。拥塞控制主要解决的问题是如何获取网络中发生拥塞的信息,从而利用这些信息进行控制,以避免因拥塞而出现分组的丢失。
        拥塞控制的作用是确保网络能够承载所达到的流量,这是一个全局性的过程,涉及网络中所有的主机、路由器及导致网络传输能力下降的所有因素。单一地增加资源并不能解决拥塞。
        与流量控制的区别:流量控制往往是指在发送方和接收方之间的点对点通信量的控制。流量控制所要做的是抑制发送方发送数据的速率,以便使接收方来得及接收。
拥塞控制的方法有两种:
        1)开环控制:在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。这是一种静态的预防方法。一旦整个系统启动并运行,中途就不再需要修改。开环控制手段包括确定何时可接收新流量、何时可丢弃分组及丢弃哪些分组,确定何种调度策略等。所有这些手段的共性是,在做决定时不考虑当前网络的状态。
        2)闭环控制:事先不考虑有关发生拥塞的各种因素,采用监测网络系统去监视,及时检测哪里发生了拥塞,然后将拥塞信息传到合适的地方,以便调整网络系统的运行,并解决出现的问题。闭环控制是基于反馈环路的概念,是一种动态的方法。

4.1.6 本节习题精选

单项选择题

01.路由器连接的异构网络是指( )。
A. 网络的拓扑结构不同
B. 网络中计算机操作系统不同
C. 数据链路层协议和物理层协议至少有一个不同
D. 数据链路层协议相同,物理层协议不同

01.C
        网络的异构性是指传输介质、数据编码方式、链路控制协议及不同的数据单元格式和转发机制,这些特点分别在物理层协议和数据链路层协议中定义。

02.网络中发生了拥塞,根据是( )。

A. 随着通信子网负载的增加,吞吐量也增加
B. 网络节点接收和发出的分组越来越少
C. 网络节点接收和发出的分组越来越多
D. 随着通信子网负载的增加,吞吐量反而降低

02.D
        拥塞现象是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致这部分乃至整个网络性能下降的现象,严重时甚至导致网络通信业务陷入停顿,即出现死锁现象。选项 A 的网络性能显然是提高的,选项 B、C 中网络节点接收和发出的分组多少与网络的吞吐量并不成正比,不能确定网络是否拥塞。

03.在路由器互连的多个局域网的结构中,要求每个局域网( )。
A. 物理层协议可以不同,而数据链路层及其以上的高层协议必须相同
B. 物理层、数据链路层协议可以不同,而数据链路层以上的高层协议必须相同
C. 物理层、数据链路层、网络层协议可以不同,而网络层以上的高层协议必须相同
D. 物理层、数据链路层、网络层及高层协议都可以不同

03.C
        路由器是第三层设备,向传输层及以上层隐藏下层的具体实现,所以物理层、数据链路层、网络层协议可以不同。而网络层之上的协议数据是路由器所不能处理的,因此网络层以上的高层协议必须相同。本题容易误选 B,主要原因是在目前的互联网中广泛使用的是 TCP/IP 族,在网络层用的多是 IPv4,所以误认为网络层协议必须相同。实际上,使用特定的路由器连接 IPv4 与 IPv6 网络,就是典型的网络层协议不同而实现互连的例子。

04.在互联网中,一个路由器的路由表通常包含( )。
A. 目的网络和到达目的网络的完整路径
B. 所有目的主机和到达该目的主机的完整路径
C. 目的网络和到达该目的网络路径上的下一个路由器的 IP 地址
D. 目的网络和到达该目的网络路径上的下一个路由器的 MAC 地址

04.C
        路由器是网络层设备,其任务是转发分组。每个路由器都维护一个路由表以决定分组的转发。为了提高路由器的查询效率并减少路由表维护的内容,路由表只保留到达目的地址的下一个路由器的地址,而不保留整个传输路径的信息。另外,采用目的网络可使每个路由表项包含很多目的主机 IP 地址,这样可减少路由表中的项目。因此,路由表通常包含目的网络和到达该目的网络路径上的下一个路由器的 IP 地址。

05.路由器转发分组的根据是报文的( )。
A. 端口号
B. MAC 地址
C. IP 地址
D. 域名

05.C
路由器是网络层设备,网络层通过 IP 地址标识主机,所以路由器根据 IP 地址转发分组。

06.路由器在能够开始向输出链路传输分组的第一位之前,必须先接收到整个分组,这种机制称为( )。
A. 存储转发机制
B. 直通交换机制
C. 分组交换机制
D. 分组检测机制

06.A

        路由器转发一个分组的过程如下:先接收整个分组,然后对分组进行错误检查,若出错,则丢弃错误的分组;否则存储这个正确的分组。最后根据路由选择协议,将正确的分组转发到合适的端口,这种机制称为存储转发机制。

07.在互联网中,IP 分组的传输需要经过源主机和中间路由器到达目的主机,通常( )。
A. 源主机和中间路由器都知道 IP 分组到达目的主机需要经过的完整路径
B. 源主机和中间路由器都不知道 IP 分组到达目的主机需要经过的完整路径
C. 源主机知道 IP 分组到达目的主机需要经过的完整路径,而中间路由器不知道
D. 源主机不知道 IP 分组到达目的主机需要经过的完整路径,而中间路由器知道

07. B

        每跳路由器都根据路由表来选择 IP 分组的下一跳地址,只有到了下一跳路由器,才知道再下一跳应当怎样走。主机仅知道到达本地网络的路径,到达其他网络的 IP 分组均转发到路由器。而源主机也只把 IP 分组发给网关,所以路由器和源主机都不知道 IP 分组要经过的完整路径。

08.下列协议中,属于网络层协议的是( )。
I. IP II. TCP III. FTP IV. ICMP
A. I 和 II
B. II 和 III
C. III 和 IV
D. I 和 IV

08. D

TCP 属于传输层协议,FTP 属于应用层协议,只有 IP 和 ICMP 属于网络层协议。

09.下列关于各种数据交换方式的叙述中,错误的是( )。
A. 电路交换不提供差错控制功能
B. 分组交换的分组有最大长度的限制
C. 虚电路是面向连接的,它提供的是一种可靠的服务
D. 在故障率很高的传输系统中,选择虚电路方式更合适

09. D

        电路交换不具备差错控制能力,选项 A 正确。分组交换对每个分组的最大长度有规定,超过此长度的分组都被分割成几个长度较小的分组后再发送,选项 B 正确。
        分组交换又分为数据报和虚电路两种方式。数据报是无连接的,它提供的是不可靠的服务,分组有可能丢失、失序,也不保证到达的时间,但因每个分组独立选择传送路径,当某个节点发生故障时,后续的分组可另选路径,另外通过高层协议如 TCP 也可保证其传输的可靠性和有序性。虚电路是面向连接的,它提供的是可靠的服务,能保证数据的可靠性和有序性,但是一旦虚电路中的某个节点出现故障,就必须重新建立一条虚电路,对于故障率高的传输系统,易出现节点故障,这项任务就显得相当艰巨,因此采用数据报方式更合适。选项 C 正确、选项 D 错误。

10.下列关于虚电路服务和数据报服务的叙述中,正确的是( )。
A. 虚电路服务和数据报服务都是无连接的服务
B. 数据报服务中,分组在网络中沿同一条路径传输,并且按发出顺序到达
C. 虚电路在建立连接后,分组中需携带虚电路标识
D. 虚电路中的分组到达顺序可能与发出顺序不同

10. C

        虚电路服务是有连接的,属于同一条虚电路的分组,根据该分组的相同虚电路标识,按照同一路由转发,保证分组的有序到达。在数据报服务中,网络为每个分组独立地选择路由,传输既不保证可靠性,又不保证分组的按序到达。

11.同一报文中的分组可以由不同的传输路径通过通信子网的方法是( )。
A. 分组交换
B. 电路交换
C. 虚电路方式
D. 数据报方式

11. D

        分组交换有两种方式:虚电路和数据报。在虚电路服务中,属于同一条虚电路的分组按照同一路由转发;在数据报服务中,网络为每个分组独立地选择路由,传输既不保证可靠性,又不保证分组的按序到达。

12.下列有关数据报和虚电路的叙述中,错误的是( )。
A. 数据报方式中,若某个节点因故障而丢失分组,则其他分组仍可正常传输
B. 数据报方式中,每个分组独立地进行路由选择和转发,不同分组之间没有必然联系
C. 虚电路方式中,属于同一条虚电路的分组按照同一路由转发
D. 尽管虚电路方式是面向连接的,但它并不保证分组的有序到达

12. D

关于虚电路和数据报的比较,请参考表 4.1。

13.下列关于虚电路和数据报的叙述中,正确的是( )。
A. 虚电路是一种分组交换技术,但不能按照存储转发的方式工作
B. 虚电路的连接是临时性连接,当会话结束时就释放这种连接
C. 数据报服务不提供可靠传输,但可以保证分组的有序到达
D. 数据报服务中,每个分组都必须携带源地址和目的地址

13. D

        虚电路是一种分组交换技术,它可以采用存储转发的方式工作,选项 A 错误。虚电路不只是临时性的,它提供的服务包括永久性虚电路(PVC)和交换型虚电路(SVC),其中前者是一种提前定义好的、基本上不需要任何建立时间的端点之间的连接,而后者是端点之间的一种临时性连接,这些连接只持续所需的时间,且在会话结束时就取消这种连接,选项 B 错误。数据报服务是无连接的,既不提供可靠性保障,又不保证分组的有序到达,选项 C 错误。在数据报服务中,每个分组都必须携带源地址和目的地址;而虚电路服务中,建立连接后,分组只需携带虚电路标识。

14.下列关于虚电路的说法中,正确的是( )。
A. 虚电路依赖其他协议实现差错控制
B. 采用虚电路方式发送分组时,分组首部都必须包含目的地址
C. 虚电路结合了电路交换的思想,适合对实时性要求较高的长时间通信
D. 多站点同时使用一段物理链路实行虚电路交换会产生冲突,无法正常通信

14. C

        虚电路提供的是可靠的通信服务,本身就可实现差错控制。分组仅在连接建立时才需要使用完整的目的地址,之后每个分组只需携带这条虚电路的编号即可。多站点同时使用一段物理链路实现虚电路交换不会产生冲突,因为每个分组都有一个虚电路号来标识所属的虚电路。

15.下列关于虚电路的说法中,正确的是( )。
A. 虚电路和电路交换一样,在数据传输前要建立物理连接
B. 虚电路中间节点发生故障后,可沿其他路径继续通信,无须重新建立连接
C. 虚电路只有建立连接的分组需要携带源地址和目的地址
D. 在虚电路上传送的同一个会话的数据分组可以走不同的路径

15. C

        虚电路是一种分组交换技术,它在数据传输前要建立逻辑连接而非物理连接,选项 A 错误。虚电路的中间节点发生故障后,会导致整条虚电路失效,需要重新建立连接,选项 B 错误。虚电路只有建立连接的分组需要携带目的地址,以进行路由选择,之后传送的分组只需携带虚电路号即可。一个会话的虚电路是事先建立好的,因此它的数据分组所走的路径也是固定的,选项 D 错误。

16.下列 4 种传输方式中,由网络负责差错控制和流量控制,分组按顺序被递交的是( )。
A. 电路交换
B. 报文交换
C. 虚电路分组交换
D. 数据报分组交换

16. C

        电路交换和报文交换不采用分组交换技术。数据报传输方式没有差错控制和流量控制机制,也不保证分组按序交付。虚电路方式提供面向连接的、可靠的、保证分组按序到达的网络服务。

17.下列各种描述中,( )不是软件定义网络(SDN)的特点。
A. 控制与转发功能分离
B. 控制平面集中化
C. 接口开放可编程
D. Openflow 取代了路由协议

17. D

        选项 A、B 和 C 都是 SDN 的特点。Openflow 协议是控制平面和数据平面之间的接口。在 SDN 中,路由器之间不再相互交换路由信息,由远程控制器计算出最佳路由。

18.下列关于 SDN(软件定义网络)的描述中,错误的是( )。
I. SDN 是近年来出现的一种新型物理网络结构
II. OpenFlow 交换机基于 “流表” 来转发分组
III. SDN 远程控制器位于 OpenFlow 交换机中
IV. OpenFlow 可视为 SDN 的控制层面与数据层面的通信接口
A. I 和 III
B. I 和 IV
C. II 和 IV
D. I、III 和 IV

18. A

        SDN 是一种新型网络体系结构,是一种设计、构建和管理网络的新方法,不是一种新型物理网络结构。在 SDN 中,完成 “匹配 + 动作” 的设备通常也称 OpenFlow 交换机。相应地,在 SDN 中取代传统路由器中转发表的是流表。SDN 远程控制器是一种控制平面的实现方式,它由一个远程的服务器来计算和分发流表给网络设备,SDN 远程控制器不在 OpenFlow 交换机中。

19.【2011 统考真题】TCP/IP 模型的网络层提供的是( )。
A. 无连接不可靠的数据报服务
B. 无连接可靠的数据报服务
C. 有连接不可靠的虚电路服务
D. 有连接可靠的虚电路服务

19. A

        TCP/IP 的网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。考察 IP 首部,若是面向连接的,则应有用于建立连接的字段,但是首部中没有;若提供可靠的服务,则至少应有序号和检验和两个字段,但是 IP 分组头中也没有(IP 首部中只有首部检验和)。通常有连接、可靠的应用是由传输层的 TCP 实现的。

20.【2020 统考真题】下列关于虚电路网络的叙述中,错误的是( )。
A. 可以确保数据分组传输顺序
B. 需要为每条虚电路预分配带宽
C. 建立虚电路时需要进行路由选择
D. 依据虚电路号(VCID)进行数据分组转发

20. B

        在建立虚电路的阶段,分组才需要携带完整的目的地址,以进行路由器选择。之后,每个分组只需携带短的虚电路号即可,属于同一条虚电路的分组按照同一路由进行转发,分组到达终点的顺序与发送顺序相同,可以保证有序传输。虚电路只是一条逻辑上的连接,并不是一条物理上的连接,因此不需要为每条虚电路预分配带宽。

21.【2022 统考真题】在 SDN 网络体系结构中,SDN 控制器向数据平面的 SDN 交换机下发流表时所使用的接口是( )。
A. 东向接口
B. 南向接口
C. 西向接口
D. 北向接口

21. B

        SDN 对上层开发者提供的编程接口称为北向接口,而南向接口则负责控制平面和数据平面间的通信,所以 SDN 控制器向数据平面的 SDN 交换机下发流表时使用南向接口。

4.2 IPv4

4.2.1 IPv4 分组

        IPv4(版本 4)即现在普遍使用的网际协议(Internet Protocol,IP)。IP 定义数据传送的基本单元 ——IP 分组及其确切的数据格式。IP 也包括一套规则,指明分组如何处理、错误怎样控制。特别是 IP 还包含非可靠投递的思想,以及与此关联的路由选择的思想。

1.IPv4 分组的格式

命题追踪 IP 首部的分析 / 各字段的含义(2011、2012)
        一个 IP 分组(或称 IP 数据报)由首部和数据部分组成。首部前一部分的长度固定,共 20B,是所有 IP 分组必须具有的。在首部固定部分的后面是一些可选字段,其长度可变,用来提供错误检测及安全等机制。IP 数据报的格式如图 4.5 所示。


IPv4 首部的部分重要字段含义如下:
1)版本:占 4 位。指 IP 的版本,IPv4 数据报中该字段的值是 4。
2)首部长度:占 4 位。以 4B 为单位,最大可表示的首部长度为 60B(15×4B)。最常用的首部长度是 20B(5×4B),该字段的值是 5,此时不使用任何可选字段。
注意:IP 首部前两个字节往往以 0x45 开头,解题时可用于定位 IP 数据报的开始位置。
3)总长度:占 16 位。指首部和数据之和的长度,单位为字节,因此数据报的最大长度为2^16−1=65535B。以太网帧的最大传送单元(MTU)为 1500B,因此当一个 IP 数据报封装成帧时,数据报的总长度(首部加数据)一定不能超过下面的数据链路层的 MTU 值。
4)标识:占 16 位。它是一个计数器,每产生一个数据报就加 1,并赋值给标识字段。但它并不是 “序号”(因为 IP 是无连接服务)。当一个数据报的长度超过网络 MTU 时,必须分片,此时每个数据报片都复制一次标识号,以便能正确地重装成原来的数据报。
5)标志(Flag):占 3 位。标志字段的最低位为 MF,MF = 1 表示后面还有分片,MF = 0 表示最后一个分片。标志字段中间的一位是 DF,只有当 DF = 0 时才允许分片。
6)片偏移:占 13 位。它指出较长的数据报在分片后,某片在原数据报中的相对位置,片偏移以 8B 为偏移单位。除最后一个分片外,每个分片的长度一定是 8B 的整数倍。
命题追踪 TTL 字段的分析与计算(2014、2024)

7)生存时间(TTL):占 8 位。数据报在网络中可通过的路由器数的最大值,标识数据报在网络中的寿命,以确保数据报不会永远在网络中循环。路由器在转发数据报前,先将 TTL 减 1。若 TTL 被减为 0,则该数据报必须丢弃。
8)协议:占 8 位。指出此数据报携带的数据使用何种协议,即数据报的数据部分应上交给哪个协议进行处理,如 TCP、UDP 等。其中值为 6 表示 TCP,值为 17 表示 UDP。
9)首部检验和:占 16 位。它只检验数据报的首部,不包括数据部分,不检验数据部分可减少计算的工作量。数据报每经过一个路由器,其首部中的某些字段(如生存时间、总长度、标志、片偏移、源 / 目的地址)都可能发生变化,因此路由器都要重新计算首部检验和。首部检验和的计算方法与 UDP 和 TCP 的检验和的计算方法相同,具体见 5.2.2 节。
10)源地址字段:占 4B,标识发送方的 IP 地址。
11)目的地址字段:占 4B,标识接收方的 IP 地址。
注意:
        ①在 IP 数据报首部中有三个关于长度的标记,即首部长度、总长度、片偏移,它们的基本单位分别为 4B、1B、8B(需记住)。题中常出现这几个长度之间的加减运算。另外,读者要熟悉 IP 数据报首部中的各个字段的意义和功能,但不需要记忆 IP 数据报的首部,正常情况下若需要参考首部,则题目会直接给出。第 5 章学习的 TCP、UDP 的首部也是一样的。②在分析 IP 首部时,IP 地址通常是用十六进制表示的,要注意其与十进制之间的转换。

2.IP 数据报分片
        一个链路层数据帧能承载的最大数据量称为最大传送单元(MTU)。因为 IP 数据报被封装在链路层的帧中,因此链路层的 MTU 严格地限制了 IP 数据报的长度,而且在 IP 数据报的源与目的地路径上的各段链路可能使用不同的链路层协议,有不同的 MTU。例如,以太网的 MTU 为 1500B,而许多广域网的 MTU 不超过 576B。当 IP 数据报的总长度大于链路 MTU 时,就需要将 IP 数据报中的数据分装在多个较小的 IP 数据报中,这些较小的数据报称为片。
命题追踪 分片时会影响首部中的哪些字段(2011)
        片在目的地的网络层被重新组装。目的主机使用 IP 首部中的标识、标志和片偏移字段来完成对片的重组。创建一个 IP 数据报时,源主机为该数据报加上一个标识号。当一个路由器需要将一个数据报分片时,形成的每个数据报(片)都具有原始数据报的标识号。当目的主机收到来自同一发送主机的一批数据报时,它可通过检查数据报的标识号来确定哪些数据报属于同一个原始数据报的片。IP 首部中的标志位占 3 位,但只有后 2 位有意义,分别是 DF(Don't Fragment)位和 MF(More Fragment)位。只有当 DF = 0 时,该 IP 数据报才可被分片。MF 则用来告知目的主机该 IP 数据报是否为原始数据报的最后一个片。当 MF = 1 时,表示相应的原始数据报还有后续的片;当 MF = 0 时,表示该数据报是相应原始数据报的最后一个片。目的主机在对片进行重组时,使用片偏移字段来确定片应放在原始 IP 数据报的哪个位置。
命题追踪 IP 分片的原理及相关字段的分析(2021)
        IP 分片涉及一定的计算。例如,一个长 4000B 的 IP 数据报(首部 20B,数据部分 3980B)到达一个路由器,需要转发到一条 MTU 为 1500B 的链路上。这意味着原始数据报中的 3980B 数据必须分配到 3 个独立的片中(每片也是一个 IP 数据报),每片的数据部分依次为 1480B、1480B 和 1020B。假定原始数据报的标识号为 777,则分成的 3 片如图 4.6 所示(此处无图 4.6 实际内容,按原文逻辑叙述)。可见,因为偏移值的单位是 8B,所以除最后一个片外,其他所有片中的数据部分都为 8B 的倍数。

4.2.2 IPv4 地址与 NAT

1.IPv4 地址
        IP 地址是给连接到互联网上的每台主机(或路由器)的每个接口,分配的一个在全球范围内唯一的 32 位标识符。IP 地址由互联网名字和数字分配机构 ICANN 进行分配。为方便书写和记忆,常把 32 位 IP 地址分成 4 段,每段 8 位,用等效的十进制数表示,并在每段数字之间加一个小数点,即一个 IP 地址用 4 段十进制数表示,称为点分十进制记法。
        互联网早期采用的是分类的 IP 地址,如下所示:

        无论哪类 IP 地址,都由网络号和主机号两部分组成。即 IP 地址::={<网络号>, < 主机号 >}。其中网络号标志主机(或路由器)所连接到的网络。一个网络号在整个互联网范围内必须是唯一的。主机号标志该主机(或路由器)。一个主机号在它前面的网络号所指明的网络范围内必须是唯一的。由此可见,一个 IP 地址在整个互联网范围内是唯一的。
命题追踪 特殊 IP 地址 0.0.0.0 的用途(2017)
        在各类 IP 地址中,有些 IP 地址具有特殊用途,不用作主机的 IP 地址:

        主机号全为 0 表示本网络本身,如 202.98.174.0。

        主机号全为 1 表示本网络的广播地址,也称直接广播地址,如 202.98.174.255。

        127.×.×.× 保留作为本地软件环回测试(Loopback Test)本主机的进程之间的通信用,本主机不会将目的地址为环回地址的 IP 数据报发送到任何网络。

        32 位全为 0,即 0.0.0.0,表示本网络上的本主机(见 DHCP)。

        32 位全为 1,即 255.255.255.255,表示受限广播地址,只在本网络上进行广播。
常用的三种类别 IP 地址的使用范围见下表:

        在表4.2中,A 类地址可用的网络数为2^7−2,减 2 的原因是:第一,网络号字段全为 0 的 IP 地址是保留地址,意思是 “本网络”;第二,网络号为 127 的 IP 地址是环回自检地址。每个网络中的最大主机数减 2 的原因是:全 0 和全 1 的主机号一般不指派。

IP 地址有以下重要特点:

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

2. 网络地址转换(NAT)

        网络地址转换(Network Address Translation,NAT)是指通过将专用网络地址(如 Intranet)转换为公用地址(如 Internet),从而对外隐藏内部管理的 IP 地址。它使得整个专用网只需要一个全球 IP 地址就可与互联网连通,因为专用网本地 IP 地址是可重用的,所以 NAT 大大节省了 IP 地址的消耗。同时,它隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。

命题追踪 私有 IP 地址访问 Internet 的处理(2011)

        此外,为了网络安全,划出了三个私有 IP 地址块。私有 IP 地址只用于 LAN,不用于 WAN 连接(因此私有 IP 地址不能直接用于互联网,必须通过网关利用 NAT 将私有 IP 地址转换为互联网中合法的全球 IP 地址后,才能出现在互联网上),并且允许私有 IP 地址被 LAN 重复使用。这有效地解决了 IP 地址不足的问题。这三个私有 IP 地址块如下:
1)10.0.0.0/8,即 10.0.0.0~10.255.255.255,相当于 1 个 A 类网络。
2)172.16.0.0/12,即 172.16.0.0~172.31.255.255,相当于 16 个连续的 B 类网络。
3)192.168.0.0/16,即 192.168.0.0~192.168.255.255,相当于 256 个连续的 C 类网络。
        在互联网中的所有路由器,对目的地址是私有地址的数据报一律不进行转发。这种采用私有 IP 地址的互联网络称为专用互联网或本地互联网。私有 IP 地址也称可重用地址。
        使用 NAT 时需要在专用网连接到互联网的路由器上安装 NAT 软件,NAT 路由器至少有一个有效的外部全球 IP 地址。当使用本地地址的主机和外界通信时,NAT 路由器使用 NAT 转换表进行本地 IP 地址和全球 IP 地址的转换。NAT 转换表中存放着 {本地 IP 地址:端口} 到 {全球 IP 地址:端口} 的映射。通过这种映射方式,可让多个私有 IP 地址映射到一个全球 IP 地址。

命题追踪 NAT 的原理和应用(2016、2019、2020、2023)

        如图 4.8 所示,假设某家庭办理了 10Mb/s 的电信宽带,那么该家庭就获得一个全球 IP 地址(如 138.76.29.7),而家庭网络内 3 台主机使用私有地址(如 10.0.0.0 网段),家庭网关路由器应开启 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。

        这样,只需要一个全球 IP 地址,就可让多台主机同时访问互联网。

注意:

        普通路由器在转发 IP 分组时,其源 IP 地址和目的 IP 地址都不会改变。而 NAT 路由器在转发 IP 分组时,一定要更换其 IP 地址(转换源 IP 地址或目的 IP 地址)。普通路由器仅工作在网络层,而 NAT 路由器转发数据报时需要查看和转换传输层的端口号。

        在某些场合,内网中的一些服务器需要向公网用户提供服务,比如私网中部署的一些 Web 服务器、FTP 服务器等。此时,可在 NAT 表中配置 “公网 IP 地址 + 端口号” 与 “私网 IP 地址 + 端口号” 的映射关系,实现公网用户通过该映射关系访问私网服务器的功能。

4.2.3 划分子网与路由聚合

1. 划分子网

        两级 IP 地址的缺点:IP 地址空间的利用率有时很低;给每个物理网络分配一个网络号会使路由表变得太大,进而使网络性能变坏;两级 IP 地址不够灵活。
        从 1985 年起,在 IP 地址中又增加了一个 “子网号字段”,使两级 IP 地址变成了三级 IP 地址。这种做法称为划分子网。划分子网已成为互联网的正式标准协议。
划分子网的基本思路如下:

        划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的一个网络。

        划分子网的方法是从网络的主机号借用若干位作为子网号,当然主机号也相应减少了相同的位数。三级 IP 地址的结构:IP 地址::={<网络号>, < 子网号 >, < 主机号 >}。

        路由器转发分组根据的仍然是 IP 数据报的目的网络号,本单位的路由器收到 IP 数据报后,再按目的网络号和子网号找到目的子网。最后把 IP 数据报交付给目的主机。

        例如,将一个 C 类网络 208.115.21.0 划分为 4 个子网,子网号占用 2 位,因此主机号就只有 6 位,各子网的网络地址分别为 208.115.21.0、208.115.21.64、208.115.21.128、208.115.21.192。每个子网可分配的 IP 地址数为2^6−2=62。

注意:

        ①划分子网只是把 IP 地址的主机号部分进行再划分,而不改变 IP 地址原来的网络号。因此,从一个 IP 地址本身无法判断该主机所连接的网络是否进行了子网划分。②子网中的主机号全 0 或全 1 的地址不能被指派,其中主机号全 0 的地址为子网的网络地址,主机号全 1 的地址为子网的广播地址。③划分子网增加了灵活性,但减少了能够连接在网络上的主机总数。
2. 子网掩码和默认网关
子网掩码可用来指明分类 IP 地址的主机号部分被借用了多少位作为子网号。

命题追踪 根据 IP 地址和子网掩码求网络地址(2022)

        子网掩码是一个与 IP 地址相对应的、长 32 位的二进制串,它由一串 1 和跟随的一串 0 组成。其中,1 对应于 IP 地址中的网络号及子网号,而 0 对应于主机号。主机或路由器只需将 IP 地址和其对应的子网掩码逐位 “与”(AND 运算),就可得出相应子网的网络地址。

命题追踪 默认网关和子网掩码的配置分析(2015、2016、2019、2022)

        默认网关是子网与外部网络连接的设备,也就是连接本机或子网的路由器接口的 IP 地址。当主机发送数据时,根据所发送数据的目的 IP 地址,通过子网掩码来判定目的主机是否在子网中,若目的主机在子网中,则直接发送。若目的主机不在子网中,则将该数据发送到默认网关,由网关(路由器)将其转发到其他网络,进一步寻找目的主机。
        现在的互联网标准规定:所有网络都必须使用子网掩码。若一个网络未划分子网,则该网络的子网掩码就使用默认子网掩码。A、B、C 类地址的默认子网掩码分别为 255.0.0.0、255.255.0.0、255.255.255.0。例如,某主机的 IP 地址为 192.168.5.56,子网掩码为 255.255.255.0,进行逐位 “与” 运算后,得出该主机所在子网的网络号为 192.168.5.0。
        子网掩码是一个网络的重要属性,路由器相互之间交换路由信息时,必须将自己所在网络的子网掩码告诉对方。分组转发时,路由器将分组的目标地址和某网络的子网掩码按位相与,若结果与该网络地址一致,则路由匹配成功,路由器将分组转发至该网络。
在使用子网掩码的情况下:

①一台主机在设置 IP 地址信息的同时,必须设置子网掩码。

②同属于一个子网的所有主机及路由器的相应端口,必须设置相同的子网掩码。

③路由器的路由表中所包含的信息主要内容有目的网络地址、子网掩码、下一跳地址。

3.无分类编址 CIDR
        无分类域间路由选择(Classless Inter-Domain Routing,CIDR)是在变长子网掩码的基础上,提出的一种消除传统 A、B、C 类地址及划分子网的概念。例如,若一个单位需要 2000 个地址,则给它分配一个 2048 地址的块,而不是分配一个完全的 B 类地址,因此可更有效地分配 IPv4 的地址空间。CIDR 使用网络前缀的概念代替网络的概念,与传统分类 IP 地址最大的区别就是,网络前缀的位数不是固定的,可以任意选取。CIDR 的记法是

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

命题追踪 CIDR 地址块的分析(2011、2015、2016、2019、2023)

        CIDR 还使用斜线记法(或称 CIDR 记法),即记为 “IP 地址 / 网络前缀所占的位数”。其中,网络前缀所占的位数对应网络号的部分,等效于子网掩码中连续 1 的部分。例如,对于 128.14.32.5/20 这个地址,它的掩码是 20 个连续的 1 和后续 12 个连续的 0,通过逐位 “与” 的方法可得该地址的网络前缀(或直接截取前 20 位):

        斜线记法不仅能表示其 IP 地址,还能表示这个地址块的网络前缀有多少位。采用 CIDR 后,斜线及后面的数字一定不能省略,否则仅从斜线左边的 IP 地址无法知道其网络地址。

命题追踪 地址块的最小地址和最大地址分析(2023)

        CIDR 将网络前缀都相同的连续 IP 地址组成一个 CIDR 地址块。只要知道 CIDR 地址块中的任何一个地址,就能知道这个地址块的最小地址和最大地址,以及地址块中的地址数。上例的地址 128.14.32.5/20 所在 CIDR 地址块中的最小地址和最大地址为:

        最小地址:10000000.00001110.00100000.00000000(128.14.32.0)

        最大地址:10000000.00001110.00101111.11111111(128.14.47.255)
        主机号全 0 或全 1 的地址一般不使用,通常只使用在这两个特殊地址之间的地址。
        CIDR 虽然不使用子网,但仍然使用 “掩码” 一词。“CIDR 不使用子网” 是指 CIDR 并没有在 32 位地址中指明若干位作为子网字段。但分配到一个 CIDR 地址块的单位,仍可在本单位内根据需要划分出一些子网。例如,某单位分配到地址块 / 20,就可继续划分为 8 个子网(从主机号中借用 3 位来划分子网),这时每个子网的网络前缀就变成了 23 位。

命题追踪 子网广播地址 / 网络地址的分析(2011、2012、2018、2019)

        CIDR 地址块中的地址数一定是 2 的整数次幂,实际可指派的地址数通常为2N−2,N 表示主机号的位数,主机号全 0 代表网络号,主机号全 1 为广播地址。网络前缀越短,其地址块包含的地址数就越多。而在三级结构的 IP 地址中,划分子网使网络前缀变长。
4. 路由聚合
        一个大的 CIDR 地址块中包含很多小地址块,因此在路由表中就可利用较大的一个 CIDR 地址块来代替许多较小的地址块。这种方法称为路由聚合,它使得路由表中的一个项目可以表示原来传统分类地址的多条路由项目,压缩了路由表所占的空间,从而提高了网络性能。

命题追踪 路由聚合的分析(2009、2011、2013、2014、2018)

        例如,在如图 4.9 所示的网络中(此处无图 4.9 实际内容,按原文逻辑叙述),若不使用路由聚合,则 R1 的路由表中需要分别有到网络 1 和网络 2 的路由表项。不难发现,网络 1 和网络 2 的网络前缀在二进制表示的情况下,前 16 位都是相同的,第 17 位分别是 0 和 1,并且从 R1 到网络 1 和网络 2 的路由的下一跳皆为 R2。若使用路由聚合,则在 R1 看来,网络 1 和网络 2 可以构成一个更大的地址块 206.1.0.0/16,到网络 1 和网络 2 的两条路由就可聚合成一条到 206.1.0.0/16 的路由。

命题追踪 路由器分组转发的最长前缀匹配(2013、2015)

        最长前缀匹配(也称最佳匹配):使用 CIDR 时,路由表中的表项由 “网络前缀” 和 “下一跳地址” 组成。在查找路由表时可能会得到不止一个匹配结果。此时,应当从匹配结果中选择具有最长网络前缀的路由,因为网络前缀越长,其地址块就越小,因而路由就越具体。
        CIDR 查找路由表的方法:为了更有效地查找最长前缀匹配,通常将无分类编址的路由表存放在一种层次式数据结构(通常采用二叉线索)中,然后自上而下地按层次进行查找。
        CIDR 的优点在于网络前缀长度的灵活性。因为上层网络的前缀长度较短,所以相应的路由表的项目较少。而内部又可采用延长网络前缀的方法来灵活地划分子网。
5. 子网划分的应用举例
        通常有两类划分子网的方法:采用定长的子网掩码,采用变长的子网掩码。
(1)采用定长的子网掩码划分子网
        当采用定长的子网掩码划分子网时,所划分的每个子网使用相同的子网掩码,并且每个子网所分配的 IP 地址数量也相同,因此容易造成地址资源的浪费。

命题追踪 采用定长子网掩码划分子网的应用(2009、2010、2017、2018)

        假设某单位拥有一个 CIDR 地址块为 208.115.21.0/24,该单位有三个部门,各部门的主机台数分别为 50、20、5,采用定长的子网掩码给各部门分配 IP 地址。
        部门 1 需要 51 个 IP 地址(含一个路由器接口地址);部门 2 需要 21 个 IP 地址;部门 3 需要 6 个 IP 地址。接下来,从给定地址块 208.115.21.0/24 的主机号部分借用 2 位作为子网号,这样可以划分为22=4个子网,每个子网可分配的 IP 地址数为28−2−2=62,可满足各部门的需求。各子网的划分如下(为书写方便,只把 IP 地址的后 8 位用二进制展开):

208.115.21.00000000~208.115.21.00111111,地址块 “208.115.21.0/26”,分配给部门1。

208.115.21.01000000~208.115.21.01111111,地址块 “208.115.21.64/26”,分配给部门 2。208.115.21.10000000~208.115.21.10111111,地址块“208.115.21.128/26”,分配给部门 3。

208.115.21.11000000~208.115.21.11111111,地址块 “208.115.21.192/26”,留作以后用。
子网掩码:255.255.255.11000000,即 255.255.255.192。
(2)采用变长的子网掩码划分子网

命题追踪 采用变长子网掩码划分子网的应用(2019、2021)

        采用变长的子网掩码划分子网时,所划分的每个子网可以使用不同的子网掩码,并且每个子网所分配的 IP 地址数量可以不同,这样就尽可能地减少了对地址资源的浪费。
        假设各种条件与上一节的相同,下面采用变长的子网掩码给该单位分配 IP 地址。
        部门 1 的主机号需 6 位,剩余 26(32 - 6 = 26)位作为网络前缀;部门 2 的主机号需 5 位,剩余 27(32 - 5 = 27)位作为网络前缀;部门 3 的主机号需 3 位,剩余 29(32 - 3 = 29)位作为网络前缀。接下来,从地址块 208.115.21.0/24 中划分出 3 个子网(1 个 “/26” 地址块,1 个 “/27” 地址块,1 个 “/29” 地址块),并按需分配给三个部门。每个子网的最小地址只能选取主机号全 0 的地址。划分方案不唯一,建议从大的子网开始划分。以下是一种划分方案:

        子网主机号全 0 或全 1 的地址通常不分配。对于一段连接两个路由器的链路,可以分配一个 “/30” 地址块,这样可分配地址为 2 个,恰好可分配给链路两端的路由器接口。

注意:

        最新标准规定:为了节省 IP 地址资源,直接连线的两个路由器的接口可以不分配 IP 地址。若分配了 IP 地址,则这一段连接就构成一种只包含一段点对点链路的特殊 “网络”,这种网络仅需两个 IP 地址,主机号可以是 0 或 1,因此可以使用 “/31” 地址块。

4.2.4 网络层转发分组的过程

        分组转发都是基于目的主机所在网络的,这是因为互联网上的网络数远小于主机数,这样可以极大地压缩转发表的大小。当分组到达路由器后,路由器根据目的 IP 地址的网络前缀来查找转发表,确定下一跳应当到哪个路由器。因此,在转发表中,每条路由必须有下面两条信息:

        (目的网络地址,下一跳地址)
        这样,IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次间接交付),当到达最后一个路由器时,才试图向目的主机进行直接交付。
        采用 CIDR 编址时,若一个分组在转发表中可以找到多个匹配的前缀,则应当使用最长前缀匹配。为了更快地查找转发表,可以按照前缀的长短,将前缀最长的排在第 1 行,按前缀长度的降序排列。这样,从第 1 行最长的开始查找,只要检索到匹配的,就不必再继续查找。
此外,在路由表中还可以增加两种特殊的路由:

命题追踪 特定主机路由的应用(2009)

1)特定主机路由:对特定目的主机的 IP 地址专门指明一个路由,以方便网络管理员控制和测试网络。若特定主机的 IP 地址是 a.b.c.d,则转发表中对应项的目的网络是 a.b.c.d/32。/32 表示的子网掩码没有意义,但是,这个特殊的前缀可以用在转发表中。

命题追踪 默认路由的应用(2009、2014)

2)默认路由:用特殊前缀 0.0.0.0 表示默认路由,全 0 掩码和任何目的地址进行按位与运算,结果必然为全 0,即必然和前缀 0.0.0.0 相匹配。只要目的网络是其他网络(不在转发表中),就一律选择默认路由。默认路由通常用于路由器到互联网的路由,互联网包括无数的网络集合,不可能在路由表项中一一列出,因此只能采用默认路由的方式。
        特定主机路由条目的匹配优先级最高,默认路由条目的匹配优先级最低。
        综上所述,归纳出路由器执行的分组转发算法如下:
        1)从收到的 IP 分组的首部提取目的主机的 IP 地址 D(目的地址)。
        2)若查找到特定主机路由(目的地址为 D),则按照这条路由的下一跳转发分组;否则从转发表中的下一条(按前缀长度的顺序)开始检查,执行步骤 3)。
        3)将这一行的子网掩码与目的地址 D 逐位 “与”(AND 操作)。若运算结果与本行的前缀匹配,则查找结束,按照 “下一跳” 指出的进行处理(或者直接交付本网络上的目的主机,或通过指定接口发送到下一跳路由器)。否则,若转发表还有下一行,则对下一行进行检查,重新执行步骤 3)。否则,执行步骤 4)。
        4)若转发表中有一个默认路由,则把分组传送给默认路由;否则,报告转发分组出错。
        值得注意的是,转发表(或路由表)并没有给分组指明到某个网络的完整路径(先经过哪个路由器,后经过哪个路由器等)。转发表指出,到某个网络应当先到某个路由器(下一跳路由器),到达下一跳路由器后,再继续查找其转发表,知道再下一步应当到哪个路由器。这样一步一步地查找下去,直到到达目的网络。

注意:

        得到下一跳路由器的 IP 地址后,并不是直接将该地址填入待发送的数据报,而是将该 IP 地址转换成 MAC 地址(通过 ARP),将此 MAC 地址填入 MAC 帧首部,然后根据这个 MAC 地址找到下一跳路由器。在不同网络中传送时,MAC 帧的源地址和目的地址要发生变化。

4.2.5 地址解析协议

1.IP 地址与硬件地址
        IP 地址是网络层及网络层之上使用的地址,它是分层式的。硬件地址(MAC 地址)是数据链路层使用的地址,它是平面式的。IP 地址放在 IP 数据报的首部,而 MAC 地址放在 MAC 帧的首部。把 IP 数据报封装为 MAC 帧后,数据链路层看不见 IP 数据报中的 IP 地址。
        因为路由器的隔离,IP 网络中无法通过广播 MAC 地址来完成跨网络的寻址,所以在网络层只使用 IP 地址来完成寻址。寻址时,每个路由器依据其路由表(依靠路由协议生成)选择到目标网络(主机号全为 0 的网络地址)需要转发到的下一跳(路由器的物理端口号或下一网络地址),而 IP 数据报通过多次路由转发到达目标网络后,改为在目标局域网中通过数据链路层的 MAC 地址以广播方式寻址。这样可以提高路由选择的效率。
下列几个性质是计算机网络的精髓,有必要特别强调:

1)在 IP 层抽象的互联网上只能看到 IP 数据报。

2)虽然在 IP 数据报首部中有源 IP 地址,但路由器只根据目的 IP 地址进行转发。

3)在局域网的链路层,只能看见 MAC 帧。IP 数据报被封装在 MAC 帧中。通过路由器转发时,IP 数据报在每个网络中都被路由器解封装和重新封装,其 MAC 帧首部中的源地址和目的地址会不断改变。这也决定了无法使用 MAC 地址跨网络通信。

4)尽管互连在一起的网络的硬件地址体系各不相同,但 IP 层抽象的互联网屏蔽了下层这些复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的 IP 地址研究主机与主机或路由器之间的通信。

注意:

        路由器因为互连多个网络,所以它不仅有多个 IP 地址,还有多个硬件地址。
2. 地址解析协议

命题追踪 ARP 的功能和应用(2011、2012、2021)

        无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址。所以需要一种方法来完成 IP 地址到 MAC 地址的映射,这就是地址解析协议(Address Resolution Protocol,ARP)。每台主机都设有一个 ARP 高速缓存,用来存放本局域网各主机和路由器的 IP 地址到 MAC 地址的映射表,称 ARP 表。使用 ARP 来动态维护 ARP 表。ARP 对高速缓存中的每个映射表项都设置了生存时间(如 20min),超时的项目会从高速缓存中删除。

命题追踪 ARP 请求帧的目的 MAC 地址(2011、2015)

        ARP 工作在网络层,其工作原理如下:主机 A 欲向本局域网的某台主机 B 发送 IP 数据报时,先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。若有,则可以查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。若没有,则通过使用目的 MAC 地址为 FF-FF-FF-FF-FF-FF 的帧来封装并广播 ARP 请求分组(广播发送),使同一个局域网里的所有主机都收到此 ARP 请求。主机 B 收到该 ARP 请求后,向主机 A 发出 ARP 响应分组(单播发送),分组中包含主机 B 的 IP 地址与 MAC 地址的映射关系,主机 A 收到 ARP 响应分组后就将此映射写入 ARP 缓存,然后按查询到的硬件地址发送 MAC 帧。ARP 因为 “看到了” IP 地址,所以它工作在网络层,而 NAT 路由器因为 “看到了” 端口,所以它工作在传输层。对于某个协议工作在哪个层次,读者应该能通过协议的工作原理进行推测。

注意:

        ARP 用于解决同一局域网的主机或路由器的 IP 地址和硬件地址的映射问题。若目的主机和源主机不在同一个局域网,则要通过 ARP 找到本局域网的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络,剩下的工作就由下一个网络来做。尽管 ARP 请求分组是广播发送的,但 ARP 响应分组是普通的单播。
使用 ARP 的 4 种典型情况总结如下(见图 4.10):

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

命题追踪 跨局域网的帧的目的 MAC 地址(2015)

注意:

        开始在 H1 和 R1 之间传送时,MAC 帧首部中的源地址是 H1 的 MAC 地址,目的地址是 L1 的硬件地址,路由器 R1 收到此 MAC 帧后,在数据链路层,要丢弃原 MAC 的首部和尾部。这时首部中的源地址和目的地址分别为 L2 和 L3 的 MAC 地址。路由器 R2 收到此帧后,再次更换 MAC 帧的首部和尾部,首部中的源地址和目的地址分别变为 L4 和 H4 的 MAC 地址。MAC 帧首部的这种变化,在上面的 IP 层中是看不见的。

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

        从 IP 地址到硬件地址的解析是自动进行的,主机的用户并不知道这种地址解析过程。只要主机或路由器和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 就自动地将这个 IP 地址解析为数据链路层所需的硬件地址,然后插入 MAC 帧。

从 IP 地址到硬件地址的解析是自动进行的,主机的用户并不知道这种地址解析过程。只要主机或路由器和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 就自动地将这个 IP 地址解析为数据链路层所需的硬件地址,然后插入 MAC 帧。

4.2.6 动态主机配置协议 DHCP

        动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)常用于给主机动态地分配 IP 地址,它提供了即插即用的联网机制,这种机制允许一台计算机加入新的网络和自动获取 IP 地址而不用手工参与。DHCP 是应用层协议,它是基于 UDP 的。

注意:

        连接到互联网的计算机需要配置的项目包括:①IP 地址,②子网掩码,③默认路由器的 IP 地址(默认网关),④域名服务器的 IP 地址。

命题追踪 DHCP 发现报文的作用(2022)

        DHCP 使用客户 / 服务器模型。其工作原理:需要 IP 地址的主机在启动时就向 DHCP 服务器广播发送发现报文,这时该主机就成为 DHCP 客户。本地网络上的所有主机都能收到这个广播报文,但只有 DHCP 服务器才能回答该广播报文。DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回到找到的信息;若找不到,则从服务器的 IP 地址池中取一个地址分配给该主机。DHCP 服务器的回答报文称为提供报文,包含提供的 IP 地址等配置信息。

命题追踪 DHCP 发现报文的源地址和目的地址(2015、2022)

DHCP 服务器和 DHCP 客户的交换过程如下:
1)DHCP 客户广播 “DHCP 发现” 消息,试图找到网络中的 DHCP 服务器,以便从 DHCP 服务器获得一个 IP 地址。源地址为 0.0.0.0,目的地址为 255.255.255.255。
2)DHCP 服务器收到 “DHCP 发现” 消息后,广播 “DHCP 提供” 消息,其中包括提供给 DHCP 客户机的 IP 地址。源地址为 DHCP 服务器地址,目的地址为 255.255.255.255。
3)DHCP 客户收到 “DHCP 提供” 消息,若接受该 IP 地址,则广播 “DHCP 请求” 消息向 DHCP 服务器请求提供 IP 地址。源地址为 0.0.0.0,目的地址为 255.255.255.255。
4)DHCP 服务器广播 “DHCP 确认” 消息,将 IP 地址分配给 DHCP 客户。源地址为 DHCP 服务器地址,目的地址为 255.255.255.255。

        DHCP 服务器分配给 DHCP 客户的 IP 地址是临时的,因此 DHCP 客户只能在一段有限的时间内使用这个分配到的 IP 地址。DHCP 称这段时间为租用期。租用期的数值应由 DHCP 服务器自己决定,DHCP 客户也可在自己发送的报文中提出对租用期的要求。DHCP 客户可随时提前终止服务器提供的租用期,这时只需向 DHCP 服务器发送释放报文。
        DHCP 客户和服务器端需要通过广播方式来进行交互,原因是在 DHCP 执行初期,客户机不知道服务器端的 IP 地址,而在执行中间,客户机并未被分配 IP 地址,从而导致两者之间的通信必须采用广播的方式。采用 UDP 而不采用 TCP 的原因也很明显:TCP 需要建立连接,若连对方的 IP 地址都不知道,则更不可能通过双方的套接字建立连接。

4.2.7 网际控制报文协议 ICMP

命题追踪 直接为 ICMP 提供服务的协议(2012)

        为了有效地转发 IP 数据报和提高交付成功的机会,在网络层使用了网际控制报文协议(Internet Control Message Protocol,ICMP),让主机或路由器报告差错和异常情况。ICMP 报文被封装在 IP 数据报中发送,但 ICMP 不是高层协议,而是网络层的协议。
        ICMP 报文有两种,即 ICMP 差错报告报文和 ICMP 询问报文。

命题追踪 ICMP 差错报文的类型及含义(2022)

        ICMP 差错报告报文用于目标主机或到目标主机路径上的路由器,向源主机报告差错和异常情况。共有以下 5 种常用的类型:
1)终点不可达。当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。
2)源点抑制 。当路由器或主机因为拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。(ICMP 标准在不断更新,最新的 ICMP 标准 [RFC6633] 已不再使用 “源点抑制报文” 。)
3)时间超过。当路由器收到一个数据报时,会将其首部中生存时间(TTL)的值减 1。若结果不为 0,则路由器将该数据报转发出去。若结果为 0,则路由器不但要丢弃该数据报,而且要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。
4)参数问题。当路由器或目的主机收到的数据报的首部中有的字段(注意不是任意字段)的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
5)改变路由(重定向)。路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
对于以下几种情况,不应发送 ICMP 差错报告报文:
1)对 ICMP 差错报告报文,不再发送 ICMP 差错报告报文。
2)对第一个分片的数据报片的所有后续数据报片,都不发送 ICMP 差错报告报文。
3)对具有多播地址的数据报,都不发送 ICMP 差错报告报文。
4)对具有特殊地址(如 127.0.0.0 或 0.0.0.0)的数据报,不发送 ICMP 差错报告报文。
常用的 ICMP 询问报文有两种类型:
1)回送请求和回答报文。用来测试目的主机是否可达以及了解其有关状态。
2)时间戳请求和回答报文。利用报文中记录的时间戳,发送方可计算出当前的往返时延。
        ICMP 的两个常见应用是分组网间探测 PING(用来测试两台主机之间的连通性)和 Traceroute(UNIX 中的名字,在 Windows 中是 Tracert,可以用来跟踪分组经过的路由)。其中 PING 使用了 ICMP 回送请求和回答报文,Traceroute(Tracert)使用了 ICMP 时间超过报文。

注意:

        PING 工作在应用层,它直接使用网络层的 ICMP;Traceroute/Tracert 工作在网络层。

4.2.8 本节习题精选

一、单项选择题

01.Internet 的网络层含有 4 个重要的协议,分别为( )。
A. IP,ICMP,ARP,UDP
B. TCP,ICMP,UDP,ARP
C. IP,ICMP,ARP,RARP
D. UDP,IP,ICMP,RARP

01.C
TCP 和 UDP 是传输层协议,IP、ICMP、ARP、RARP(逆地址解析协议)是网络层协议。

02.下列关于 IPv4 分组结构的描述中,错误的是( )。
A. IP 分组头的长度是可变的
B. 协议字段表示 IP 的版本,值为 4 表示 IPv4
C. IP 分组首部长度字段以 4B 为单位,总长度字段以字节为单位
D. 生存时间字段值表示一个分组可以经过的最多的跳数

02.B
协议字段表示使用 IP 的上层协议,如值为 6 表示 TCP,值为 17 表示 UDP。版本字段表示 IP 的版本,值为 4 表示 IPv4,值为 6 表示 IPv6。

03.IPv4 分组首部中有两个有关长度的字段:首部长度和总长度,其中( )。
A. 首部长度字段和总长度字段都以 8 比特为计数单位
B. 首部长度字段以 8 比特为计数单位,总长度字段以 32 比特为计数单位
C. 首部长度字段以 32 比特为计数单位,总长度字段以 8 比特为计数单位
D. 首部长度字段和总长度字段都以 32 比特为计数单位

03.C
在首部中有三个关于长度的标记:首部长度、总长度和片偏移,基本单位分别为 4B、1B 和 8B。IP 分组的首部长度必须是 4B 的整数倍,取值范围是 5~15(默认值是 5)。因为 IP 分组的首部长度是可变的,所以首部长度字段必不可少。总长度字段给出 IP 分组的总长度,单位是字节,包括分组首部和数据部分的长度。数据部分的长度可以从总长度减去分组首部长度计算。

04.下列关于 IP 分组的首部检验和字段的说法中,正确的是( )。
A. 检验和字段检查的范围是整个 IP 分组
B. 计算检验和的方法是对首部的每个 16 比特按反码运算求和再取反码
C. 若网络层发现检验和错误,则丢弃该 IP 分组并发送 ICMP 差错报文
D. IP 分组的检验和的计算需要加入一个伪首部

04.B
检验和字段只检查 IP 数据报的首部,不包括数据部分,选项 A 错误。计算检验和的方法是:先把 IP 数据报的首部划分为许多 16 比特的序列,用反码算术运算把所有 16 比特相加后,将得到的和的反码写入检验和字段,选项 B 正确。IP 并不要求源主机重传有差错的 IP 数据报,保证无差错传输是由 TCP 完成的。另一方面,首部检验和只能检验 IP 数据报的首部是否出错,但不知道首部中的源地址字段是否出错,若源地址出现差错,则将差错报文传送到错误的地址是没有任何意义的,因此接收方的网络层发现检验和出错后,就丢弃该数据报,但不会发送差错报文,选项 C 错误。IP 数据报的检验和的计算不需要加入伪首部,伪首部用于计算 UDP 或 TCP 检验和,选项 D 错误。

05.当数据报到达目的网络后,要传送到目的主机,需要知道 IP 地址对应的( )。
A. 逻辑地址
B. 动态地址
C. 域名
D. 物理地址

05.D
在数据链路层,MAC 地址用来标识主机或路由器,数据报到达具体的目的网络后,需要知道目的主机的 MAC 地址才能成功送达,因此需要将 IP 地址转换成对应的 MAC 地址,即物理地址。

06.若 IPv4 的分组太大,会在传输中被分片,则在( )将对分片后的数据报重组。
A. 中间路由器
B. 下一跳路由器
C. 核心路由器
D. 目的主机

06.D
数据报被分片后,每个分片都将独立地传输到目的地,其间有可能会经过不同的路径,而最后在目的端主机分组才能被重组。

07.在 IP 首部的字段中,与分片和重组无关的字段是( )。
A. 总长度
B. 标识
C. 标志
D. 片偏移

07.A
在 IP 首部中,标识字段的用途是让目标机器确认一个新到达的分片是否属于同一个数据报,用于重组分片后的 IP 数据报。标志字段中的 DF 表示是否允许分片,MF 表示后面是否还有分片。片偏移则指出分组在分片后某片在原分组中的相对位置。

08.下列关于 IP 分组的分片与组装的描述中,错误的是( )。
A. IP 分组头中与分片和组装相关的字段是:标识、标志与片偏移
B. IP 分组规定的最大长度为 65535B
C. 以太网的 MTU 为 1500B
D. 片偏移的单位是 4B

08.D
片偏移标识该分片所携带数据在原始分组所携带数据中的相对位置,以 8B 为单位。

09.若一个 IP 分组的片偏移字段的值为 100,则意味着( )。
A. 该 IP 分组没有分片
B. 该 IP 分组的长度为 100B
C. 该 IP 分组的第一个字节是分片前的第 100 个字节
D. 该 IP 分组的第一个字节是分片前的第 800 个字节

09.D
片偏移以 8B 为偏移单位,它指出数据报在分片后,某片在原数据报中的相对位置。若片偏移值为 0,则表示该数据报片是原数据报的第 1 片,或者该数据报没有分片。若片偏移值为 100,则表示该数据报片的第 1 个字节是原数据报的第 800 个字节。

10.下列关于 IP 分组分片基本方法的描述中,错误的是( )。
A. IP 分组长度大于 MTU 时,就必须对其进行分片
B. DF = 1,分组的长度又超过 MTU 时,则丢弃该分组,不需要向源主机报告
C. 分片的 MF 值为 1 表示接收到的分片不是最后一个分片
D. 属于同一原始 IP 分组的分片具有相同的标识

10.B
若分组长度超过 MTU,则当 DF = 1 时,丢弃该分组,并且要用 ICMP(终点不可达报文)向源主机报告差错;当 DF = 0 时,进行分片,MF = 1 表示后面还有分片。

11.某 IP 分组的片偏移字段值为 100,首部长度字段值为 5,总长度字段值为 100,则该 IP 分组的数据部分的第一个字节的编号与最后一个字节的编号是( )。
A. 100, 200
B. 100, 500
C. 800, 879
D. 800, 900

11.C
片偏移、首部长度、总长度的单位分别为 8B、4B、1B。片偏移值为 100,表示该分片的数据部分的第 1 个字节的编号是 800。分组的总长度为 100B,首部长度为 4B×5 = 20B,所以数据部分的长度为 80B。因此,该分片的数据部分的最后一个字节的编号是 879。

12.路由器 R0 的路由表见下表。若进入路由器 R0 的分组的目的地址为 132.19.237.5,则该分组应该被转发到( )下一跳路由器。

A. R1        B. R2        C. R3        D. R4

12.B
对于选项 A,132.19.237.5 的前 8 位与 132.0.0.0/8 匹配。而 B 选项中,132.19.237.5 的前 11 位与 132.0.0.0/11 匹配。C 选项中,132.19.237.5 的前 22 位与 132.19.232.0/22 不匹配。根据 “最长前缀匹配原则”,该分组应该被转发到 R2。选项 D 为默认路由,只有当前面的所有目的网络都不能和分组的目的 IP 地址匹配时才使用。

13. IP 规定每个 C 类网络最多可以有( )台主机或路由器。
A. 254        B. 256        C. 32        D. 1024

13.A
在分类的 IP 网络中,C 类地址的前 24 位为网络位,后 8 位为主机位,主机位全 “0” 表示网络号,主机位全 “1” 表示广播地址,因此最多可以有 2⁸ - 2 = 254 台主机或路由器。

14. 在下列 4 个地址中,属于子网 86.32.0.0/12 的地址是( )。
A. 86.33.224.123
B. 86.79.65.126
C. 86.79.65.216
D. 86.68.206.154

14.A
CIDR 地址块 86.32.0.0/12 的网络前缀为 12 位,说明第 2 个字节的前 4 位在前缀中,第 2 个字节 32 的二进制形式为 00100000。给出的 4 个地址的前 8 位均相同,而第 2 个字节的前 4 位分别是 0010, 0100, 0100, 0100,所以本题答案为选项 A。

15. 在下列 4 个地址中,属于单播地址的是( )。
A. 172.31.128.255/18
B. 10.255.255.255
C. 192.168.24.59/30
D. 224.105.5.211

15.A
10.255.255.255 为 A 类地址,主机号全 1,代表网络广播,为广播地址。192.168.24.59/30 为 CIDR 地址,只有后面 2 位为主机号,而 59 用二进制表示为 00111011,可知主机号全 1,代表网络广播,为广播地址。224.105.5.211 为 D 类多播地址。

16. 在下列 4 个地址中,属于本地回路地址的是( )。
A. 10.10.10.1
B. 255.255.255.0
C. 192.0.1
D. 127.0.0.1

16.D
所有形如 127.xx.yy.zz 的 IP 地址,都作为保留地址,用于回路测试。

17. 访问互联网的每台主机都需要分配 IP 地址(假定采用默认子网掩码),下列可以分配给主机的 IP 地址是( )。
A. 192.46.10.0
B. 110.47.10.0
C. 127.10.10.17
D. 211.60.256.21

17.B
选项 A 是 C 类地址,掩码为 255.255.255.0,由此得知 A 地址的主机号为全 0(未使用 CIDR),因此不能作为主机地址。选项 C 是为回环测试保留的地址。选项 D 是语法错误的地址,不允许有 256。选项 B 为 A 类地址,其网络号是 110,主机号是 47.10.0。

18. IP 规定,一些特殊的 IP 地址一般是不会被指派的,下列说法错误的是( )。
A. 0.0.0.0 可以作为 DHCP 客户的源 IP 地址
B. 路由器不会转发目的 IP 地址是 255.255.255.255 的 IP 数据报
C. 127.0.0.1 可以作为目的 IP 地址,但不能作为源 IP 地址
D. 路由器可以转发目的 IP 地址的主机号为全 1 的 IP 数据报

18.C
127.x.x.x 用于本地软件的回环测试,既可作为源 IP 地址,又可作为目的 IP 地址,选项 C 错误。0.0.0.0 可作为源 IP 地址,表示本网络上的本主机,通常作为 DHCP 客户的源 IP 地址。255.255.255.255 可作为目的 IP 地址,表示在本网络上进行广播(各路由器均不转发)。网络号为特定网络,主机号为全 1 的目的 IP 地址表示直接广播地址,可对特定网络上的所有主机进行广播。

19. 为了提供更多的子网,为一个 B 类地址指定了子网掩码 255.255.240.0,则每个子网最多可以有的主机数是( )。
A. 16
B. 256
C. 4094
D. 4096

19.C
因为 240₁₀ = 11110000₂,所以共有 12 比特位用于主机地址,且主机位全 0 和全 1 不能使用,所以最多可以有的主机数为 2¹² - 2 = 4094。

20. 不考虑 NAT,在 Internet 中,IP 数据报从源节点到目的节点可能需要经过多个网络和路由器。在整个传输过程中,IP 数据报首部中的( )。
A. 源地址和目的地址都不会发生变化
B. 源地址有可能发生变化而目的地址不会发生变化

C. 源地址不会发生变化而目的地址有可能发生变化
D. 源地址和目的地址都有可能发生变化

20.A
在 Internet 中,IP 数据报从源节点到目的节点可能需要经过多个网络和路由器。当一个路由器接收到一个 IP 数据报时,路由器根据 IP 数据报首部的目的 IP 地址进行路由选择,并不改变源 IP 地址的取值。即使 IP 数据报被分片时,原 IP 数据报的源 IP 地址和目的 IP 地址也将复制到每个分片的首部,因此在整个传输过程中,IP 数据报首部的源 IP 地址和目的 IP 地址都不发生变化。

21. 把 IP 网络划分成子网,这样做的好处是( )。
A. 增加冲突域的大小
B. 增加主机的数量
C. 减少广播域的大小
D. 增加网络的数量

21.C
划分子网可以增加子网的数量(把一个大的网络划分成许多小的网络,这是子网划分的结果,并不是目的),子网之间的数据传输需要通过路由器进行,因此减少了广播域的大小,提高网络的效率和安全性。划分子网后,因为各子网中主机号全 0 和全 1 的地址不能使用,所以会减少总的主机数量,但划分子网提高了 IP 地址的利用率。

22. 一个网段的网络号为 198.90.10.0/27,最多可以分成( )个子网;此网段划分成若干子网后,每个子网最多具有( )个可分配给主机的 IP 地址。
A. 8,30
B. 4,62
C. 16,14
D. 32,6

22.A
由题可知,主机号有 5 位,若主机号只占 1 位,则没有有效的 IP 地址可供分配(除去 0 和 1),因此最少 2 位表示主机号,还剩 3 位表示子网号,所以最多可以分成 8 个子网。而当 5 位都表示主机数,即只有 1 个子网时,每个子网最多具有 30 个有效的 IP 地址(除去全 0 和全 1)。

23. 一台主机有两个 IP 地址,一个地址是 192.168.11.25,另一个地址可能是( )。
A. 192.168.11.0
B. 192.168.11.26
C. 192.168.13.25
D. 192.168.11.24

23.C
在网络中,允许一台主机有两个或两个以上的 IP 地址,若一台主机有两个或两个以上 IP 地址,则说明这台主机属于两个或两个以上的网络。IP 地址 192.168.11.25 属于 C 类 IP 地址,所以与 A、B 和 D 属于同一个网络;只有 C 的网络号不同,表明它属于不同的网络。

24. CIDR 技术的主要作用是( )。
A. 有效分配 IP 地址空间,并减少路由表的数量
B. 把大的网络划分成小的子网
C. 彻底解决 IP 地址资源不足的问题
D. 由多台主机共享同一个网络地址

24.A
CIDR 可以更合理地分配 IP 地址空间,缓解 IP 地址消耗的速度,但无法彻底解决 IP 地址耗尽的问题。CIDR 通过路由聚合可减少路由表数量,从而减少路由器之间的信息交换,提高了网络性能。把大的网络划分成小的子网,这是 CIDR 划分子网的结果,并不是作用。

25. 某个 CIDR 表示的 IPv4 地址为 126.166.66.99/22,则下面的描述中错误的是( )。
A. 网络前缀占用 22 比特
B. 主机编号占用 10 比特
C. 所在地址块包含的地址数为210
D. 126.166.66.99 是所在地址块的第一个地址

25.D
CIDR 表示法是一种用斜线 “/” 后面加上网络前缀所占的位数来表示 IP 地址的方法。网络前缀所占的位数是网络号部分,剩下的位数是主机号部分。所在地址块包含的地址数是 2¹⁰ = 1024。令主机号全为 0,所以 126.166.66.99/22 所在地址块的第一个地址是 126.166.64.0。

26. 某网络的一台主机的 IP 地址是 200.15.10.6/29,其配置的默认网关地址是 200.15.10.7,这样配置后发现主机无法 PING 通任何远程设备,原因是( )。
A. 默认网关的地址不属于这个子网
B. 默认网关的地址是子网中的广播地址
C. 路由器接口的地址是子网的广播地址
D. 路由器接口的地址是多播地址

26.B
200.15.10.7 的最后一个字节展开成二进制为 0000 0111,该地址是 200.15.10.6/29 所在地址块的广播地址,不能使用。若将默认网关设置为广播地址,则导致无法识别网关,而被当作一个广播目标,导致分组无法正确地转发给其他网络,而被分发给本网络上的所有主机。

27. CIDR 地址块 192.168.10.0/20 所包含的 IP 地址范围是(①)。与地址 192.16.0.19/28 同属于一个子网的主机地址是(②)。
① A. 192.168.0.0 ~ 192.168.12.255
B. 192.168.10.0 ~ 192.168.13.255
C. 192.168.10.0 ~ 192.168.14.255
D. 192.168.0.0 ~ 192.168.15.255
② A. 192.16.0.17
B. 192.16.0.31
C. 192.16.0.15
D. 192.16.0.14

27.D、A
CIDR 地址由网络前缀和主机号两部分组成,CIDR 将网络前缀都相同的连续 IP 地址组成 “CIDR 地址块”。网络前缀的长度为 20 位,主机号为 12 位,因此 192.168.0.0/20 地址块中的地址数为 2¹² 个。其中,当主机号为全 0 时,取最小地址 192.168.0.0。当主机号全为 1 时,取最大地址 192.168.15.255。注意,这里并不是指可分配的主机地址。
对于 192.16.0.19/28,表示子网掩码为 255.255.255.240。IP 地址 192.16.0.19 所对应的前 28 位数相同,都是 11000000 00010000 00000000 0001,所以 IP 地址 192.16.0.17 是子网 192.16.0.19/28 的一台主机地址。注意,主机号全 0 和全 1 的地址不使用。

28. 路由器错误和软件故障都可能导致网络中的数据形成传输环路而无限转发环路的分组,IPv4 协议解决该问题的方法是( )。
A. 报文分片
B. 设定生命期
C. 增加检验和
D. 增加选项字段

28.B
为每个 IP 分组设定生存时间(TTL),每经过一个路由器,TTL 减 1,TTL 为 0 时,路由器就不再转发该分组。因此可以避免分组在网络中无限循环下去。

29. 当下列 IP 地址作为 IP 数据报的目的地址时,互联网上的路由器不会正常转发的是( )。
A. 192.172.56.23
B. 172.15.34.128
C. 192.168.32.17
D. 172.128.45.34

29.C
互联网的路由器对目的地址是私有地址的 IP 数据报一律不进行转发。有 3 个私有地址段:
10.0.0.0/8,即 10.0.0.0~10.255.255.255,相当于 1 个 A 类网络。
172.16.0.0/12,即 172.16.0.0~172.31.255.255,相当于 16 个连续的 B 类网络。
192.168.0.0/16,即 192.168.0.0~192.168.255.255,相当于 256 个连续的 C 类网络。

所以只有选项C是内部地址,不允许出现在互联网(公网)上。

30. 为了解决 IP 地址耗尽的问题,可以采用以下一些措施,其中治本的是( )。
A. 划分子网
B. 采用无类比编址 CIDR
C. 采用网络地址转换 NAT
D. 采用 IPv6

30. D

        最初设计的分类 IP 地址,因为每类地址所能连接的主机数大大超过一般单位的需求量,所以造成了 IP 地址的浪费。划分子网通过从网络的主机号借用若干比特作为子网号,从而使原来较大规模的网络细分为几个规模较小的网络,提高了 IP 地址的利用率。

        与划分子网相比,CIDR 是一种更灵活的手段,它消除了 A、B、C 类地址及划分子网的概念。使用各种长度的网络前缀来代替分类地址中的网络号和子网号,将网络前缀都相同的 IP 地址组成 “CIDR 地址块”。网络前缀越短,地址块越大。互联网服务提供者再根据客户的具体情况,分配合适大小的 CIDR 地址块,从而更加有效地利用 IPv4 的地址空间。

        采用网络地址转换(NAT),可以使一些使用本地地址的专用网连接到互联网上,进而使得一些机构的内部主机可以使用专用地址,只需给该机构分配一个 IP 地址即可,并且这些专用地址是可重用的 —— 其他机构也可使用,所以大大节省了 IP 地址的消耗。

        尽管以上三种方法可以在一定阶段内有效缓解 IP 地址耗尽的危机,但无论是从计算机本身发展来看还是从互联网的规模和传输速率来看,现在的 IPv4 地址已很不适用,所以治本的方法还是使用 128 比特编址的 IPv6 地址。

31. 下列对 IP 分组的分片和重组的描述中,正确的是( )。
A. IP 分组可以被源主机分片,并在中间路由器进行重组
B. IP 分组可以被路径中的路由器分片,并在目的主机进行重组
C. IP 分组可以被路径中的路由器分片,并在中间路由器上进行重组
D. IP 分组可以被路径中的路由器分片,并在最后一跳的路由器上进行重组

31. B

        当路由器准备将 IP 分组发送到网络上,而该网络又无法将整个分组一次发送时,路由器必须将该分组分片,使其长度能满足这一网络对分组长度的限制。IP 分片可以独立地通过各个路径发送,而且在传输过程中仍然存在分片的可能(不同网络的 MTU 可能不同),因此不能由中间路由器进行重组。分片后的 IP 分组直至到达目的主机后才能汇集在一起,并且甚至不一定以原先的次序到达。这样,进行接收的主机都要求支持重组能力。

32. 一个网络中有几个子网,其中一个已分配了子网号 74.178.247.96/29,则下列网络前缀中不能再分配给其他子网的是( )。
A. 74.178.247.120/29
B. 74.178.247.64/29
C. 74.178.247.96/28
D. 74.178.247.104/29

32. C

        “/29” 表明前 29 位是网络号,4 个选项的前 3 个字节均相同。A 中第 4 个字节 120 为 01111000,前 5 位为 01111;B 中第 4 个字节 64 为 01000000,前 5 位为 01000;C 中第 4 个字节 96 为 01100000,前 4 位为 0110;D 中第 4 个字节 104 为 01101000,前 5 位为 01101。因为已经分配的子网 74.178.247.96/29 的第 4 个字节的前 5 位为 01100,这与 C 中第 4 个字节的前 4 位重叠,所以 C 中的网络前缀不能再分配给其他子网。

33. 主机 A 和主机 B 的 IP 地址分别为 216.12.31.20 和 216.13.32.21,要想让 A 和 B 工作在同一个 IP 子网内,应该给它们分配的子网掩码是( )。
A. 255.255.255.0
B. 255.255.0.0
C. 255.255.255.255
D. 255.0.0.0

33. D

        本题实际上就是要求找一个子网掩码,使得 A 和 B 的 IP 地址与该子网掩码逐位 “与” 之后得到相同的结果。选项 D 与 A、B 相 “与” 的结果均为 216.0.0.0。

34. 某单位分配了 1 个 B 类地址,计划将内部网络划分成 35 个子网,将来可能增加 16 个子网,每个子网的主机数量接近 800 台,则可行的掩码方案是( )。
A. 255.255.248.0
B. 255.255.252.0
C. 255.255.254.0
D. 255.255.255.0

34. B

        未进行子网划分时,B 类地址有 16 位作为主机位。因为共需要划分 51 个子网,2⁵ < 51 < 2⁶,所以需要从主机位划出 6 位作为子网号,剩下的 10 位可容纳的主机数为 1022(2¹⁰ - 2)台主机,满足题目要求。因此子网掩码为 255.255.252.0。

35. 设有 4 条路由 172.18.129.0/24、172.18.130.0/24、172.18.132.0/24 和 172.18.133.0/24,若进行路由聚合,则能覆盖这 4 条路由的地址是( )。
A. 172.18.128.0/21
B. 172.18.128.0/22
C. 172.18.130.0/22
D. 172.18.132.0/23

35. A

        4 条路由的前 24 位(3 个字节)为网络前缀,前 2 个字节都一样,因此只需要比较第 3 个字节即可,129 = 10000001,130 = 10000010,132 = 10000100,133 = 10000101。前 5 位是完全相同的,因此聚合后的网络的掩码中,1 的数量应该是 8 + 8 + 5 = 21,聚合后的网络的第 3 个字节应该是 10000000 = 128,因此答案为 172.18.128.0/21。

36. 下列 4 个地址块中,与地址块 192.168.6.192/26 不重叠且与 192.168.6.192/26 聚合后的地址块不会引入多余地址的是( )。
A. 192.168.6.0/25
B. 192.168.6.0/26
C. 192.168.6.128/26
D. 192.168.6.192/27

36. C

        选项 A 与 192.168.6.192/26 不重叠,聚合后的地址块为 192.168.6.0/24,聚合后的地址块会引入多余地址。选项 B 与 192.168.6.192/26 不重叠,聚合后的地址块为 192.168.6.0/24,聚合后的地址块会引入多余地址;选项 C 与 192.168.6.192/26 不重叠,聚合后的地址块为 192.168.6.128/25,聚合后的地址块未引入多余地址;选项 D 在 192.168.6.192/26 内,有重叠。

37. 在一条点对点链路上,为了减少 IP 地址的浪费,子网掩码应指定为( )。
A. 255.255.255.252
B. 255.255.255.248
C. 255.255.255.240
D. 255.255.255.196

37. A

        在一条点对点链路中,只需要两个主机 IP 地址、一个网络地址和一个广播地址的 4 种组合,主机号只需 2 位,因此子网掩码应指定为 255.255.255.252 或用 CIDR 表示为 “/30”。

        注意,在新标准中,该题设的子网掩码可指定为 255.255.255.254,或用 CIDR 表示为 “/31”。

38. 某子网的子网掩码为 255.255.255.224,共给 4 台主机分配了 IP 地址,其中一台因 IP 地址分配不当而存在通信故障。这一台主机的 IP 地址是( )。
A. 202.3.1.33
B. 202.3.1.65
C. 202.3.1.44
D. 202.3.1.55

38. B

        本题中,某主机不能正常通信意味着它与其他三台主机不在同一个子网,只需判断哪个选项和其他选项不在同一个子网即可。子网掩码为 255.255.255.224 表示前 27 位是网络号,可以看出选项 B 属于子网 202.3.1.64/27,其他三项属于子网 202.3.1.32/27。或者,后 5 位是主机号,前 3 个子网的地址范围为 202.3.1.1~30, 33~62, 65~94(排除全 0 或全 1),据此也能选出答案。

39. 某主机的 IP 地址是 166.66.66.66,子网掩码为 255.255.192.0,若该主机向其所在子网发送广播分组,则目的 IP 地址应该是( )。
A. 166.66.66.255
B. 166.66.255.255
C. 166.255.255.255
D. 166.66.127.255

39. D

        由子网掩码 255.255.192.0,可知网络号占 18 位,主机号占 14 位,所以该子网的广播地址为 166.66.66.66 的后 14 位主机号为全 1,所以目的 IP 地址为 166.66.127.255。

40. 现将一个 IP 网络划分为 4 个子网,若其中一个子网是 192.168.1.130/26,则下列网络中不可能是另外 3 个子网之一的是( )。
A. 192.168.1.0/25
B. 192.168.1.64/26
C. 192.168.1.96/27
D. 192.168.1.224/27

40. C

        类似于哈夫曼编码的思想,可用高度为 32 的满二叉树来表示整个 IP 地址空间,因此每个分支节点都可表示成一个地址块,该分支节点下的所有叶节点的编码都是属于该地址块的 IP 地址。下图是以地址块 “/24” 为根的二叉树表示,为了简洁,图中省略了共同前缀 192.168.1。

        本题要求找出 3 个子网与题中的子网构成一个更大的网络,对应到二叉树中,需满足两个条件:①4 个子网的地址空间互不重叠,即 4 个分支节点不存在任何祖先或双亲关系;②4 个子网刚好能构成一个新的地址空间,即存在一个节点刚好能覆盖这 4 个节点下的所有子孙。现结合选项分析:选项 A、D 和 110/27 可与题中子网聚合成 / 24 网络;选项 B、00/26、11/26 可与题中子网聚合成 / 24 网络;选项 C 若要与题中子网聚合成一个更大的网络,则至少还需要 00/26、010/27、11/26,共 5 个子网,与题意不符。注意,上述对子网号的分析都是用的二进制表示。

41. 位于不同子网中的主机之间相互通信时,下列说法中正确的是( )。
A. 路由器在转发 IP 数据报时,重新封装源硬件地址和目的硬件地址
B. 路由器在转发 IP 数据报时,重新封装源 IP 地址和目的 IP 地址
C. 路由器在转发 IP 数据报时,重新封装目的硬件地址和目的 IP 地址
D. 源站点可以直接进行 ARP 广播得到目的站点的硬件地址

41. A

        IP 数据报的首部既有源 IP 地址,又有目的 IP 地址,但在通信中路由器只会根据目的 IP 地址进行路由选择。IP 数据报在通信过程中,首部的源 IP 地址和目的 IP 地址在经过路由器时不会发生改变。ARP 广播只在子网中传播,因为相互通信的主机不在同一个子网内,所以不可以直接通过 ARP 广播得到目的站的硬件地址。硬件地址只具有本地意义,因此每当路由器将 IP 数据报转发到一个具体的网络中时,都需要重新封装源硬件地址和目的硬件地址。

        注意:路由器接收到分组后,剥离该分组的数据链路层协议头,然后在分组被转发之前,给分组加上一个新的链路层协议头。

42. 路由器收到目的 IP 地址为 255.255.255.255 的分组,则路由器的操作是( )。
A. 丢弃该 IP 分组
B. 从所有其他接口转发该 IP 分组
C. 通过路由表中的默认路由转发该 IP 分组
D. 通过路由表中的特定主机路由转发该 IP 分组

42. A

        255.255.255.255 是受限的广播地址,仅用于主机配置过程中 IP 分组的目的地址。在任何情况下,路由器都不转发目的地址为受限广播地址的 IP 分组,这种 IP 分组仅出现在本地网络中。

43. 某以太网中,甲的 IP 地址为 211.71.136.23,子网掩码为 255.255.240.0,已知网关地址为 211.71.136.1。若甲向乙(IP 地址为 211.71.130.25)发送一个 IP 分组,则( )。
A. 该分组封装成帧后直接发送给乙,帧中目的 MAC 地址为网关的 MAC 地址
B. 该分组封装成帧后直接发送给乙,帧中目的 MAC 地址为乙的 MAC 地址
C. 该分组封装成帧后交由网关转发,帧中目的 MAC 地址为网关的 MAC 地址
D. 该分组封装成帧后交由网关转发,帧中目的 MAC 地址为乙的 MAC 地址

43. B

        先判断乙和甲是否在同一个子网内,用 IP 地址和子网掩码进行按位 AND 运算,然后检查它们的网络前缀是否相同。若乙和甲在同一个子网内,则直接交付,无须经过网关,因此将乙的 MAC 地址作为帧的目的 MAC 地址。若乙和甲不在同一个子网内,则要通过网关转发,因此将网关的 MAC 地址作为帧的目的 MAC 地址。经计算,甲的网络前缀为 211.71.128.0/20,乙的网络前缀为 211.71.128.0/20,乙和甲在同一个子网内,因此帧的目的 MAC 地址为乙的 MAC 地址。

44. 下列情况需要启动 ARP 请求的是( )。
A. 主机需要接收信息,但 ARP 表中没有源 IP 地址与 MAC 地址的映射关系
B. 主机需要接收信息,但 ARP 表中已有源 IP 地址与 MAC 地址的映射关系
C. 主机需要发送信息,但 ARP 表中没有目的 IP 地址与 MAC 地址的映射关系
D. 主机需要发送信息,但 ARP 表中已有目的 IP 地址与 MAC 地址的映射关系

44. C

        当源主机向本地局域网上的某主机发送 IP 数据报时,先在其 ARP 高速缓存中查看有无目的 IP 地址与 MAC 地址的映射。若有,就把这个硬件地址写入 MAC 帧,然后通过局域网把该 MAC 帧发往此硬件地址;若没有,则先通过广播 ARP 请求分组,在获得目的主机的 ARP 响应分组后,将目的主机的 IP 地址与硬件地址的映射写入 ARP 高速缓存。若目的主机不在本局域网上,则将 IP 分组发送给本局域网上的路由器,当然要先通过同样的方法获得路由器的 IP 地址和硬件地址的映射关系。

45. 某网络拓扑如下图所示,H1 与 H2 的默认网关和子网掩码都分别配置为 192.168.3.1 和 255.255.255.0,H3 和 H4 的默认网关和子网掩码都分别配置为 192.168.3.254 和 255.255.255.128,初始时所有设备的 ARP 缓存均为空。则下列说法中错误的是( )。

A. 若 H1 向 H3 发送数据,则 H2、H3、H4 都能收到 H1 发来的 ARP 请求报文
B. 若 H3 向 H1 发送数据,则 H3 能收到 H1 发来的 ARP 响应报文
C. 若 H1 向 H2 发送数据,则 H2、H3、H4 都能收到 H1 发来的 ARP 请求报文
D. 若 H3 向 H4 发送数据,则 H3 能收到 H4 发来的 ARP 响应报文

45. B

        H3 向 H1 发送数据:①H3 用目的 IP 地址、子网掩码逐位 “与”,192.168.3.2 & 255.255.255.128 = 192.168.3.0,因为与 H3 自身的网络前缀不同,所以判定 H3 和 H1 不属于同一个网络。②H3 使用 ARP 获得默认网关 E1 的 MAC 地址,并将发往 H1 的 IP 数据报封装成 MAC 帧(H3 判定和 H1 不属于同一个网络,因此目的 MAC 地址是默认网关 E1),该帧经过集线器、交换机的转发,最终被默认网关 E1 接收(H1 收不到这个帧),路由器不再向入口 E1 转发 IP 数据报。综上,H3 不会向 H1 发送 ARP 响应报文,选项 B 错误。读者可尝试分析其他选项的通信过程。

46. 网络层的广播指的是目的 IP 地址是广播 IP 地址,数据链路层的广播指的是目的 MAC 地址是广播 MAC 地址,下列报文段封装成 IP 数据报和以太网 MAC 帧后,目的 IP 地址是广播地址,目的 MAC 地址是单播地址的是( )。
I. ARP 请求报文
II. ARP 响应报文
III. DHCP 发现报文
IV. DHCP 提供报文
V. DHCP 请求报文
VI. DHCP 确认报文
A. IV、VI
B. I、III、VI
C. II、V、VI
D. III、IV、V、VI

46. A

        ARP 请求报文的目的 IP 地址是目的主机的 IP 地址,目的 MAC 地址是广播 MAC 地址。ARP 响应报文的目的 IP 地址是发起 ARP 请求的主机的 IP 地址,目的 MAC 地址是发起 ARP 请求的主机的 MAC 地址。DHCP 发现报文的目的 IP 地址是广播 IP 地址 255.255.255.255,目的 MAC 地址是广播 MAC 地址。DHCP 提供报文的目的 IP 地址同样是广播 IP 地址 255.255.255.255,但目的 MAC 地址是客户端主机的 MAC 地址。DHCP 请求报文和 DHCP 发现报文类似;DHCP 确认报文和 DHCP 提供报文类似。

47. 可以动态为主机配置 IP 地址的协议是( )。
A. ARP
B. RARP
C. DHCP
D. NAT

47. C

DHCP 提供了一种机制,使得使用 DHCP 可自动获得 IP 的配置信息而无须手工干预。

48. 若某路由器收到一个 TTL 值为 1 的 IP 数据报,则路由器的操作是( )。
A. 转发该 IP 数据报
B. 仅仅丢弃该 IP 数据报
C. 丢弃该 IP 数据报并向源主机发送类型为终点不可达的 ICMP 差错报告报文
D. 丢弃该 IP 数据报并向源主机发送类型为时间超过的 ICMP 差错报告报文

48. D

若路由器收到一个 TTL 值为 1 的 IP 数据报,则它先将 TTL 值减 1,然后判断是否为 0。若为 0,则丢弃该 IP 数据报并向源主机发送类型为时间超过的 ICMP 差错报告报文。

49. 下列关于 ICMP 报文的说法中,错误的是( )。
A. ICMP 报文封装在数据链路层帧中发送
B. ICMP 报文可以用于报告 IP 数据报发送错误
C. ICMP 报文封装在 IP 数据报中发送
D. 对于已经携带 ICMP 差错报文的分组,不再产生 ICMP 差错报文

49. A

ICMP 属于网络层协议,ICMP 报文被封装在 IP 数据报中发送,但 ICMP 不是高层协议。

50. 下列关于 ICMP 差错报文的描述中,错误的是( )。
A. ICMP 报文分为差错报告报文和询问报文两类
B. 对于已经分片的分组,只对第一个分片产生 ICMP 差错报文
C. PING 使用了 ICMP 差错报文
D. 对于多播的分组,不产生 ICMP 差错报文

50. C

PING 命令使用了 ICMP 的询问报文中的回送请求和回答报文。

51. 【2010 统考真题】某网络的 IP 地址空间为 192.168.5.0/24,采用定长子网划分,子网掩码为 255.255.255.248,则该网络中的最大子网个数、每个子网内的最大可分配地址个数分别是( )。
A. 32,8
B. 32,6
C. 8,32
D. 8,30

51. B

因为该网络的 IP 地址为 192.168.5.0/24,所以网络号为前 24 位,后 8 位为子网号 + 主机号。子网掩码为 255.255.255.248,第 4 个字节 248 转换成二进制为 11111000,因此后 8 位中,前 5 位用于子网号,在 CIDR 中可以表示 2⁵ = 32 个子网;后 3 位用于主机号,除去全 0 和全 1 的情况,可以表示 2³ - 2 = 6 台主机地址。

52. 【2010 统考真题】若路由器 R 因为拥塞丢弃 IP 分组,则此时 R 可向发出该 IP 分组的源主机发送的 ICMP 报文类型是( )。
A. 路由重定向
B. 目的不可达
C. 源点抑制
D. 超时

52. C

ICMP 差错报告报文有 5 种:终点不可达、源点抑制、时间超过、参数问题、改变路由。其中源点抑制是指当路由器或主机因拥塞而丢弃数据报时,向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。注意,最新的 ICMP 标准已不再使用源点抑制报文。

53. 【2011 统考真题】在子网 192.168.4.0/30 中,能接收目的地址为 192.168.4.3 的 IP 分组的最大主机数是( )。
A. 0
B. 1
C. 2
D. 4

53. C

首先分析 192.168.4.0/30 这个网络,主机号占 2 位,地址范围为 192.168.4.0~192.168. 4.3,主机号全 1 时是广播地址、全 0 时是本网络地址,因此可容纳 4 - 2 = 2 台主机。

54. 【2011 统考真题】某网络拓扑如下图所示,路由器 R1 只有到达子网 192.168.1.0/24 的路由。为使 R1 可以将 IP 分组正确地路由到图中的所有子网,在 R1 中需要增加的一条路由(目的网络,子网掩码,下一跳)是( )。

A. 192.168.2.0         255.255.255.128             192.168.1.1
B. 192.168.2.0         255.255.255.0                 192.168.1.1
C. 192.168.2.0         255.255.255.128             192.168.1.2
D. 192.168.2.0         255.255.255.0                 192.168.1.2

54. D

        要使 R1 能正确地将分组路由到所有子网,R1 中需要有到 192.168.2.0/25 和 192.168. 2.128/25 的路由,分别转换成二进制如下:
192.168.2.0:11000000 10101000 00000010 00000000
192.168.2.128:11000000 10101000 00000010 10000000

        前 24 位都相同,于是可以聚合成超网 192.168.2.0/24,子网掩码为前 24 位,即 255. 255.255.0。下一跳是与 R1 直接相连的 R2 的地址,因此是 192.168.1.2。

55. 【2012 统考真题】某主机的 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

55. D

        子网掩码的第 3 个字节为 11111100,可知前 22 位为子网号、后 10 位为主机号。IP 地址的第 3 个字节为 01001101(下画线为子网号的一部分),将主机号(后 10 位)全置为 1,可以得到广播地址为 180.80.79.255。

56. 【2012 统考真题】ARP 的功能是( )。
A. 根据 IP 地址查询 MAC 地址
B. 根据 MAC 地址查询 IP 地址
C. 根据域名查询 IP 地址
D. 根据 IP 地址查询域名

56. A

在实际网络的数据链路层上传送数据时,最终必须使用硬件地址,ARP 将网络层的 IP 地址解析为数据链路层的 MAC 地址。

57. 【2012 统考真题】在 TCP/IP 体系结构中,直接为 ICMP 提供服务的协议是( )。
A. PPP
B. IP
C. UDP
D. TCP

57. B

        ICMP 报文作为数据字段封装在 IP 分组中,因此 IP 直接为 ICMP 提供服务。UDP 和 TCP 都是传输层协议,为应用层提供服务。PPP 是数据链路层协议,为网络层提供服务。

58. 【2015 统考真题】某路由器的路由表如下所示:

目的网络

下一跳

接口

169.96.40.0/23

176.1.1.1

S1

169.96.40.0/25

176.2.2.2

S2

169.96.40.0/27

176.3.3.3

S3

0.0.0.0/0

176.4.4.4

S4

若路由器收到一个目的地址为 169.96.40.5 的 IP 分组,则转发该 IP 分组的接口是( )。
A. S1        B. S2        C. S3        D. S4

58. C

        根据 “最长前缀匹配原则”,169.96.40.5 与 169.96.40.0 的前 27 位匹配最长,因此选 C。选项 D 为默认路由,只有当前面的所有目的网络都不能和分组的目的 IP 地址匹配时才使用。

59. 【2016 统考真题】如下图所示,假设 H1 与 H2 的默认网关和子网掩码均分别配置为 192.168.3.254 和 255.255.255.128,H3 和 H4 的默认网关和子网掩码均分别配置为 192.168.3.254 和 255.255.255.128,则下列现象中可能发生的是( )。

A. H1 不能与 H2 进行正常 IP 通信        B. H2 与 H4 均不能访问 Internet
C. H1 不能与 H3 进行正常 IP 通信        D. H3 不能与 H4 进行正常 IP 通信

59. C

从子网掩码可知 H1 和 H2 处于同一网络,H3 和 H4 处于同一网络,因此 H1 和 H2、H3 和 H4 分别可以进行正常的 IP 通信。H1 和 H2、H3 和 H4 处于不同的网络,因此需要通过路由器才能进行正常的 IP 通信,当 H1 向 H3 发送 IP 分组时,H1 用目的 IP 地址、子网掩码逐位 “与” H1 自身的网络前缀不同,于是判定 H3 与 H1 属于不同的网络,需要将该 IP 分组发送到默认网关,而 H1 配置的默认网关为 192.168.3.1,但 R2 的 E1 接口的 IP 地址为 192.168.3.254,因此 H1 不能与 H3 进行正常的 IP 通信。注意,即使 H1 的默认网关配置正确,但因为路由器不会从分组入口进行转发,所以 H1 和 H3 也无法进行正常的 IP 通信。H2 的默认网关为 192.168.3.1,因此 H2 也不能访问 Internet;H4 的默认网关为 192.168.3.254,因此 H4 可以正常访问 Internet。

60. 【2016 统考真题】在上题的图中,假设连接 R1、R2 和 R3 之间的点对点链路使用地址 201.1.3.x/30,当 H3 访问 Web 服务器 S 时,R2 转发出去的封装 HTTP 请求报文的 IP 分组是源 IP 地址和目的 IP 地址,它们分别是( )。
A. 192.168.3.251,130.18.10.1
B. 192.168.3.251,201.1.3.9
C. 201.1.3.8,130.18.10.1
D. 201.1.3.10,130.18.10.1

60. D

当内网用户向公网发送 IP 分组时,NAT 路由器会更改 IP 分组的源地址,因此下一步就是求 R1 的公网 IP 地址。连接 R1、R2 和 R3 之间的点对点链路使用 201.1.3.x/30 地址,可知该地址块的 IP 地址的后两位为主机号,而主机号全 0 和全 1 的 IP 地址不能分配,因此若已知路由器之间的点对点链路中的一个路由器接口的 IP 地址,就可求出另一路由器接口的 IP 地址。在 R1 和 R2 相连的链路中,已知 R1 端接口的 IP 地址为 201.1.3.9/30,将其后 8 位展开成二进制为 0000 1001,所以可分配给 R2 的 L0 接口的 IP 地址为 201.1.3.10。同理,也可求出 R2 的 L1 接口的 IP 地址为 201.1.3.2。访问 Web 服务器,只能通过 R2 的接口 L0 或 L1 转发,所以经过 R2 转发后,IP 分组的源地址可能为 201.1.3.10 或 201.1.3.2,目的地址为 Web 服务器的 IP 地址 130.18.10.1。

61. 【2017 统考真题】若将网络 21.3.0.0/16 划分为 128 个规模相同的子网,则每个子网可分配的最大 IP 地址个数是( )。
A. 254
B. 256
C. 510
D. 512

61. C

这个网络有 16 位的主机号,平均分成 128 个规模相同的子网,每个子网有 7 位的子网号,9 位的主机号。除去一个网络地址和广播地址,可分配的最大 IP 地址个数是 2⁹ - 2 = 512 - 2 = 510。

62. 【2017 统考真题】下列 IP 地址中,只能作为 IP 分组的源 IP 地址但不能作为目的 IP 地址的是( )。
A. 0.0.0.0
B. 127.0.0.1
C. 200.10.10.3
D. 255.255.255.255

62. A

0.0.0.0/32 可以作为本主机在本网络上的源地址。127.0.0.1 是回送地址,以它为目的 IP 地址的数据将被立即返回本机。200.10.10.3 是 C 类 IP 地址。255.255.255.255 是广播地址。

63. 【2018 统考真题】某路由表中有转发接口相同的 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

63. C

对于此类题目,先分析需要聚合的 IP 地址。观察发现,题中的 4 个路由地址,前 16 位完全相同,不同之处在于第 3 段的 8 位中,将这 8 位展开写成二进制,分别如下:

7

6

5

4

3

2

1

0

32

0

0

1

0

0

0

0

0

40

0

0

1

0

1

0

0

0

48

0

0

1

1

0

0

0

0

56

0

0

1

1

1

0

0

0

观察发现,在 4 个地址的第 3 段中,从前向后最多有 3 位相同,因此这 3 位是能聚合的最大位数。将这些相同的位都保留,将第 3 段第 3 位后的所有位都置 0,就得到了聚合后的 IP 地址:35.230.32.0,其网络前缀为 16 + 3,即前 19 位,因此聚合后的网络地址为 35.230.32.0/19。

64. 【2018 统考真题】路由器 R 通过以太网交换机 S1 和 S2 连接两个网络,R 的接口、主机 H1 和 H2 的 IP 地址与 MAC 地址如下图所示。若 H1 向 H2 发送一个 IP 分组 P,则 H1 发出的封装 P 的以太网帧的目的 MAC 地址、H2 收到的封装 P 的以太网帧的源 MAC 地址分别是( )。

A. 00-a1-b2-c3-d4-62,00-1a-2b-3c-4d-52
B. 00-a1-b2-c3-d4-62,00-a1-b2-c3-d4-61
C. 00-1a-2b-3c-4d-51,00-1a-2b-3c-4d-52
D. 00-1a-2b-3c-4d-51,00-a1-b2-c3-d4-61

64. D

        在网络的数据传送中,会经常用到两个地址:MAC 地址和 IP 地址。其中,MAC 地址会随着数据被发往不同的网络而改变,但 IP 地址当且仅当数据在私有网络与外部网络之间传递时才会改变。分组 P 在如题图所示的网络中传递时,首先由主机 H1 将分组发往路由器 R,这时源 MAC 地址为 H1 主机本身的 MAC 地址,即 00 - 1a - 2b - 3c - 4d - 52,目的 MAC 地址为路由器 R 的 MAC 地址,即 00 - 1a - 2b - 3c - 4d - 51。路由器 R 收到分组 P 后,根据分组 P 的目的 IP 地址,得知应将分组从另一个端口转发出去,于是会给分组 P 更换新的 MAC 地址,此时因为从另外的端口转发出去,所以 P 的新源 MAC 地址变为负责转发的端口 MAC 地址,即 00 - a1 - b2 - c3 - d4 - 61,目的 MAC 地址应为主机 H2 的 MAC 地址,即 00 - a1 - b2 - c3 - d4 - 62。根据分析过程,题目所问的 MAC 地址应为路由器 R 两个端口的 MAC 地址,因此选 D。

65. 【2019 统考真题】若将 101.200.16.0/20 划分为 5 个子网,则可能的最小子网的可分配 IP 地址数是( )。
A. 126
B. 254
C. 510
D. 1022

65. B

        网络前缀为 20 位,将 101.200.16.0/20 划分为 5 个子网,为了保证有子网的可分配 IP 地址数尽可能小,即要让其他子网的可分配 IP 地址数尽可能大,不能采用平均划分的方法,而要采用变长的子网划分方法,也就是最大子网用 1 位子网号,第二大子网用 2 位子网号,以此类推。

        子网 1:101.200.0001 0000.00000001~101.200.0001 0111.11111110;地址范围为 101.200.16.1/21~101.200.23.254/21;可分配的 IP 地址数为 2046 个。

        子网 2:101.200.0001 1000.00000001~101.200.0001 1011.11111110;地址范围为 101.200.24.1/22~101.200.27.254/22;可分配的 IP 地址数为 1022 个。

        子网 3:101.200.0001 1100.00000001~101.200.0001 1101.11111110;地址范围为 101.200.28.1/23~101.200.29.254/23;可分配的 IP 地址数为 510 个。

        子网 4:101.200.0001 1110.00000001~101.200.0001 1110.11111110;地址范围为 101.200.30.1/24~101.200.30.254/24;可分配的 IP 地址数为 254 个。

        子网 5:101.200.0001 1111.00000001~101.200.0001 1111.11111110;地址范围为 101.200.31.1/24~101.200.31.254/24;可分配的 IP 地址数为 254 个。

        综上,可能的最小子网的可分配 IP 地址数是 254 个。

66. 【2021 统考真题】现将一个 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

66. B

        划分子网的原则是要求划分出来的子网的 IP 地址空间互不重叠,且原来的 IP 地址空间不遗漏,求解本题最好的方法是代入选项,观察是否可将原 IP 地址空间分割为 3 个互不重叠的子网。根据题意,将 IP 网络划分为 3 个子网。其中一个是 192.168.9.128/26。可简写成 10/26(省略前面相同的 24 位前缀,其中 10 是 128 的二进制 1000 0000 的前两位,因为 26 - 24 = 2)。同理,A 可简写成 0/25;B 可简写成 00/26;C 可简写成 11/26;D 可以简写成 110/27。采用二叉树形式画出这些子网的地址空间如下图所示。

        对于 A 和 C,可以组成 0/25、10/26、11/26 这 3 个互不重叠的子网。对于 D,可以组成 10/26、110/27、111/27 这 3 个互不重叠的子网。但对于 B,要想将一个 IP 网络划分为几个互不重叠的子网,3 个是不够的,至少需要划分为 4 个子网:00/26、01/26、10/26、11/26。

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

67. B

        链路层 MTU = 800B。IP 分组首部长 20B。片偏移以 8 个字节为偏移单位,因此除了最后一个分片,其他每个分片的数据部分长度都是 8B 的整数倍。所以,最大 IP 分片的数据部分长度为 776B。在总长度为 1580B 的 IP 数据报中,数据部分占 1560B,1560B/776B = 2.01…,需要分成 3 片。所以第 2 个分片的总长度字段为 796,MF 为 1(表示还有后续的分片)。

68. 【2022 统考真题】若某主机的 IP 地址是 183.80.72.48,子网掩码是 255.255.192.0,则该主机所在网络的网络地址是( )。
A. 183.80.0.0
B. 183.80.64.0
C. 183.80.72.0
D. 183.80.192.0

68. B

        主机所在网络的网络地址可以通过主机的 IP 地址和子网掩码逐位 “与” 得到。子网掩码 255.255.192.0 的二进制前 18 位为 1、后 14 位为 0,把主机 IP 地址的后 14 位变为 0,得到的结果为 183.80.64.0,即为主机所在网络的网络地址。

69. 【2022 统考真题】下图所示网络中的主机 H 的子网掩码与默认网关分别是( )。

A. 255.255.255.192,192.168.1.1
B. 255.255.255.192,192.168.1.62
C. 255.255.255.224,192.168.1.1
D. 255.255.255.224,192.168.1.62

69. D

        默认网关可以理解为到当前主机最近的路由器的端口地址,所以是 192.168.1.62,而该主机的子网掩码和网关的子网掩码也相同,/27 即为 255.255.255.224。

70. 【2023 统考真题】某网络拓扑如下图所示,其中路由器 R2 实现 NAT 功能。若主机 H 向 Internet 发送 1 个 IP 分组,则经过 R2 转发后,该 IP 分组的源 IP 地址是( )。

A. 195.123.0.33
B. 195.123.0.35
C. 192.168.0.1
D. 192.168.0.3

70. A

        H 向 Internet 发送 IP 分组,初始的源 IP 地址为 192.168.0.3,经过 NAT 路由器的转发后,将源 IP 地址从私有 IP 地址改成全球 IP 地址(R2 外部接口的 IP 地址),因为 R2 外部接口和 195.123.0.34/30 处于同一子网,该子网可分配的 IP 地址范围是 195.123.0.33~195.123.0.34,所以 R2 外部接口的 IP 地址是 195.123.0.33,也就是经过 R2 转发后的源 IP 地址。

71. 【2023 统考真题】主机 168.16.84.24/20 所在子网的最小可分配 IP 地址和最大可分配 IP 地址分别是( )。
A. 168.16.80.1,168.16.84.254
B. 168.16.80.1,168.16.95.254
C. 168.16.84.1,168.16.84.254
D. 168.16.84.1,168.16.95.254

71. B

网络号位数为 20 = 8×2 + 4,子网掩码为 11111111 11111111 11110000 00000000,将它与主机地址 168.16.84.24 进行逐位 “与”,得到网络地址为 168.16.80.0/20,该网段共有 2¹² - 2 个可供分配的 IP 地址,地址范围是 168.16.80.1~168.16.95.254。

72. 【2024 统考真题】如下图所示的支持 VLAN 划分的交换机,已按端口划分了 3 个 VLAN,部分端口连接主机的 IP 地址和 MAC 地址如图中所示,ARP 表结构为 <IP 地址,MAC 地址,TTL>。下列选项中,不会出现在 H4 的 ARP 表中的是( )。

A. 192.168.3.81,00-18-A2-3B-36-21,14:32:00
B. 192.168.3.91,00-3E-C2-39-12-B5,14:37:00
C. 192.168.3.125,00-E5-78-4A-09-B2,14:45:00
D. 192.168.3.129,00-08-6E-05-A7-82,14:52:00

72. D

        ARP 用于解决局域网上的主机或路由器的 IP 地址和 MAC 地址的映射问题。因此 H4 的 ARP 表中只有和 H4 处于同一虚拟局域网上的主机的 IP 地址和 MAC 地址的映射,H4 位于 VLAN1,H6 位于 VLAN3,因此 D 表示的 H6 的 IP 地址与 MAC 地址的映射不应出现在 H4 的 ARP 表中。

二、综合应用题

01.一个数据报长度为 4000B(首部长度固定为 20B)。现经过一个网络传送,但此网络能够传送的最大数据长度为 1500B。IP 分片时,首部长度不变。试问应当划分为几个短一些的数据报片?各数据报片的数据字段长度、片段偏移字段和 MF 标志应为何值?

01. 【解答】

        数据报长度为 4000B,有效载荷为 4000 - 20 = 3980B。网络能传送的最大有效载荷为 1500 - 20 = 1480B,因此应分为 3 个短些的片,各片的数据字段长度分别为 1480、1480 和 1020B。片段偏移字段的单位为 8B,1480/8 = 185,(1480×2)/8 = 370,因此片段偏移字段的值分别为 0、185、370。MF = 1 时,代表后面还有分片;MF = 0 时,代表后面没有分片,因此 MF 字段的值分别为 1、1 和 0(注意,MF = 0 不能确定是独立的数据报,还是分片得来的,只有当 MF = 0 且片段偏移字段 > 0 时,才能确定是分片的最后一个分片)。

02.某网络的一台主机产生了一个 IP 数据报,首部长度为 20B,数据部分长度为 2000B。该数据报需要经过两个网络到达目的主机,这两个网络所允许的数据链路层的最大传输单位(MTU)分别为 1500B 和 576B。问原 IP 数据报到目的主机时分成了几个 IP 小报文?每个报文的数据部分长度分别是多少?

02. 【解答】

        在 IP 层下面的每种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传输单位(MTU)。1500 - 20 = 1480,2000 - 1480 = 520,所以原 IP 数据报经过第一个网络后分成了两个 IP 小报文,第一个报文的数据部分长度是 1480B,第二个报文的数据部分长度是 520B。

        (除最后一个报片外的)所有报片的有效载荷都是 8B 的倍数。576 - 20 = 556,但 556 不能被 8 整除,所以分片时的数据部分最大只能取 552。第一个报文经过第 2 个网络后,1480 - 552×2 = 376 < 576,变成数据长度分别为 552B、552B、376B 的 3 个 IP 小报文;第 2 个报文 520 < 552,因此不用分片。因此到达目的主机时,原 2000B 的数据被分成数据长度分别为 552B、552B、376B、520B 的 4 个小报文。

03.若到达的分组的片偏移值为 100,分组首部中的首部长度字段值为 5,总长度字段值为 100,则数据部分第一个字节的编号是多少?能确定数据部分最后一个字节的编号吗?

03. 【解答】

        分片的片偏移值表示其数据部分首字节在原始分组的数据部分中的相对位置,单位为 8B。首部长度字段以 4B 为单位,总长度字段以字节为单位。题目中,分组的片偏移值为 100,因此其数据部分第一个字节的编号是 800。因为分组的总长度为 100B,首部长度为 4×5 = 20B,所以数据部分长度为 80B。因此该分组的数据部分的最后一个字节的编号是 879。

04.在 4 个 “/24” 地址块中进行最大可能的聚合:212.56.132.0/24、212.56.133.0/24、212.56.134.0/24、212.56.135.0/24。

04. 【解答】

        因为一个 CIDR 地址块中可以包含很多地址,所以路由表中就利用 CIDR 地址块来查找目的网络,这种地址的聚合常称为路由聚合。

        本题已知有 212.56.132.0/24、212.56.133.0/24、212.56.134.0/24、212.56.135.0/24 地址块,可知第 3 个字节前 6 位相同,因此共同前缀为 8 + 8 + 6 = 22 位,因为这 4 个地址块的第 1、2 个字节相同,考虑它们的第 3 个字节:132 = (10000100)₂,133 = (10000101)₂,134 = (10000110)₂,135 = (1000 0111)₂,所以共同的前缀有 22 位,即 1101010000111000100001,聚合的 CIDR 地址块是 212.56.132.0/22。

05.现有一公司需要创建内部网络,该公司包括工程技术部、市场部、售后部、财务部和办公室 5 个部门,每个部门有 20 - 30 台计算机。试问:
1)若要将几个部门从网络上分开,且分配给该公司使用的地址为一个 C 类地址,网络地址是 192.168.161.0,则如何划分网络?可以将几个部门分开?
2)确定各部门的网络地址和子网掩码,并写出分配给每个部门网络中的主机 IP 地址范围。

05. 【解答】

可以采用划分子网的方法对该公司的网络进行划分。因为该公司包括 5 个部门,所以共需要划分为 5 个子网。

已知网络地址 192.168.161.0 是一个 C 类地址,所需的子网数为 5,每个子网的主机数为 20~30。子网号的比特数为 3,即最多有 2³ = 8 个可分配的子网,主机号的比特数为 5,因为主机号不能为全 0 或全 1,所以每个子网最多有 2⁵ - 2 = 30 个可分配的 IP 地址。
5 个部门子网的子网掩码均为 255.255.255.224,各部门的网络地址与部门主机的 IP 地址范围可分配如下:

06.某路由器具有右表所示的路由表项。

1)假设路由器收到两个分组:分组 A 的目的地址为 131.128.55.33,分组 B 的目的地址为 131.128.55.38。确定路由器为这两个分组选择的下一跳,并加以说明。

2)在路由表中增加一个路由表项,它使以 131.128.55.33 为目的地址的 IP 分组选择 “A” 作为下一跳,而不影响其他目的地址的 IP 分组的转发。

3)在路由表中增加一个路由表项,使所有目的地址与该路由表中任何路由表项都不匹配的 IP 分组被转发到下一跳 “E”。

4)将 131.128.56.0/24 划分为 4 个规模尽可能大的等长子网,给出子网掩码及每个子网的可分配地址范围。

网络前缀

下一跳

131.128.56.0/24

A

131.128.55.32/28

B

131.128.55.32/30

C

131.128.0.0/16

D

06. 【解答】

1)使用 CIDR 时,可能会导致有多个匹配结果,应当从当前匹配结果中选择具有最长网络前缀的路由。下面来一一分析分组 A 与表中这四项的匹配性:

①131.128.56.0/24 与 31.128.55.33 不匹配,因为前 24 位不同。

④②131.128.55.32/28 与 131.128.55.33 的前 24 位匹配,只需看后面 4 位是否匹配,32 转换为二进制为 0010 0000,33 转换为二进制为 0010 0001,匹配,且匹配了 28 位。

③131.128.55.32/30 与 131.128.55.33 的前 24 位匹配,只需要看后面 6 位是否匹配,32 转换为二进制为 0010 0000,33 转换为二进制为 0010 0001,匹配,且匹配了 30 位。

131.128.0.0/16 与 131.128.55.33 匹配,且匹配了 16 位。
综上,对于分组 A,第 2、3、4 项都能与之匹配,但根据最长网络前缀匹配原则,应该选择网络前缀为 131.128.55.32/30 的表项进行转发,下一跳路由器为 C。
同理,对于分组 B,路由表中第 2 和 4 项都能与之匹配,但是根据最长网络前缀匹配原则,应该选择第 2 个路由表项转发,下一跳路由器为 B。

2)即增加 1 条特定主机路由:网络前缀 131.128.55.33/32;下一跳 A。

3)即增加 1 条默认路由:网络前缀 0.0.0.0/0;下一跳 E。

4)要划分成 4 个规模尽可能大的子网,需要从主机位中划出 2 位作为子网位(22=4,CIDR 广泛使用之后允许子网位可以全 0 和全 1)。子网掩码均为 11111111 11111111 11111111 11000000,即 255.255.255.192。而地址范围中不能包含主机位全 0 或全 1 的地址。

07.下表是使用无类别域间路由选择(CIDR)的路由选择表,地址字段是用十六进制表示的,试指出具有下列目标地址的 IP 分组将被投递到哪个下一站?

07. 【解答】

1)网络号 C4.5E.10.0/20(下一站地是 B):第 3 个字节可以用二进制表示成 0001 0000。目标地址 C4.5E.13.87 的第 3 个字节可以用二进制表示成 0001 0011,显然取 20 位掩码与网络号 C4.5E.10.0/20 相匹配,所以具有该目标地址的 IP 分组将被投递到下一站地 B。

2)网络号 C4.50.0.0/12(下一站地是 A):第 2 个字节可以用二进制表示成 0101 0000。目标地址 C4.5E.22.09 的第 2 个字节可以用二进制表示成 0101 1110,显然取 12 位掩码与网络号 C4.50.0.0/12 相匹配,所以具有该目的地址的 IP 分组将被投递到下一站地 A。

3)网络号 80.0.0.0/1(下一站地是 E):第 1 个字节可以用二进制表示成 1000 0000。目标地址 C3.41.80.02 的第 1 个字节可以用二进制表示成 1100 0011,显然取 1 位掩码与网络号 80.0.0.0/1 相匹配,所以具有该目标地址的 IP 分组将被投递到下一站地 E。

4)网络号 40.0.0.0/2(下一站地是 F):第 1 个字节可以用二进制表示成 0100 0000。目标地址 5E.43.91.12 的第 1 个字节可以用二进制表示成 0101 1110,显然取 2 位掩码与网络号 40.0.0.0/2 相匹配,所以具有该目标地址的 IP 分组将被投递到下一站地 F。

08.一个自治系统有 5 个局域网,如下图所示,LAN2 至 LAN5 上的主机数分别为 91、150、3 和 15,该自治系统分配到的 IP 地址块为 30.138.118.0/23,试给出每个局域网的地址块(包括前缀)。

08. 【解答】

        分配网络前缀应先分配地址数较多的前缀。已知该自治系统分配到的 IP 地址块为 30.138.118/23(注意:①一个路由器端口也需要占用一个 IP 地址;②子网划分的答案不唯一)。

        LAN3:主机数 150,因为(27−2)<150+1<(28−2),所以主机号为 8 比特,网络前缀为 24。取第 24 位为 0,分配地址块 30.138.118.0/24。

        LAN2:主机数 91,因为(26−2)<91+1<(27−2),所以主机号为 7 比特,网络前缀为 25。取第 24、25 位为 10,分配地址块 30.138.119.0/25。

        LAN5:主机数 15,因为(24−2)<15+1<(25−2),所以主机号为 5 比特,网络前缀为 27。取第 24、25、26、27 位为 1110,分配地址块 30.138.119.192/27。

        LAN1:共有 3 个路由器,再加上一个网关地址,至少需要 4 个 IP 地址。因为(22−2)<3+1<(23−2),所以主机号为 3 比特,网络前缀为 29。取第 24、25、26、27、28、29 位为 111101,分配地址块 30.138.119.232/29。

        LAN4:主机数为 3,因为(22−2)<3+1<(23−2),所以主机号为 3 比特,网络前缀 29。取第 24、25、26、27、28、29 位为 111110,分配地址块 30.138.119.240/29。

09.某个网络地址块 192.168.75.0 中有 5 台主机 A、B、C、D 和 E,主机 A 的 IP 地址为 192.168.75.18,主机 B 的 IP 地址为 192.168.75.146,主机 C 的 IP 地址为 192.168.75.158,主机 D 的 IP 地址为 192.168.75.161,主机 E 的 IP 地址为 192.168.75.173,共同的子网掩码是 255.255.255.240。请回答:

1)5 台主机 A、B、C、D、E 分属几个网段?哪些主机位于同一网段?主机 D 的网络地址为多少?

2)若要加入第 6 台主机 F,使它能与主机 A 属于同一网段,则其 IP 地址范围是多少?

3)若在网络中另加入一台主机,其 IP 地址为 192.168.75.164,则它的广播地址是多少?哪些主机能够收到?

09. 【解答】

1)共同的子网掩码为 255.255.255.240,表示前 28 位为网络号,同一网段内的 IP 地址具有相同的网络号。主机 A 的网络号为 192.168.75.16;主机 B 的网络号为 192.168.75.144;主机 C 的网络号为 192.168.75.144;主机 D 的网络号为 192.168.75.160;主机 E 的网络号为 192.168.75.160。因此 5 台主机 A、B、C、D、E 分属 3 个网段,主机 B 和 C 在一个网段,主机 D 和 E 在一个网段,A 主机在一个网段。主机 D 的网络号为 192.168.75.160。

2)主机 F 与主机 A 在同一个网段,所以主机 F 所在的网段为 192.168.75.16,第 4 个字节 16 的二进制表示为 0001 0000,最后边的 4 位为主机位,去掉全 0 和全 1。则其 IP 地址范围为 192.168.75.17 - 192.168.75.30,并且不能为 192.168.75.18。

3)因为 164 的二进制为 1010 0100,将最右边的 4 位置 1,即 1010 1111,则广播地址为 192.168.75.175。主机 D 和主机 E 可以收到。

10.一个 IPv4 分组到达一个节点时,其首部信息(以十六进制表示)为:0x45 00 00 54 00 03 58 50 20 06 FF F0 7C 4E 01 02 04 0E 0F 02。IP 分组的首部格式见图 4.5。请回答:

1)分组的源 IP 地址和目的 IP 地址各是什么(点分十进制表示法)?

2)该分组数据部分的长度是多少?

3)该分组是否已经分片?若有分片,则偏移量是多少?

10. 【解答】

IPv4 的首部格式如下,然后根据首部格式来解析首部各个字段的含义。

1)由上图可知,源 IP 地址为 IP 首部的第 13、14、15、16 个字节,即 7C 4E 03 02,转换为点分十进制表示可得源 IP 地址为 124.78.3.2。目的 IP 地址为 IP 首部的第 17、18、19、20 个字节,即 B4 0E 0F 02,转换为点分十进制表示可以得到目的 IP 地址为 180.14.15.2。

2)分组总长度是 IP 首部的第 3、4 个字节,即 00 54,转换为十进制得该分组总长度为 84,单位为字节。而首部长度是 IP 首部的第 5 - 8 位,值为 5,单位为 4B,因此首部长度为 4B×5 = 20B。数据部分长度 = 总长度 - 首部长度 = 84 - 20 = 64B。

3)该分组首部的片偏移字段为第 7、8 个字节(除去第 7 个字节的前 3 位),不等于 0,而是二进制值 1 1000 0101 0000,即十进制数 6224,单位是 8B。另外,分组的标志字段为第 7 个字节的前 3 位,即 010,中间位 DF = 1 表示不可分片,最后位 MF = 0 表示后面没有分片。

11.主机 A 的 IP 地址为 218.207.61.211,MAC 地址为 00:1d:72:98:1d:fc。A 收到一个帧,该帧的前 64 个字节的十六进制形式和 ASCII 形式如下图所示。

IP 分组的首部格式见图 4.5,以太网帧的格式参见 3.6.2 节。问:

1)主机 A 所在网络的网关路由器的相应端口的 MAC 地址是多少?

2)该 IP 分组所携带的数据量为多少字节?

3)若该分组需要被路由器转发到一条 MTU 为 380B 的链路上,则路由器将做何种操作?

11. 【解答】

1)根据收到的帧,找出源 IP 地址为 da c7 66 28,表示成十进制为 218.199.102.40,是一个 C 类 IP 地址,与 A 的 IP 地址 218.207.61.211 不在同一个网络中,所以需经过路由器转发。MAC 地址只具有本地意义(ARP 也只能工作在同一局域网中)。该帧为 A 收到的帧,因此目的 MAC 地址为 A 的 MAC 地址,源 MAC 地址为网关路由器端口的 MAC 地址(若为 A 发出的帧,则目的 MAC 地址为默认网关的 MAC 地址)。首先找到目的 MAC 地址 00:1d:72:98:1d:fc 的位置(在下图中的位置 1 标出),根据以太网帧的结构,目的 MAC 地址后面紧邻的是源 MAC 地址,因此源 MAC 地址为 00:00:5e:00:01:01。

2)要求得 IP 分组所携带的数据量,需要知道首部长度和总长度。218.207.61.211 表示成十六进制是 da.cf.3d.d3,并且作为分组中的目的 IP 地址。在图中确定目的 IP 地址的位置(位3)置 2),再根据 IP 首部的结构,分别从目的 IP 的位置向前数 14 和 16 个字节,即可找到总长度和首部长度字段的位置。但首部长度字段所在的字节值为 0x45,首部长度字段只有 4 位,前 4 位是版本号。因此首部长度的值为 5,单位为 4B,所以首部长度为 20B。总长度字段的值为 0x0190,十进制为 400B。因此分组携带的数据长度为 380B。

因为整个 IP 分组的长度是 400B,大于输出链路 MTU(380B)。这时需要考虑分片,但是否能够分片还得看 IP 首部中的标志位。IP 首部中的标志字段占 3 位,从前到后依次为保留位、DF 位、MF 位。根据 IP 首部结构找到标志字段所在的字节,其值为 0x40,二进制表示为 01000000,于是 DF = 1,不能对该 IP 分组进行分片。此时,路由器应进行的操作是丢弃该分组,并用 ICMP 差错报文向源主机报告。

12.某网络拓扑见下图,R1 和 R2 为路由器,R2 实现了 NAT 功能,Switch 为交换机,Hub 为集线器,Web 服务器 S、主机 H1 - H4 和路由器各接口的 IP 地址配置见图中标注。

回答下列问题:

1)R2 的 E1 接口的 IP 地址是什么?H1 配置的默认网关是什么?

2)假设 H1 和 R2 的 ARP 缓存初始均为空,交换机的交换表初始也为空,H1 向 H3 发送一个 IP 分组 A,H3 收到 A 后向 H1 发送一个响应 IP 分组 B,则能收到封装 A 的以太网帧的主机有哪些?能收到封装 B 的以太网帧的主机有哪些?

3)H1 发出的封装有 HTTP 请求报文的 IP 分组 C,首部中的源 IP 地址和目的 IP 地址分别是什么?当 C 从 R2 转发出去时,首部中的源 IP 地址和目的 IP 地址分别是什么?

12. 【解答】

1)网络前缀 / 30,主机号不能为全 0 或全 1,可求出 R2 接口 E1 的 IP 地址为 203.10.2.1。H1 配置的默认网关应是 R2 接口 E0 的 IP 地址 172.18.1.126。

2)在 H1→R2→H3 传送 IP 分组的过程中,分别使用了两次 ARP,交换机进行了相关的自学习,还需要考虑 Hub 的广播特性。H1 给 H3 发送一个 IP 分组 A,能收到封装 A 的以太网帧的主机有 H3 和 H4,其中 H4 发现帧的目的 MAC 地址与自身的不同且不是广播地址,于是丢弃该帧,而 H3 发现帧的目的 MAC 地址与自身的相同,于是接收该帧。H3 给 H1 发送一个 IP 分组 B,能收到封装 B 的以太网帧的主机有 H4 和 H1,其中 H4 发现帧的目的 MAC 地址与自身的不同且不是广播地址,于是丢弃该帧,而 H1 接收该帧。

3)当 H1 发出 C 时,首部中的源 IP 地址为 H1 的 IP 地址 172.18.1.33,目的 IP 地址为 Web 服务器 S 的 IP 地址 213.48.226.31。当 C 从 R2 转发出去时,首部中的源 IP 地址为 R2 接口 E1 的 IP 地址 203.10.2.1,目的 IP 地址为 Web 服务器 S 的 IP 地址 213.48.226.31。

13.【2009 统考真题】某网络拓扑图如下图所示,路由器 R1 通过接口 E1、E2 分别连接局域网 1、局域网 2,通过接口 L0 连接路由器 R2,并通过路由器 R2 连接域名服务器与互联网。R1 的 L0 接口的 IP 地址是 202.118.2.1;R2 的 L0 接口的 IP 地址是 202.118.2.2,L1 接口的 IP 地址是 130.11.120.1,E0 接口的 IP 地址是 202.118.3.1;域名服务器的 IP 地址是 202.118.3.2。

1)将 IP 地址空间 202.118.1.0/24 划分为两个子网,分别分配给局域网 1 和局域网 2,每个局域网需分配的 IP 地址数不少于 120 个。请给出子网划分结果,说明理由或给出必要的计算过程。

2)请给出 R1 的路由表,使其明确包括到局域网 1 的路由、局域网 2 的路由、域名服务器的主机路由和互联网的路由。

3)请采用路由聚合技术,给出 R2 到局域网 1 和局域网 2 的路由。

13. 【解答】

1)子网号可以全 0 或全 1,但主机号不能全 0 或全 1。因此,若将 IP 地址空间 202.118.1.0/24 划分为 2 个子网,且每个局域网需分配的 IP 地址个数不少于 120 个,则子网号至少要占用 1 位。
由26−2<120<27−2可知,主机号至少要占用 7 位。
因为源 IP 地址空间的网络前缀为 24 位,所以主机号位数 + 子网号位数 = 8。
综上可得主机号位数为 7,子网号位数为 1。
因此子网的划分结果为子网 1:子网地址为 202.118.1.0,子网掩码为 255.255.255.128(或子网 1:202.118.1.0/25);子网 2:子网地址为 202.118.1.128,子网掩码为 255.255.255.128(或子网 2:202.118.1.128/25)。
地址分配方案:子网 1 分配给局域网 1,子网 2 分配给局域网 2;或者子网 1 分配给局域网 2,子网 2 分配给局域网 1。

2)因为局域网 1 和局域网 2 分别与路由器 R1 的 E1、E2 接口直接相连,所以在 R1 的路由表中,目的网络为局域网 1 的转发路径是直接通过接口 E1 转发的,目的网络为局域网 2 的转发路径是直接通过接口 E2 转发的。因为局域网 1、2 的网络前缀均为 25 位,所以它们的子网掩码均为 255.255.255.128。
域名服务器是一台特定的主机,它指明了其 IP 地址,因此设定 1 条特定主机路由,该表项的子网掩码为 255.255.255.255(只有和全 1 的子网掩码相与,才能保证和目的 IP 地址一样,从而选择该特定路由)。对应的下一跳地址是 202.118.2.2,转发接口是 L0。
R1 到互联网的路由实质上相当于一个默认路由(当某一目的 IP 地址与路由表中其他任何表项都不匹配时,则匹配该默认路由。互联网包括了无数的网络集合,不可能在路由表项中一一列出,因此只能采用默认路由的方式),默认路由一般写为 0/0,即目的地址为 0.0.0.0,子网掩码为 0.0.0.0。对应的下一跳地址是 202.118.2.2,转发接口是 L0。
综上可得到路由器 R1 的路由表如下:

(若子网 1 分配给局域网 2,子网 2 分配给局域网 1)

目的网络 IP 地址

子网掩码

下一跳 IP 地址

接口

202.118.1.128

255.255.255.128

E1

202.118.1.0

255.255.255.128

E2

202.118.3.2

255.255.255.255

202.118.2.2

L0

0.0.0.0

0.0.0.0

202.118.2.2

L0

3)局域网 1 和局域网 2 的地址可以聚合为 202.118.1.0/24,而对于路由器 R2 来说,通往局域网 1 和局域网 2 的转发路径都是从 L0 接口转发的,因此采用路由聚合技术后,路由器 R2 到局域网 1 和局域网 2 的路由如下:

14.【2015 统考真题】某网络拓扑如下图所示,其中路由器内网接口、DHCP 服务器、WWW 服务器与主机 1 均采用静态 IP 地址配置,相关地址信息见图中标注;主机 2 - 主机 N 通过 DHCP 服务器动态获取 IP 地址等配置信息。

回答下列问题:

1)DHCP 服务器可为主机 2 - N 动态分配 IP 地址的最大范围是什么?主机 2 使用 DHCP 获取 IP 地址的过程中,发送的封装 DHCP Discover 报文的 IP 分组的源 IP 地址和目的 IP 地址分别是多少?

2)若主机 2 的 ARP 表为空,则该主机访问 Internet 时,发出的第一个以太网帧的目的 MAC 地址是什么?封装主机 2 发往 Internet 的 IP 分组的以太网帧的目的 MAC 地址是什么?

3)若主机 1 的子网掩码和默认网关分别配置为 255.255.255.0 和 111.123.15.2,则该主机是否能访问 WWW 服务器?是否能访问 Internet?请说明理由。

14. 【解答】

1)DHCP 服务器可为主机 2~N 动态分配 IP 地址的最大范围是 111.123.15.5~111.123.15.254;主机 2 发送的封装 DHCP Discover 报文的 IP 分组的源 IP 地址和目的 IP 地址分别是 0.0.0.0 和 255.255.255.255。

2)主机 2 发出的第一个以太网帧的目的 MAC 地址是 ff-ff-ff-ff-ff-ff;封装主机 2 发往 Internet 的 IP 分组的以太网帧的目的 MAC 地址是 00-a1-a1-a1-a1-a1。

3)主机 1 能访问 WWW 服务器,但不能访问 Internet。因为主机 1 的子网掩码配置正确而默认网关 IP 地址被错误地配置为 111.123.15.2(正确 IP 地址是 111.123.15.1),所以主机 1 可以访问在同一个子网内的 WWW 服务器,但当主机 1 访问 Internet 时,主机 1 发出的 IP 分组会被路由到错误的默认网关(111.123.15.2),从而无法到达目的主机。

15.【2018 统考真题】某公司的网络如下图所示。IP 地址空间 192.168.1.0/24 均分给销售部和技术部两个子网,并已分别为部分主机和路由器接口分配了 IP 地址,销售部子网的 MTU = 1500B,技术部子网的 MTU = 800B。

回答下列问题:

1)销售部子网的广播地址是什么?技术部子网的子网地址是什么?若每台主机仅分配一个 IP 地址,则技术部子网还可以连接多少台主机?

2)假设主机 192.168.1.1 向主机 192.168.1.208 发送一个总长度为 1500B 的 IP 分组,IP 分组的首部长度为 20B,路由器在通过接口 F1 转发该 IP 分组时进行了分片。若分片时尽可能分为最大片,则一个最大 IP 分片封装数据的字节数是多少?至少需要分为几个分片?每个分片的片偏移量是多少?

15. 【解答】

1)广播地址是网络地址中主机号全 1 的地址(主机号全 0 的地址代表网络本身)。销售部和技术部均被分配了 192.168.1.0/24 的 IP 地址空间,IP 地址的前 24 位为网络号。于是在后 8 位中划分部门的子网,选择前 1 位作为部门子网的网络号。根据已分配的 IP 地址,销售部子网的网络号为 0,技术部子网的网络号为 1,则技术部的子网地址是 192.168.1.128;销售部的子网地址为 192.168.1.0,广播地址为 192.168.1.127。
每台主机仅分配一个 IP 地址,计算目前还可以分配的主机数,用技术部可以分配的主机数减去已分配的主机数,技术部总共可以分配的计算机主机数为27−2=126(减去全 0 和全 1 的主机号)。已经分配了208−129+1=80台,此外还有 1 个 IP 地址(192.168.1.254)分配给了路由器的端口,因此还可以分配126−80−1=45台。

2)判断分片的大小,需要考虑各个网段的 MTU,而且注意分片的数据长度必须是 8B 的整数倍。由题可知,在技术部子网内,MTU = 800B,IP 分组首部长 20B,最大 IP 分片封装数据的字节数为⌊(800−20)/8⌋×8=776。至少需要的分片数为⌈(1500−20)/776⌉=2。第 1 个分片的偏移量为 0;第 2 个分片的偏移量为776/8=97。

16.【2020 统考真题】某校园网有两个局域网,通过路由器 R1、R2 和 R3 互连后接入 Internet,S1 和 S2 为以太网交换机。局域网采用静态 IP 地址配置,路由器部分接口以及各主机的 IP 地址如下图所示。

请回答下列问题:

1)为使 H2 和 H3 能够访问 Web 服务器(使用默认端口号),需要进行什么配置?

2)若 H2 主动访问 Web 服务器时,将 HTTP 请求报文封装到 IP 数据报 P 中发送,则 H2 发送的 P 的源 IP 地址和目的 IP 地址分别是什么?经过 R3 转发后,P 的源 IP 地址和目的 IP 地址分别是什么?经过 R2 转发后,P 的源 IP 地址和目的 IP 地址分别是什么?

16. 【解答】

1)H2 和 H3 与 Web 服务器处于不同的局域网,路由器 R2、R3 具有 NAT 功能。当 R2 从 WAN 口收到来自 H2 或 H3 发来的 HTTP 请求时,根据 NAT 表发送给 Web 服务器的对应端口。为使外部主机能正常访问 Web 服务器,应在 R2 的 NAT 表中增加一项,外网的 IP 地址配置为路由器的外端 IP 地址,内网的 IP 地址配置为 Web 服务器的 IP 地址,HTTP 的服务器端的默认端口号为 80,因此外网和内网的端口号都需配置为 80。只需在 R2 中配置 Web 服务器的 NAT 表项,而不用在 R3 中配置 H2 和 H3 的 NAT 表项,原因在于 H2 和 H3 是主动访问 Web 服务器,若不提前配置好 Web 服务器的 NAT 映射,则当 IP 分组到达 R2 时,就不知道应当把目的 IP 地址转换成专用网中的哪个本地 IP 地址。而 R3 会自动记录 H2 和 H3 所对应的 IP 地址和端口号,且客户端的端口号是随机分配的,无法做静态配置,只能通过自动动态配置实现。R2 的 NAT 表配置如下:

2)因为启用了 NAT 服务,H2 发送的 P 的源 IP 地址应该是 H2 的内网地址,目的地址应该是 R2 的外网 IP 地址,源 IP 地址是 192.168.1.2,目的 IP 地址是 203.10.2.2。R3 转发后,将 P 的源 IP 地址改为 R3 的外网 IP 地址,目的 IP 地址仍然不变,源 IP 地址是 203.10.2.6,目的 IP 地址是 203.10.2.2。R2 转发后,将 P 的目的 IP 地址改为 Web 服务器的内网地址,源地址仍然不变,源 IP 地址是 203.10.2.6,目的 IP 地址是 192.168.1.2。

17.【2022 统考真题】某网络拓扑如下图所示,R 为路由器,S 为以太网交换机,AP 是 802.11 接入点,路由器的 E0 接口和 DHCP 服务器的 IP 地址配置如图中所示;H1 与 H2 属于同一个广播域,但不属于同一个冲突域;H2 和 H3 属于同一个冲突域;H4 和 H5 已经接入网络,并通过 DHCP 动态获取了 IP 地址。现有路由器、100BaseT 以太网交换机和 100BaseT 集线器(Hub)三类设备各若干。

请回答下列问题:

1)设备 1 和设备 2 应该分别选择哪类设备?

2)若信号传播速度为 2×10⁸m/s,以太网最小帧长为 64B,信号通过设备 2 时会产生额外的 1.51μs 的时延,则 H2 与 H3 之间可以相距的最远距离是多少?

3)在 H4 通过 DHCP 动态获取 IP 地址过程中,H4 首先发送了 DHCP 报文 M,M 是哪种 DHCP 报文?路由器 E0 接口能否收到封装 M 的以太网帧?S 向 DHCP 服务器转发的封装 M 的以太网帧的目的 MAC 地址是什么?

4)若 H4 向 H5 发送一个 IP 分组 P,则 H5 收到的封装 P 的 802.11 帧的地址 1、地址 2 和地址 3 分别是什么?

17. 【解答】

1)设备 1 选择 100BaseT 以太网交换机,设备 2 选择 100BaseT 集线器。因为物理层设备既不能隔离冲突域,又不能隔离广播域,链路层设备可以隔离冲突域但不能隔离广播域。

2)本题与 2016 年真题第 36 题几乎相同,仅修改了几个数字。有关最短帧长的题要抓住两个公式来分析:①发送帧的时间≥争用期的时间;②最短帧长 = 数据传输速率 × 争用期时间。要使公式①恒成立,就要考虑在最短帧长的情况下公式①仍成立。发送最短帧的时间为64B÷100Mb/s=5.12μs,根据公式①可知,该时间即为争用期时间(往返时延)的最大值。本题的特点在于往返时延由两部分组成,即传播时延和 Hub 产生的转发时延。单程总时延为2.56μs,Hub 产生的转发时延为1.51μs,所以传播时延为2.56−1.51=1.05μs,从而 H2 与 H3 之间理论上可以相距的最大距离为200m/μs×1.05μs=210m。

3)M 是 DHCP 发现报文(DISCOVER 报文)。路由器 E0 接口能收到封装 M 的以太网帧,因为 H4 发送的 DHCP 发现报文是广播的形式,所以同一个广播域内的所有设备和接口都可以收到该以太网帧。因为是广播帧,所以目的 MAC 地址是全 1,S 向 DHCP 服务器转发的封装 M 的以太网帧的目的 MAC 地址是 FF-FF-FF-FF-FF-FF。

4)在 H5 收到的帧中,地址 1、地址 2 和地址 3 分别是 00-11-11-11-11-E1、00-11-11-11-11-C1 和 00-11-11-11-11-D1。该帧来自 AP,地址 1 是接收方 H5 的 MAC 地址,地址 2 是 AP 的 MAC 地址,地址 3 是发送方 H4 的 MAC 地址。

4.3 IPv6

4.3.1 IPv6 的特点

        目前广泛使用的 IPv4 是在 20 世纪 70 年代设计的,互联网经过几十年的飞速发展,到 2011 年 2 月,IPv4 地址已经耗尽,为了解决 “IP 地址耗尽” 问题,有以下三种措施:

1)采用无类别编址 CIDR,使 IP 地址的分配更加合理。

2)采用网络地址转换(NAT)方法以节省全球 IP 地址。

3)采用具有更大地址空间的新版本的 IPv6。

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

命题追踪 IPv6 的特点(2023)

IPv6 的主要特点如下:

        1)更大的地址空间。这是最重要的。IPv6 将地址从 IPv4 的 32 位增大到 128 位,IPv6 的地址空间是 IPv4 的2128/232=296倍,从长远来看,这些地址是绝对够用的。

        2)扩展的地址层次结构。IPv6 因为地址空间很大,所以可以划分为更多的层次。

        3)灵活的首部格式。IPv6 定义了许多可选的扩展首部,不仅可提供比 IPv4 更多的功能,还能提高路由器的处理效率,这是因为路由器对扩展首部不进行处理。

        4)改进的选项。IPv6 首部长度是固定的,其选项放在有效载荷中,选项是灵活可变的。而 IPv4 所规定的选项是固定不变的,其选项放在首部的可选部分。

        5)允许协议继续扩充。IPv6 允许不断扩充功能,而 IPv4 的功能是固定不变的。

        6)支持即插即用(自动配置)。因此 IPv6 不需要使用 DHCP。

        7)支持资源的预分配。IPv6 支持实时音 / 视频等要求保证一定带宽和时延的应用。

        8)IPv6 只有源主机才能分片,是端到端的,不允许类似 IPv4 在中间路由器进行分片。

        9)IPv6 首部长度是固定的 40B,而 IPv4 首部长度是可变的(必须是 4B 的整数倍)。

        10)增大了安全性。身份鉴别和保密功能是 IPv6 的扩展首部。

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

4.3.2 IPv6 数据报的基本首部

        IPv6 数据报由两部分组成:基本首部和有效载荷(也称净负荷)。有效载荷由零个或多个扩展首部(扩展首部不属于 IPv6 数据报的首部)及其后面的数据部分构成,如图 4.11 所示。

与 IPv4 相比,IPv6 对首部中的某些字段进行了如下更改:

  • 取消了首部长度字段,因为它的首部长度是固定的(40B)。
  • 取消了服务类型字段,因为优先级和流标号字段实现了服务类型字段的功能。
  • 取消了总长度字段,改用有效载荷长度字段。
  • 取消了标识、标志和片偏移字段,因为这些功能已包含在分片扩展首部中。
  • 把 TTL 字段改称为跳数限制字段,但作用是一样的(名称与作用更加一致)。
  • 取消了协议字段,改用下一个首部字段。
  • 取消了检验和字段,毕竟在传输层有差错检验功能,这样就加快了路由器的处理速度。
  • 取消了选项字段,而用扩展首部来实现选项功能。

        因为取消了首部中不必要的功能,IPv6 基本首部的字段数减少到只有 8 个,但是由于 IPv6 地址长度为 128 位,所以 IPv6 基本首部的长度反而增大到 40B。IPv6 数据报的基本首部的格式如图 4.12 所示。

命题追踪 IPv6 基本首部字段的意义(2023)

下面简单介绍 IPv6 基本首部中各字段的含义:

1)版本。占 4 位,指明协议的版本,对于 IPv6 该字段的值是 6。

2)通信量类。占 8 位,用来区分不同的 IPv6 数据报的类别或优先级。

3)流标号。占 20 位,IPv6 提出流的抽象概念。流是指互联网上从特定源点到特定终点(单播或多播)的一系列数据报(如实时音 / 视频传输),而在这个 “流” 所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有相同的流标号。

4)有效载荷长度。占 16 位,指明 IPv6 数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内)。这个字段的最大值是 65535(单位为字节)。

5)下一个首部。占 8 位,该字段相当于 IPv4 首部中的协议字段或可选字段。当 IPv6 没有扩展首部时,其作用与 IPv4 的协议字段一样,它指明 IPv6 数据报所运载的数据是何种协议数据单元;当 IPv6 带有扩展首部时,它就标识后面第一个扩展首部的类型。

6)跳数限制。占 8 位,类似于 IPv4 首部的 TTL 字段。源点在每个数据报发出时即设定某个限制值(最大为 255)。路由器每次转发时将其值减 1,减为 0 时就将该数据报丢弃。

7)源地址和目的地址。占 128 位,是数据报的发送端 / 接收端的 IP 地址。

4.3.3 IPv6 地址

IPv6 数据报的目的地址有以下三种基本类型:

1)单播。就是传统的点对点通信。

2)多播。一点对多点的通信,数据报发送到一组计算机中的每一台。

3)任播。这是 IPv6 增加的一种类型。任播的终点是一组计算机,但数据报只交付其中的一台计算机,通常是距离最近的一台计算机。

        IPv4 地址通常使用点分十进制表示法。若 IPv6 也使用这种表示法,则地址书写起来将相当长。IPv6 标准使用冒号十六进制记法,即把地址中的每 4 位用一个十六进制数表示,并用冒号分隔每 16 位,如 4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:2170。

        当 16 位域的开头有一些 0 时,可以采用一种缩写表示法,但在域中必须至少有一个数字。例如,可以把地址 4BF5:0000:0000:0000:BA5F:039A:000A:2176 缩写为 4BF5:0:0:0:BA5F:39A:A:2176。

        当有相继的 0 值域时,还可以进一步缩写。这些域可用双冒号缩写(::)。当然,双冒号表示法在一个地址中仅能出现一次,因为 0 值域的个数没有编码,需要从指定的总的域的个数来推算。这样一来,前述地址可被更紧凑地书写成 4BF5::BA5F:39A:A:2176。

        IPv6 地址的分类如表 4.3 所示。

对表 4.3 给出的五类地址简单解释如下:

1)未指明地址:该地址不能用作目的地址,只能用于还未配置 IPv6 地址的主机作为源地址。

2)环回地址:该地址的作用与 IPv4 的环回地址相同,但 IPv6 的环回地址仅此一个。

3)多播地址:该地址的作用和 IPv4 的一样。这类地址占 IPv6 地址空间的 1/256。

4)本地链路单播地址:该地址的作用类似于 IPv4 的私有 IP 地址。

5)全球单播地址:用得最多的地址。IPv6 全球单播地址采用三级结构(见图 4.13):第一级为全球路由选择前缀,占 48 位,用于互联网中的路由选择,相当于 IPv4 分类地址中的网络号;第二级为子网标识符,占 16 位,用于各机构构建自己的子网;第三级为接口标识符,用于指明主机或路由器的单个网络接口,相当于 IPv4 分类地址中的主机号。

        与 IPv4 不同,IPv6 地址的接口标识符有 64 位之多,足以对各种接口的硬件地址直接进行编码。这样,IPv6 就可直接从 128 位地址的最后 64 位中直接提取出相应的硬件地址,而不需要使用地址解析协议(ARP)进行地址解析。

4.3.4 从 IPv4 向 IPv6 过渡

        从 IPv4 向 IPv6 过渡只能采用逐步演进的办法,同时还必须使新安装的 IPv6 系统能够向后兼容。IPv6 系统必须能够接收和转发 IPv4 分组,并且能够为 IPv4 分组选择路由。

命题追踪 IPv4 向 IPv6 过渡的策略(2023)

从 IPv4 向 IPv6 过渡可以采用下列两种策略:

1)双协议栈,是指在一台设备上同时装有 IPv4 和 IPv6 两个协议栈,分别配置了一个 IPv4 地址和一个 IPv6 地址,因此这台设备既能和 IPv4 网络通信,又能和 IPv6 网络通信。双协议栈主机在与 IPv6 主机通信时采用 IPv6 地址,而在与 IPv4 主机通信时采用 IPv4 地址,双协议栈主机使用应用层的域名系统(DNS)获知目的主机采用的是哪种地址。若 DNS 返回的是 IPv4 地址,则双协议的源主机就使用 IPv4 地址。若 DNS 返回的是 IPv6 地址,则双协议栈的源主机就使用 IPv6 地址。

2)隧道技术,是指在 IPv6 数据报要进入 IPv4 网络时,把整个 IPv6 数据报封装成 IPv4 数据报的数据部分,使原来的 IPv6 数据报就好像在 IPv4 网络的隧道中传输。当 IPv4 数据报离开 IPv4 网络时,再将其数据部分交给主机的 IPv6 协议。

4.3.5 本节习题精选

单项选择题
01. 下一代互联网核心协议 IPv6 的地址长度是( )。
A. 32 比特
B. 48 比特
C. 64 比特
D. 128 比特

01. D
IPv6 的地址用 16B(128 比特)表示,比 IPv4 长得多,地址空间是 IPv4 的296倍。

02. 与 IPv4 相比,IPv6( )。
A. 采用 32 位 IP 地址
B. 增加了首部字段数量
C. 不提供 QoS 保障
D. 没有提供检验和字段

02. D
IPv6 采用 128 位地址。IPv6 减少了首部字段数量,仅包含 8 个字段。IPv6 支持 QoS(指在有限的带宽资源下,为业务提供端到端的服务质量保证),以满足实时、多媒体通信的需要。因为目前网络传输介质的可靠性较高,所以出现比特错误的可能性很低,且数据链路层和传输层有自己的检验,为了效率,IPv6 没有检验和字段。

03. 一个 IPv6 地址为 1A22:120D:0000:0000:72A2:0000:0000:00C0,可以简化写成( )。
A. 1A22:120D::72A2:0000:0000:00C0
B. 1A22:120D::72A2:0:0:C0
C. 1A22::120D::72A2::00C0
D. 1A22:120D:0:0:72A2::C0

03. C
        使用零压缩法时,双冒号 “::”(表示零压缩)在一个地址中只能出现一次。也就是说,当有多处不相邻的 0 时,只能用 “::” 代表其中的一处。

04. 一个 IPv6 地址的简化写法为 8::D0:123:CDEF:89A,则其完整地址应该是( )。
A. 8000:0000:0000:0000:00D0:1230:CDEF:89A0
B. 0008:0000:0000:0000:00D0:0123:CDEF:89A0
C. 8000:0000:0000:0000:D000:1230:CDEF:89A0
D. 0008:0000:0000:0000:00D0:0123:CDEF:089A

04.D

        冒号十六进制记法表示 IPv6 地址的规则:①多个连续区域为 0,可进行零压缩,但一个地址仅可出现一次零压缩。②每个区域开头的 0 可省略,结尾的 0 不可省略。按照规则先将题中零压缩的部分展开,得到 8:0000:0000:0000:D0:123:CDEF:89A;每个区域应该有 4 位十六进制数,不足 4 位则表示开头的 0 被省略,补充后得到 0008:0000:0000:0000:00D0:0123:CDEF:089A。


05. 下列关于 IPv6 的描述中,错误的是( )。
A. IPv6 的首部长度是不可变的
B. IPv6 不允许在中间路由器进行分片
C. IPv6 采用了 16B 的地址,在可预见的将来不会用完
D. IPv6 使用了首部检验和来保证传输的正确性

05.D
        IPv6 的首部长度是固定的,因此不需要首部长度字段。IPv6 取消了检验和字段,这样就加快了路由器处理数据报的速度。我们知道,数据链路层会丢弃检测出差错的帧,传输层也有相应的差错处理机制,因此网络层的差错检测可以精简掉。

06. 若一个路由器收到的 IPv6 数据报因太大而不能转发到链路上,则路由器将把该数据报( )。
A. 丢弃
B. 暂存
C. 分片
D. 转发至能支持该数据报的链路上

06.A
        IPv6 中不允许在中间路由器进行分片。因此,若路由器发现到来的数据报太大而不能转发到链路上,则丢弃该数据报,并向发送方发送一个指示分组太大的 ICMP 报文。

07. 【2023 统考真题】下列关于 IPv4 和 IPv6 的叙述中,正确的是( )。
I. IPv6 地址空间是 IPv4 地址空间的 96 倍
II. IPv4 首部和 IPv6 基本首部的长度均可变
III. IPv4 向 IPv6 过渡可以采用双协议栈和隧道技术
IV. IPv6 首部的 Hop Limit 字段等价于 IPv4 首部的 TTL 字段
A. 仅 I、II
B. 仅 I、IV
C. 仅 II、III
D. 仅 III、IV

07.D
        IPv4 地址占 32 位,地址空间为232;IPv6 地址占 128 位,地址空间为2128,IPv6 地址空间是 IPv4 地址空间的296倍,I 错误。IPv4 首部长度是 4B 的倍数,长度可变;IPv6 基本首部长度是 40B,不可变,II 错误。IPv4 向 IPv6 过渡可以采用双协议栈(设备同时支持 IPv4 和 IPv6)和隧道技术(IPv6 数据报封装 IPv4 的数据部分),III 正确。IPv6 首部的 Hop Limit 字段和 IPv4 首部的 TTL 字段都用于限制数据报在网络中经过的路由器数量,IV 正确。

4.4 路由算法与路由协议

4.4.1 路由算法

        路由选择协议的核心是路由算法,即需要何种算法来获得路由表中的各个项目。路由算法的目的很简单:给定一组路由器及连接路由器的链路,路由算法要找到一条从源路由器到目的路由器的 “最佳” 路径。通常,“最佳” 路径是指具有最低费用的路径。

1.静态路由与动态路由

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

1)静态路由算法:指由网络管理员手工配置每一条路由。

2)动态路由算法:根据网络流量负载和拓扑结构的变化来动态调整自身的路由表。
        静态路由算法的特点是简单和开销较小,但不能及时适应网络状态的变化,适用于简单的小型网络。动态路由算法能较好地适应网络状态的变化,但实现复杂,开销也大,适用于较复杂的大型网络。常用的动态路由算法可分为两类:距离 - 向量路由算法和链路状态路由算法。

2.距离 - 向量路由算法
        距离 - 向量算法的基础是 Bellman - Ford 算法,它用于计算单源最短路径。每个节点以自身为源点执行 Bellman - Ford 算法,所以全局上可以解决任意节点对之间的最短路径问题。
        下面讨论 Bellman - Ford 算法的基本思想。
        假设dx​(y)表示从节点x到节点y的带权最短路径的费用,则有
        dx​(y)=min{c(x,v)+dv​(y)},v是x的所有邻居
式中,c(x,v)是从x到其邻居v的费用。已知x的所有邻居到y的最短路径费用后,从x到y的最短路径费用是对所有邻居v的c(x,v)+dv​(y)的最小值。所有最短路径算法都依赖于一个性质:“两点之间的最短路径也包含了路径上其他顶点间的最短路径。”

对于距离 - 向量算法,每个节点x维护下列路由信息:

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

2)节点x的距离向量,即x到网络中其他节点的费用。这是一组距离,因此称为距离向量。

3)它收到的每个邻居的距离向量,即x的每个邻居到网络中其他节点的费用。
        在距离 - 向量算法中,每个节点定期地向它的每个邻居发送它的距离向量副本。当节点x从它的任何一个邻居v接收到一个新距离向量时,它首先保存v的距离向量,然后使用 Bellman - Ford 公式dx​(y)=min{c(x,v)+dv​(y)}更新自己的距离向量。若节点x的距离向量因这个更新步骤而改变,则节点x接下来继续向它的每个邻居发送其更新后的距离向量。
        下面以图 4.14 顶部三个节点的简单网络为例,说明距离 - 向量算法的实现。

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

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

        初始化后,每个节点第一次向它的所有邻居发送其距离向量,在接收到该更新报文后,每个节点重新计算自己的距离向量。例如,节点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。注意到节点x到节点z的最低费用从 7 变成了 3,节点z到节点x的最低费用也从 7 变成了 3。节点的距离向量变化后,再次向它们的邻居发送它们更新的距离向量,而没有变化的节点y不用发送更新报文。接收到邻居的更新报文后,节点又重新计算它们的距离向量,此次没有节点更新,因此也无更新报文发送,算法进入静止状态,如图4.15(c)所示。
        显然,更新报文的大小与网络中的节点数量成正比,大型网络将导致很大的更新报文。
        最常见的距离 - 向量路由算法是 RIP 算法,它采用跳数作为距离的度量。
3. 链路状态路由算法
        链路状态是指本路由器都和哪些路由器相邻,以及相应链路的代价。链路状态算法要求每个节点都具有全网拓扑结构图(这个拓扑结构图在全网范围内是一致的),它们执行下列两项任务:第一,主动测试所有相邻节点的状态;第二,定期地将链路状态传播给所有其他节点。因此每个节点都知道全网共有多少个节点、哪些节点是相连的、其代价是多少等,于是每个节点都可使用 Dijkstra 最短路径算法计算出到达其他节点的最短路径。
        在链路状态算法中,节点每收到一个链路状态报文,便用其更新自己的网络状态 “视野图”,一旦链路状态发生变化,就使用 Dijkstra 算法重新计算到达所有其他节点的最短路径。
        因为一个节点的链路状态只涉及相邻节点的连通状态,而与整个互联网的规模并无直接关系,所以链路状态算法适用于大型的或路由信息变化聚敛的互联网环境。
        链路状态算法的主要优点是,每个节点都使用同样的链路状态数据独立地计算路径,而不依赖中间节点的计算;链路状态报文不加改变地传播,因此采用该算法易于查找故障。当一个节点从所有其他节点接收到报文时,它就在本地立即计算出正确的路径,保证一步汇聚。最后,因为链路状态报文仅运载来自单个节点关于直接链路的信息,其大小与网络中的节点数量无关,所以链路状态算法比距离 - 向量算法有更好的规模可伸展性。
        两种路由算法的比较:在距离 - 向量算法中,每个节点仅与它的直接邻居交谈,向它的邻居发送自己的路由表,其大小取决于网络中的节点数量,代价较大。在链路状态算法中,每个节点通过广播的方式与所有其他节点交谈,但它只告诉它们与它直接相连的链路的费用。
        典型的链路状态路由算法是 OSPF 算法。

4.4.2 分层次的路由选择协议

        互联网采用的是自适应的、分布式路由选择协议。因为互联网的规模非常大,许多联网单位不愿让外界了解自己单位网络的布局细节,所以互联网采用分层次的路由选择协议。
        为此,可以把整个互联网划分为许多较小的自治系统(Autonomous System,AS)。自治系统是在单一技术管理下的一组路由器,这些路由器使用一种 AS 内部的路由选择协议和共同的度量。一个 AS 对其他 AS 表现出的是一个单一的路由选择策略。
        这样,互联网就把路由选择协议划分为两大类。

1.内部网关协议(Interior Gateway Protocol,IGP)
        内部网关协议即在一个自治系统内部使用的路由选择协议,它与在互联网中的其他自治系统选用什么路由选择协议无关。目前这类路由选择协议使用得最多,如 RIP 和 OSPF。

2.外部网关协议(External Gateway Protocol,EGP)
        若源主机和目的主机处在不同的自治系统中(两个自治系统可能使用不同的 IGP),则当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议。目前使用最多的外部网关协议是 BGP - 4。
        自治系统之间的路由选择也称域间路由选择,自治系统内部的路由选择也称域内路由选择。
        图 4.16 是两个自治系统互连的示意图。每个自治系统自己决定在本自治系统内部运行哪个内部网关协议(可以是 RIP 或 OSPF)。但每个自治系统都有一个或多个路由器(图中的路由器 R1 和 R2)除运行本系统的内部网关协议外,还要运行外部网关协议(如 BGP - 4)。

图4.16 两个自治系统互连的示意图

4.4.3 路由信息协议

        路由信息协议(Routing Information Protocol,RIP)是内部网关协议 IGP 中最先得到广泛应用的协议。RIP 是一种分布式的基于距离向量的路由选择协议。

1.RIP 的规定

1)网络中的每个路由器都要维护从它自身到其他每个目的网络的距离记录,即距离向量。

2)使用跳数(Hop Count)(或称距离)来衡量到达目的网络的距离。规定从一路由器到直接连接的网络的距离定义为 1;而每经过一个路由器,距离就加 1。

3)RIP 认为好的路由就是它通过的路由器数量少,即距离短或跳数少。

命题追踪 RIP中跳数为16的含义(2010)

4)RIP 允许一条路径最多只能包含 15 个路由器。因此距离等于 16 时表示网络不可达。可见 RIP 只适用于小型互联网。距离向量路由可能会出现环路的情况,规定路径上的最高跳数的目的是防止分组不断在环路上循环,减少网络拥塞的可能性。

5)每个路由表项都有三个关键字段:< 目的网络N,距离d,下一跳路由器地址X>。

2.RIP 的特点
RIP 的每个路由器都要不断与其他路由器交换信息,下面三个特点非常重要。

1)和谁交换信息:仅和直接相邻的路由器交换信息。

2)交换什么信息:交换的信息是本路由器所知道的全部信息,即自己的路由表。

3)何时交换信息:按固定的时间间隔(通常为 30 秒)交换路由信息。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
        路由器刚开始工作时,只知道自己到直接相连的几个网络的距离为 1。每个路由器仅和相邻路由器周期性地交换并更新路由信息。经过若干次交换和更新后,所有的路由器最终都会知道到达本自治系统内任何网络的最短距离和下一跳路由器的地址,称为收敛。

命题追踪 封装RIP报文所采用的协议(2017)
        RIP 是应用层协议,它使用 UDP 传送数据(端口 520)。RIP 选择的路径不一定是时间最短的,但一定是具有最少的路由跳数,因为它是根据最少跳数进行路径选择的。

3.RIP 的距离向量算法
对每个相邻路由器发来的 RIP 报文,执行如下步骤:

1)对地址为X的相邻路由器发来的 RIP 报文,先修改该报文中的所有项目:把 “下一跳” 字段中的地址都改为X,并把所有 “距离” 字段的值加 1。

对修改后的 RIP 报文中的每个项目,执行如下步骤:

IF (若原来的路由表中没有目的网络N)则把该项目添加到路由表中(表明这是新的目的网络)。
ELSE IF (若原来的路由表中有目的网络N,且下一跳路由器的地址是X)用收到的项目替换原路由表中的项目(因为要以更新的消息为准)。
ELSE IF (若原来的路由表中有目的网络N,且下一跳路由器的地址不是X)若收到的项目中的距离d小于路由表中的距离,则进行更新。
ELSE 什么也不做。

3)若 180 秒(RIP 默认超时时间)还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达的路由器,即把距离设置为 16(表示不可达)。
4)返回。

命题追踪 RIP 的收敛过程(2024)

        下面举例说明 RIP 路由条目的更新过程。已知路由器 R6 和 R4 互为相邻路由器,表 4.4 (a) 所示为 R6 的路由表,现在收到相邻路由器 R4 发来的路由更新信息,如表 4.4 (b) 所示。

        现在试更新 R6 的路由表。先把 R4 发来的路由表 [表 4.4 (b)] 中各项的距离都加 1,并把下一跳路由器都改为 R4,得到表 4.5 (a)。将这个表的每行与 R6 的路由表 [表 4.4 (a)] 进行比较。
        第一行的 Net1 在表 4.4 (a) 中没有,因此要把这一行添加到表 4.4 (a) 中。
        第二行的 Net2 在表 4.4 (a) 中有,且下一跳路由器也是 R4,因此要更新(距离增大了)。
        第三行的 Net3 在表 4.4 (a) 中有,但下一跳路由器不同。于是需要比较距离。新的路由信息的距离是 2,小于原表中的 4,因此要更新。这样,得出更新后的 R6 的路由表如表 4.5 (b) 所示。

4. RIP 的优缺点

命题追踪 RIP 的优缺点(2024)

RIP 的优点:
1)实现简单、开销小、收敛过程较快。
2)若一个路由器发现了更短的路由,则这种更新信息就传播得很快,在较短时间内便可被传至所有路由器,俗称 “好消息传播得快”。

RIP 的缺点:
1)RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
2)路由器之间交换的是路由器中的完整路由表,因此网络规模越大,开销也越大。
3)当网络出现故障时,路由器之间需反复多次交换信息才能完成收敛,要经过较长时间才能将故障消息传送到所有路由器(慢收敛现象),俗称坏消息传播得慢。

        下面举例说明 RIP“好消息传播得快,坏消息传播得慢” 的特点。假设图 4.17 中的路由器都采用 RIP 交换路由信息,初始时 R1 到网络 N 的距离为 4,且 R1 和 R2 均已收敛。

        在图 4.17 (a) 中,某时刻 R1 的某个端口检测到 “到 N 更短的链路”(距离由 4 变为 1),R1 计算其到 N 的最新距离 =到的距离,并通知邻居;R2 收到后,更新其到 N 的距离为 2,并通知邻居;R1 收到后,R1 到 N 的最短距离未变,不再发送通知,算法进入静止状态。可见,R2 到 N 的距离减少的好消息通过 RIP 得到了迅速传播。

命题追踪 RIP “坏消息传播得慢” 的分析(2016)

        在图 4.17 (b) 中,某时刻 R1 的某个端口检测到 “N 不可达”(距离变为 16),R1 计算其到 N 的最新距离 =到的距离。从网络全局的视角可以看出,经过 R2 的这个新距离显然是错误的。R1 计算出到 N 的最新距离后,通知邻居;R2 收到后,更新其到 N 的距离为 7,通知邻居;R1 收到后,计算其到 N 的距离 =到的距离,继续通知邻居…… 如此循环,直到 R2 最终算出它经由 R1 到达 N 的距离为 16 为止。可见,RIP 关于链路故障或距离增加的坏消息传播得很慢。

4.4.4 开放最短路径优先协议

1. 开放最短路径优先(OSPF)的基本特点

命题追踪 OSPF 和 RIP 的比较(2024)

        OSPF 协议是使用分布式链路状态路由算法的典型代表,也是内部网关协议(IGP)的一种。与 RIP 相比,OSPF 有下面 4 个主要特点:
1)OSPF 使用洪泛法向本自治系统中所有路由器发送信息,路由器通过所有输出端口向所有相邻的路由器发送信息,而每个相邻的路由器又将此信息发往所有的相邻路由器(但不再发送给刚刚发来信息的那个路由器)。这样最终整个区域中所有的路由器都得到了这个信息的一个副本。而 RIP 仅仅向自己相邻的几个路由器发送信息。
2)发送的信息是与本路由器相邻的所有路由器的链路状态,但是,这只是路由器所知道的部分信息。而在 RIP 中,发送的信息是本路由器所知道的全部信息,即整个路由表。
3)只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息,并且更新过程收敛得快,不会出现 RIP “坏消息传播得慢” 的问题。而在 RIP 中,不管网络拓扑是否发生变化,路由器之间都要定期交换路由表的信息。

命题追踪 封装 OSPF 报文所采用的协议(2017)

4)OSPF 是网络层协议,它不用 UDP 或 TCP,而直接用 IP 数据报传送(其 IP 数据报首部的协议字段为 89)。而 RIP 是应用层协议,它在传输层使用 UDP。

注意:
        用 UDP 传送是指将该信息作为 UDP 报文的数据部分,而直接使用 IP 数据报传送是指将该信息直接作为 IP 数据报的数据部分。RIP 报文是作为 UDP 数据报的数据部分。

除以上区别外,OSPF 还有以下特点:
1)OSPF 允许对每条路由设置成不同的代价,对于不同类型的业务可计算出不同的路由。
2)若到同一个目的网络有多条相同代价的路径,则可将通信量分配给这几条路径。
3)OSPF 分组具有鉴别功能,从而保证仅在可信赖的路由器之间交换链路状态信息。
4)OSPF 支持可变长度的子网划分和无分类编址 CIDR。
5)每个链路状态都带上一个 32 位的序号,序号越大,状态就越新。

2. OSPF 的基本工作原理

        因为各路由器之间频繁地交换链路状态信息,所以所有路由器最终都能建立一个链路状态数据库,即全网的拓扑结构图。然后,每个路由器利用链路状态数据库中的数据,使用 Dijkstra 算法计算自己到达各目的网络的最优路径,构造出自己的路由表。此后,当链路状态发生变化时,每个路由器重新计算到达各目的网络的最优路径,构造出新的路由表。

注意:
        虽然使用 Dijkstra 算法能计算出完整的最优路径,但路由表中不会存储完整路径,而只存储 “下一跳”(只有到了下一跳路由器,才能知道再下一跳应当怎样走)。

        为了使 OSPF 能用于规模很大的网络,将一个自治系统再划分为若干更小的范围,称为区域。划分区域的好处是,把利用洪泛法交换链路状态信息的范围局限在各个区域,而不是整个 AS,从而减少了整个网络上的通信量。在一个区域内,由一个或多个区域边界路由器负责为流向该区域以外的分组提供路由选择。在 AS 内只有一个区域配置成主干区域,它包含 AS 内的所有区域边界路由器,可能还包含一些非边界路由器,主干区域的作用是连通其他区域。当分组在 AS 内的不同区域之间传送时,要先找到本区域内的一个区域边界路由器(如 R3、R4、R7),再通过主干区域路由到位于目的区域的区域边界路由器,最后路由到目的地。在图 4.18 中,R3、R4 和 R7 都是区域边界路由器,每个区域至少有一个区域边界路由器。主干区域还要有一个路由器专门负责和本 AS 外的其他 AS 交换路由器信息,称为自治系统边界路由器(如 R6)。

3. OSPF 的分组类型

OSPF 共有以下五种分组类型:
1)问候分组,用来发现和维持邻站的可达性。
2)数据库描述分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
3)链路状态请求分组,向对方请求发送某些链路状态项目的详细信息。
4)链路状态更新分组,用洪泛法对全网更新链路状态,它是 OSPF 最核心的部分。
5)链路状态确认分组,对链路更新分组的确认。

        通常网络中传送的大多数 OSPF 分组都是问候分组。OSPF 规定,两个相邻路由器每隔 10 秒要交换一次问候分组,以便知道哪些邻站可达。若有 40 秒没有收到某个相邻路由器发来的问候分组,则认为该相邻路由器不可达,应立即修改链路状态数据库,并重新计算路由表。

        路由器刚开始工作时,它只能通过问候分组得知它与哪些路由器相邻,以及相应链路的代价。为了得到链路状态数据库,若让所有路由器都将自己的本地链路状态信息进行全网广播,则未免开销太大。因此,OSPF 让每个路由器使用数据库描述分组和相邻路由器交换本数据库中已有的链路状态摘要信息。然后,路由器使用链路状态请求分组,向对方请求发送自己所缺少的某些链路状态项目的详细信息。通过一系列的这种分组交换,就建立了全网同步的链路数据库。图 4.19 给出了 OSPF 的基本操作,说明了两个路由器需要交换的各种类型的分组。

        在网络运行的过程中,只要一个路由器的链路状态发生变化,该路由器就要使用链路状态更新分组,用可靠的洪泛法向全网更新链路状态,其他路由器在收到更新分组后要发送确认。

        为了确保链路状态数据库与全网的状态保持一致,OSPF 还规定每隔一段时间(如 30 分钟)要刷新一次数据库中的链路状态。因为一个路由器的链路状态只涉及与相邻路由器的连通状态,与整个网络的规模并无直接关系,所以当互联网规模很大时,OSPF 要比 RIP 好得多。

4.4.5 边界网关协议

1. BGP 的基本特点

命题追踪 BGP 的作用(2013)

        边界网关协议(Border Gateway Protocol,BGP)是不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议。BGP 常用于互联网的网关之间。而 RIP 和 OSPF 都只能在一个 AS 内工作,若没有 BGP,则全世界数以万计的 AS 都是一个个没有联系的孤岛。

        内部网关协议主要是设法使分组在一个 AS 中尽可能有效地从源站传送到目的站。在一个 AS 内部也不需要考虑其他方面的策略。然而 BGP 使用的环境却不同,主要原因如下:
1)互联网的规模太大,使得 AS 之间路由选择非常困难,每个主干网路由表中的项目数都非常庞大。对于 AS 之间的路由选择,要寻找最佳路由是很不现实的。
2)AS 之间的路由选择必须考虑政治、安全或经济等有关因素。

命题追踪 封装 BGP 报文所采用的协议(2013、2017)

        BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。BGP 采用了路径向量路由选择协议,它与距离向量协议(如 RIP)和链路状态协议(如 OSPF)都有很大的区别。BGP 是应用层协议,它是基于 TCP 的。

命题追踪 两种 BGP 会话的定义(2024)

        两个相邻的 AS 通过各自的边界路由器直接相连,两个边界路由器通过端口号为 179 的半永久 TCP 连接(双方交换信息后仍保持连接状态)来交换 BGP 路由信息,AS 内部的路由器之间也有很多半永久 TCP 连接来传送 BGP 路由信息。每对 TCP 连接端点的两个路由器称为 BGP 对等方,用来发送 BGP 报文的 TCP 连接称为 BGP 会话。跨越两个 AS 的 BGP 会话称为外部 BGP(eBGP,external)会话,同一个 AS 中的两个路由器之间的 BGP 会话称为内部 BGP(iBGP,internal)会话。可见,BGP 不仅运行在 AS 之间,还运行在 AS 的内部。

2. BGP 路由

BGP 路由的一般格式如下:
                BGP 路由 = <CIDR 前缀,BGP 属性>

        当一个路由器通过 BGP 会话向对等方通告一条 BGP 路由时,最重要的两个 BGP 属性是 AS - PATH(自治系统路径)和 NEXT - HOP(下一跳)。

        AS - PATH 是通告的 BGP 路由所经过的自治系统。在 BGP 中,通常用一个全局唯一的自治系统号(ASN)来标识自治系统。BGP 路由每经过一个 AS,就将其 ASN 加入 AS - PATH。可见,BGP 路由必须指出通过哪些 AS,但不指出路由要通过哪些路由器。

        NEXT - HOP 是通告的 BGP 路由起点。

        下面通过一个简单的例子来加以说明。图 4.20 中 AS2 中的 R4 收到一条 BGP 路由 “X, AS1, R1”,表示 “从 R1 出发能到达 AS1 中的网络 X,即 R1→X”,R4 为了构造自己的转发表,需要对这条 BGP 路由的起点进行转换。由于路由的起点 R1 并不在 AS2 中,AS2 中的路由器都不能识别 R1,因此 R4 先把路由的起点添加上 R1 的对等方 R2,这样就变为 “R2→R1→X”。R2 在 AS2 中,因此 AS2 中的所有路由器都能把分组转发到 R2,再经过 R1,最终到达 X。

        然后,R4 利用内部网关协议,找到从 R4 到 R2 的最佳路由中的下一跳。在本例题中,查出下一跳是 R3,于是 R4 在转发表中增加到达网络 X 的下一跳是 R3 的表项 <X, R3>。这样,R4 只要收到目的网络为 X 的分组,就都按照路径 R4→R3→R2→R1→X,最后到达 X。类似地,R3 也在自己的转发表中增加到达网络 X 的表项 < X, R2>。每个路由器收到一条新的 BGP 路由通告后,必须经过上述步骤,才能在自己的转发表中增加到达 X 的 “下一跳” 的相应表目。

3. BGP 路由选择

        若从一个 AS 到另一个 AS 中的网络 X 只有一条 BGP 路由,则不存在选择 BGP 路由的问题,此时 BGP 路由是唯一的。然而,若到网络 X 有两条或更多的 BGP 路由可供选择,则应根据下列原则,并按下面给出的先后顺序,选择一条较好的 BGP 路由。

        1)首先选择本地偏好值最高的路由:在 BGP 路由的属性中有一个称为本地偏好的选项,一条路由的本地偏好可能由该路由器管理员设置,也可能是从同一 AS 中的另一个路由器学习得到的。若在几条 BGP 路由中找不出本地偏好值最高的路由(如它们的本地偏好值都相同),则采用下面的方法。

        2)选择 AS 跳数最少(AS - PATH 最短)的路由:以图 4.21 为例,从 AS1 到 AS5 共有两条 BGP 路由,根据该原则,应选择只通过 1 个 AS 的 BGP 路由,即 AS1→AS4→AS5。然而,由于 AS4 是个很大的 AS,分组在 AS4 中反而要经过更多次数的转发,可能要花费更长的时间。可见,AS 跳数最少的路由未必是最好的。

        3)使用热土豆路由选择算法

        命题追踪 热土豆路由选择算法的应用(2024)

        假设几条 BGP 路由的本地偏好值都相同,所经过的 AS 个数也相同,则利用前两种方法都无法选择最好的路由。这时,要进入 BGP 路由的 AS,执行热土豆路由选择算法。选择最靠近 NEXT - HOP 路由器的路由,让分组经过最少的转发次数离开本 AS,这时要使用内部网关协议(如 OSPF 或 RIP),对不同的路由器,得出的选择结果是不同的。

        4)选择 BGP 标识符的数值最小的路由:在 BGP 报文的首部有一个称为 BGP 标识符的字段,该字段作为运行 BGP 的路由器的唯一标识符。当以上三种方法都无法找出最好的 BGP 路由时,可使用 BGP 标识符来选择路由。

4. BGP 的四种报文

        当 BGP 刚运行时,BGP 会话的两端要相互交换整个 BGP 路由表,但以后只需在 BGP 发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的开销方面都有好处。

命题追踪 各种 BGP 报文的作用(2024)

BGP - 4 共使用四种报文:

1)Open(打开)报文:用来与相邻的另一个 BGP 对等方建立关系,使通信初始化。

2)Update(更新)报文:用来通知某一路由的信息,以及列出要撤销的多条路由。

3)Keepalive(保活)报文:用来周期性地证实邻站的连通性。

4)Notification(通知)报文:用来发送检测到的差错。

        Open 报文是两个路由器之间建立 TCP 连接后接着必须发送的报文,其作用是相互识别对方,协商一些协议参数。收到 Open 报文的路由器发回 Keepalive 报文表示接受建立 BGP 连接。Update 报文是 BGP 的核心,用于撤销它以前通知过的路由,或者宣布增加新的路由。撤销路由可以一次撤销多条,但增加新路由时,每个更新报文只能增加一条。

        BGP 连接一旦建立,两个对等方就要彼此周期性地交换 Keepalive 报文(如每隔 60 秒)。Keepalive 报文只有 19B,不会造成网络上太大的开销。

        RIP、OSPF 与 BGP 的比较如表 4.6 所示。

协议

RIP

OSPF

BGP

类型

内部

内部

外部

路由算法

距离向量

链路状态

路径向量

传递协议

UDP

IP

TCP

路径选择

跳数最少

代价最低

较好,非最佳

交换节点

和本节点相邻的路由器

网络中的所有路由器

和本节点相邻的路由器

交换内容

当前本路由器知道的全部信息,即自己的路由表

与本路由器相邻的所有路由器的链路状态

首次:整个路由表;非首次:有变化的部分

4.4.6 本节习题精选

一、单项选择题

01.下列关于动态路由选择和静态路由选择的主要区别的描述中,正确是( )。
A. 动态路由选择需要维护整个网络的拓扑结构信息,而静态路由选择只需要维护部分拓扑结构信息
B. 动态路由选择可随网络的通信量或拓扑变化而自适应地调整,而静态路由选择则需要手工去调整相关的路由信息
C. 动态路由选择简单且开销小,静态路由选择复杂且开销大
D. 动态路由选择使用路由表,静态路由选择不使用路由表

01.B
静态路由选择使用手动配置的路由信息,实现简单且开销小,需要维护整个网络的拓扑结构信息,但不能及时适应网络状态的变化。动态路由选择通过路由选择协议,自动发现并维护路由信息,能及时适应网络状态的变化,实现复杂且开销大。动态路由选择和静态路由选择都使用路由表。

02.下列关于路由算法的描述中,错误的是( )。
A. 静态路由有时也被称为非自适应的算法
B. 静态路由所使用的路由选择一旦启动就不能修改
C. 动态路由也称自适应算法,会根据网络的拓扑变化和流量变化改变路由决策
D. 动态路由算法需要实时获得网络的状态

02.B
静态路由也称非自适应算法,它不会估计流量和结构来调整其路由决策。但是,这并不说明路由选择是不能改变的,事实上用户可以随时配置路由表。而动态路由也称自适应算法,需要实时获取网络的状态,并根据网络的状态适时地改变路由决策。

03.下列关于链路状态协议的描述中,错误的是( )。
A. 仅相邻路由器需要交换各自的路由表
B. 全网络路由器的拓扑数据库是一致的
C. 采用洪泛技术更新链路变化信息
D. 具有快速收敛的优点

03.A
在链路状态算法中,每个路由器在自己的链路状态变化时,将链路状态信息用洪泛法发送给网络中的其他路由器。发送的链路状态信息包括该路由器的相邻路由器及所有相邻链路的状态。链路状态算法具有快速收敛的优点,它能在网络拓扑发生变化时,立即进行路由的重新计算,并及时向其他路由器发送最新的链路状态信息,使得各路由器的链路状态表能够尽量保持一致。

04.在链路状态路由算法中,每个路由器都得到网络的完整拓扑结构后,使用( )算法来找出它到其他路由器的路径长度。
A. Prim 最小生成树算法
B. Dijkstra 最短路径算法
C. Kruskal 最小生成树算法
D. 拓扑排序

04.B
在链路状态算法中,路由器通过交换每个节点到邻居节点的代价来构建一个完整的网络拓扑结构。然后,路由器使用 Dijkstra 最短路径算法来计算到所有节点的最短路径。

05.下列关于分层路由的描述中,错误的是( )。
A. 采用分层路由后,路由器被划分成区域
B. 每个路由器不仅知道如何将分组路由到自己区域的目标地址,还知道如何路由到其他区域
C. 采用分层路由后,可以将不同的网络连接起来
D. 对于大型网络,可能需要多级的分层路由来管理

05.B
采用分层路由后,路由器被划分为区域,每个路由器知道如何将分组路由到自己所在区域内的目标地址,但对于其他区域内的结构毫不知情。当不同的网络相互连接时,可将每个网络当作一个独立的区域,这样做的好处是一个网络中的路由器不必知道其他网络的拓扑结构。

06.以下关于自治系统的描述中,错误的是( )。
A. 自治系统划分区域的好处是,将利用洪泛法交换链路状态信息的范围局限在每个区域内,而不是整个自治系统
B. 采用分层划分区域的方法使交换信息的种类增多,同时也使 OSPF 协议更加简单
C. OSPF 协议将一个自治系统再划分为若干更小的范围,称为区域
D. 在一个区域内部的路由器只知道本区域的网络拓扑,而不知道其他区域的网络拓扑的情况

06.B
划分区域的好处是,将利用洪泛法交换链路状态信息的范围局限在每个区域内,而不是整个自治系统。因此,在一个区域内部的路由器只知道本区域的网络拓扑,而不知道其他区域的网络拓扑情况。采用分层次划分区域的方法虽然使交换信息的种类增多了,同时也使 OSPF 协议更加复杂了,但是,这样做却能使每个区域内部交换路由信息的通信量大大减少,进而使 OSPF 协议能够用于规模很大的自治系统中。

07.在计算机网络中,路由选择协议的功能不包括( )。
A. 交换网络状态或通路信息
B. 选择到达目的地的最佳路径
C. 更新路由表
D. 发现下一跳的物理地址

07.D
路由选择协议的功能通常包括:获取网络拓扑信息、构建路由表、在网络中更新路由信息、选择到达每个目的网络的最优路径、识别一个网络的无环通路等。发现下一跳的物理地址一般是通过其他方式(如 ARP)来实现的,不属于路由选择协议的功能。

08.用于域间路由的协议是( )。
A. RIP
B. BGP
C. OSPF
D. ARP

08.B
BGP(边界网关协议)是域间路由协议。RIP 和 OSPF 是域内路由协议,ARP 不是路由协议。

09.在 RIP 中,到某个网络的距离值为 16,其意义是( )。
A. 该网络不可达
B. 存在循环路由
C. 该网络为直接连接网络
D. 到达该网络要经过 15 次转发

09.A
RIP 规定的最大跳数为 15,16 表示网络不可达。

10.在 RIP 中,假设路由器 X 和路由器 K 是两个相邻的路由器,X 向 K 说:“我到目的网络 Y 的距离为 N”,则收到此信息的 K 就知道:“若将到网络 Y 的下一个路由器选为 X,则我到网络 Y 的距离为( )。”(假设 N 小于 15)
A. N
B. N - 1
C. 1
D. N + 1

10.D
RIP 规定,每经过一个路由器,距离(跳数)加 1。

11.以下关于 RIP 的描述中,错误的是( )。
A. RIP 是基于距离 - 向量路由选择算法的
B. RIP 要求内部路由器将它关于整个 AS 的路由信息发布出去
C. RIP 要求内部路由器向整个 AS 的路由器发布路由信息
D. RIP 要求内部路由器按照一定的时间间隔发布路由信息

11.C
RIP 规定一个路由器只向相邻路由器发布路由信息,而不像 OSPF 那样向整个域洪泛。

12.在 RIP 中,当路由器收到相邻路由器发来的路由更新信息时,若发现有更优的路由,则( )。
A. 直接更新自己的路由表
B. 向相邻路由器发送确认信息后再更新自己的路由表
C. 向所有相邻路由器发送确认信息后再更新自己的路由表
D. 不更新自己的路由表

12.A
在 RIP 中,当路由器收到相邻路由器发来的路由更新信息时,若发现有更优的路由(跳数更小的路由),则直接更新自己的路由表,并向其他相邻路由器广播自己的新路由。

13.对路由选择协议的一个要求是必须能够快速收敛,所谓 “路由收敛” 是指( )。
A. 路由器能把分组发送到预定的目标
B. 路由器处理分组的速度足够快
C. 网络设备的路由表与网络拓扑结构保持一致
D. 能把多个子网聚合成一个超网

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

14.下列关于 RIP 和 OSPF 协议的叙述中,错误的是( )。
A. RIP 和 OSPF 协议都是网络层协议
B. 在进行路由信息交换时,RIP 中的路由器仅向自己相邻的路由器发送信息,OSPF 协议中的路由器向本自治系统中的所有路由器发送信息
C. 在进行路由信息交换时,RIP 中的路由器发送的信息是整个路由表,OSPF 协议中的路由器发送的信息只是路由表的一部分

D. RIP 的路由器不知道全网的拓扑结构,OSPF 协议的任何一个路由器都知道自己所在区域的拓扑结构

14.A
RIP 是应用层协议,它使用 UDP 传送数据,OSPF 才是网络层协议。A 错误。

15. OSPF 协议使用( )分组来保持与其邻居的连接。
A. Hello
B. Keepalive
C. SPF(最短路径优先)
D. LSU(链路状态更新)

15.A
此题属于记忆性题目,OSPF 协议使用 Hello 分组来保持与其邻居的连接。

16. 以下关于 OSPF 协议的描述中,最准确的是( )。
A. OSPF 协议根据链路状态法计算最佳路由
B. OSPF 协议是用于自治系统之间的外部网关协议
C. OSPF 协议不能根据网络通信情况动态地改变路由
D. OSPF 协议只适用于小型网络

16.A
OSPF 协议是一种用于自治系统内的路由协议,B 错误。它是一种基于链路状态路由选择算法的协议,能适用大型全局 IP 网络的扩展,支持可变长子网掩码,所以 OSPF 协议可用于管理一个受限地址域的中大型网络,D 错误。OSPF 协议维护一张它所连接的所有链路状态信息的邻居表和拓扑数据库,使用多播链路状态更新报文实现路由更新,并且只有当网络发生变化时才传送链路状态更新报文,C 错误。OSPF 协议不传送整个路由表,而传送受影响的路由更新报文。

17. 在 OSPF 协议中,划分区域的最主要目的是( )。
A. 减少路由表的大小
B. 减少洪泛法交换的通信量
C. 增加路由选择的灵活性
D. 增加网络的安全性

17.B
        链路状态算法让每个路由器都知道整个自治系统的完整拓扑,从而计算出最短路径。若不划分区域,则会导致链路状态数据包的数量和大小非常大,占用大量的网络带宽资源,影响网络效率和稳定性。划分区域后,每个路由器只需要知道自己所在区域内的完整拓扑,把交换链路状态信息的范围局限在每个区域,这样就大大减少了链路状态数据包的数量和大小。

18. 下列关于 OSPF 协议特征的描述中,错误的是( )。
A. OSPF 协议将一个自治域划分成若干域,有一种特殊的域称为主干区域
B. 域之间通过区域边界路由器互连
C. 在自治系统中有 4 类路由器:区域内部路由器、主干路由器、区域边界路由器和自治域边界路由器
D. 主干路由器不能兼作区域边界路由器

18.D
        主干区域中,用于连接主干区域和其他下层区域的路由器称为区域边界路由器。只要是在主干区域中的路由器,就都称为主干路由器,因此主干路由器可以兼作区域边界路由器。

19. BGP 交换的网络可达性信息是( )。
A. 到达某个网络所经过的路径
B. 到达某个网络的下一跳路由器
C. 到达某个网络的链路状态摘要信息
D. 到达某个网络的最短距离及下一跳路由器

19.A
        因为 BGP 仅力求寻找一条能够到达目的网络且较好的路由(不能兜圈子),而并非寻找一条最佳路由,所以选项 D 错误。BGP 交换的路由信息是到达某个目的网络所要经过的各个自治系统序列而不仅仅是下一跳,因此选项 A 正确。

20. RIP、OSPF 协议、BGP 的路由选择过程分别使用( )。
A. 路径向量协议、链路状态协议、距离向量协议
B. 距离向量协议、路径向量协议、链路状态协议
C. 路径向量协议、距离向量协议、链路状态协议
D. 距离向量协议、链路状态协议、路径向量协议

20.D
        RIP 是一种分布式的基于距离向量的路由选择协议,它使用跳数来度量距离。RIP 选择的路径不一定是时间最短的,但一定是具有最小距离(最少跳数)的路径。
OSPF 协议使用分布式的链路状态协议,通过与相邻路由器频繁交流链路状态信息,来建立全网的拓扑结构图,然后使用 Dijkstra 算法计算从自己到各目的网络的最优路径。
因为 BGP 仅力求寻找一条能够到达目的网络且较好的路由(不能兜圈子),而并非寻找一条最佳路由,所以它采用的是路径向量路由选择协议。在 BGP 中,每个自治系统选出一个 BGP 发言人,这些发言人通过相互交换自己的路径向量(网络可达性信息)后,就可找出到达各自治系统的较好路由。

21. 从数据封装的角度看,下列( )协议属于 TCP/IP 模型的应用层。
I. OSPF
II. RIP
III. BGP
IV. ICMP
A. I、II
B. II、III
C. I、IV
D. I、II、III、IV

21.B
RIP 和 BGP 属于应用层,OSPF 和 ICMP 属于网络层。

22. 考虑如下图所示的子网,该子网使用了距离向量算法,下面的向量刚刚到达路由器 C:
来自 B 的向量为 (5, 0, 8, 12, 6, 2);来自 D 的向量为 (16, 12, 6, 0, 9, 10);来自 E 的向量为 (7, 6, 3, 9, 0, 4)。经过测量,C 到 B、D 和 E 的延迟分别为 6、3 和 5,则 C 到达所有节点的最短路径是( )。

A. (5, 6, 0, 9, 6, 2)
B. (11, 6, 0, 3, 5, 8)
C. (5, 11, 0, 12, 8, 9)
D. (11, 8, 0, 7, 4, 9)

22.B
        距离 - 向量路由算法要求每个路由器维护一张路由表,该表给出了到达每个目的地址的已知最佳距离(最小代价)和下一步的转发地址。算法要求每个路由器定期与所有相邻路由器交换整个路由表,并更新自己的路由表项。注意从邻接节点接收到路由表不能直接进行比较,而要加上相邻节点传输消耗后再进行计算。C 到 B 的距离是 6,于是从 C 开始通过 B 到达各节点的最短距离向量是 (11, 6, 14, 18, 12, 8)。同理,通过 D 和 E 的最短距离向量分别是 (19, 15, 9, 3, 12, 13) 和 (12, 11, 8, 14, 5, 9)。于是,C 到所有节点的最短路径应该是 (11, 6, 0, 3, 5, 8)。

23. 某分组交换网络的拓扑如下图所示,各路由器使用 OSPF 协议且均已收敛,各链路的度量已在图中标注。假设各段链路的带宽均为 100Mb/s,分组长度为 1000B,其中分组的首部长度为 20B。若主机 A 向主机 B 发送一个大小为 980000B 的文件,忽略分组的传播时延和封装 / 解封时间,从 A 发送开始到 B 接收完毕为止,需要的时间是( )。
A. 80.08ms
B. 80.16ms
C. 80.32ms
D. 80.64ms

23.C
        根据 OSPF 算法,从 A 到 B 转发经过的链路代价依次为 2、3、1、1、2,一共经过 4 个路由器。分组长度为 1000B,首部长度为 20B,数据长度为 980B,所以共有 980000/980 = 1000 个分组,每次存储转发时延为 1000B÷100Mb/s = 0.08ms,第一个分组从 A 到 B 的时间为 0.08×5 = 0.4ms,剩下的 999 个分组每经过 0.08ms 就到达一个,所以总时间为 0.4 + 0.08×999 = 80.32ms。

24.【2010 统考真题】某自治系统内采用 RIP,若该自治系统内的路由器 R1 收到其邻居路由器 R2 的距离向量,距离向量中包含信息 <Net1, 16>,则能得出的结论是( )。
A. R2 可以经过 R1 到达 Net1,跳数为 17
B. R2 可以到达 Net1,跳数为 16
C. R1 可以经过 R2 到达 Net1,跳数为 17
D. R1 不能经过 R2 到达 Net1

24.D
        R1 在收到信息并更新路由表后,若需要经过 R2 到达 Net1,则其跳数为 17,因为距离为 16 表示不可达,所以 R1 不能经过 R2 到达 Net1,R2 也不可能到达 Net1。选项 B、C 错误,选项 D 正确。而题目中并未给出 R1 向 R2 发送的信息,因此选项 A 也不正确。

25.【2016 统考真题】假设下图中的 R1、R2、R3 采用 RIP 交换路由信息,且均已收敛。若 R3 检测到网络 201.1.2.0/25 不可达,并向 R2 通告一次新的距离向量,则 R2 更新后,其到达该网络的距离是( )。
A. 2
B. 3
C. 16
D. 17

25.B
        初始收敛时,R3 到网络(201.1.2.0/25)的距离为 1,R2 到网络的距离为 2,R1 到网络的距离为 2。当 R3 检测到网络不可达时,因为 R3 存有其他邻居到网络的路由信息,所以它利用所有邻居的距离向量,用 Bellman - Ford 公式更新自己的距离向量(易错点:误以为 R3 检测到网络不可达时,就把其到网络的距离设置为 16),R3 重新计算到网络的距离 = min {16, R1 到网络的距离 + 1, R2 到网络的距离 + 1}={16, 2 + 1, 2 + 1}=3。然后,R3 向其所有邻居发送更新报文,“告诉它到网络的距离为 3”。R2(及 R1)收到 R3 发来的更新报文后,会利用它保存的所有邻居的距离向量,重新计算自己到网络的距离 = min {R1 到网络的距离 + 1, R3 到网络的距离 + 1}={2 + 1, 3 + 1}=3,因此答案为 3。与此同时,R1 也重新计算自己到网络的距离 = min {R2 到网络的距离 + 1, R3 到网络的距离 + 1}={2 + 1, 3 + 1}=3。如此反复,直至重新收敛。因为 RIP 的特点 “坏消息传得慢”,所以一旦网络出现故障,就要经过较长时间才能将故障消息传送到所有路由器。

26.【2017 统考真题】直接封装 RIP、OSPF、BGP 报文的协议分别是( )。
A. TCP、UDP、IP
B. TCP、IP、UDP
C. UDP、TCP、IP
D. UDP、IP、TCP

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

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

A. 9, 10, 12, 6
B. 9, 10, 28, 20
C. 9, 20, 12, 20
D. 9, 20, 28, 20

27.D
        根据距离向量路由算法,E 收到相邻路由器的距离向量后,更新它的路由表:
① 当原路由表中没有目的网络时,把该项目添加到路由表中。
② 发来的路由信息中有一条到达某个目的网络的路由,该路由与当前使用的路由相比,有较短的距离,就用经过发送路由信息的节点的新路由替换。
分析题意可知,E 与邻居路由器 A、B、C 和 D 之间的直接链路距离分别是 8, 10, 12 和 6。到达 Net1~Net4 没有直接链路,需要通过邻居路由器。从上述算法可知,E 到达目的网络一定是经过 A、B、C 和 D 中距离最小的。根据题中所给的距离信息,计算 E 经邻居路由器到达目的网络 Net1~Net4 的距离,如下表所示,选择到达每个目的网络距离的最短值。

目的网络

经过 A 需要的距离

经过 B 需要的距离

经过 C 需要的距离

经过 D 需要的距离

Net1

9

33

32

28

Net2

20

45

42

34

Net3

32

28

28

42

Net4

44

40

20

30

二、综合应用题

01.RIP 使用 UDP,OSPF 使用 IP,而 BGP 使用 TCP。这样做有何优点?为什么 RIP 周期性地和邻站交换路由信息而 BGP 却不这样做?

01.【解答】
        RIP 处于 UDP 的上层,RIP 所接收的路由信息都封装在 UDP 的数据报中;OSPF 的位置位于网络层,因为要交换的信息量较大,所以应使报文的长度尽量短,因此采用 IP;BGP 要在不同的自治系统之间交换路由信息,因为网络环境复杂,需要保证可靠的传输,所以选择 TCP。

        内部网关协议主要设法使数据报在一个自治系统中尽可能有效地从源站传送到目的站,在一个自治系统内部并不需要考虑其他方面的策略,然而 BGP 使用的环境却不同。主要有以下三个原因:第一,互联网规模太大,使得自治系统之间的路由选择非常困难;第二,对于自治系统之间的路由选择,要寻找最佳路由是不现实的;第三,自治系统之间的路由选择必须考虑有关策略。因为上述情况,BGP 只能力求寻找一条能够到达目的网络且较好的路由,而并非寻找一条最佳路由,所以 BGP 不需要像 RIP 那样周期性地和邻站交换路由信息。

02.在某个使用 RIP 的网络中,B 和 C 互为相邻路由器,其中表 1 为 B 的原路由表,表 2 为 C 广播的距离向量报文 <目的网络,距离>。

1)试求路由器 B 更新后的路由表并说明主要步骤。
2)当路由器 B 收到发往网络 N2 的 IP 分组时,应该做何处理?

02. 【解答】

1)根据 RIP 算法,首先将从 C 收到的路由信息的下一跳改为 C,并且将每个距离都加 1,得到下表。

目的网络

距离

下一跳

N2

16

C

N3

3

C

N4

9

C

N8

3

C

N7

5

C

将题中表 2 与原路由表进行比较,根据更新路由表项的规则:①若目的网络相同,且下一跳路由器相同,则直接更新;②若是新的目的网络地址,则增加表项;③若目的网络相同,且下一跳路由器不同,而距离更短,则更新;④否则,无操作。更新后的路由表见下表。

目的网络

距离

下一跳路由器

目的网络

距离

下一跳路由器

N1

7

A

N6

8

F

N2

16

C

N7

5

C

N3

3

C

N8

3

C

N4

9

C

N9

4

D

2)在更新后的路由表中,路由器 B 到 N2 的距离为 16(网络拓扑结构变化导致),这意味着 N2 网络不可达,这时路由器 B 应该丢弃该 IP 分组并向源主机报告目的不可达。

03. 互联网中的一个自治系统的内部结构如下图所示。路由选择协议采用 OSPF 协议时,计算 R6 的关于网络 N1、N2、N3、N4 的路由表。

注:端口处的数字是该路由器向该链路转发分组的代价。

03. 【解答】

        首先,要明白路由器端口旁的数字的含义 —— 路由器向该链路转发分组的代价,即便是同一段链路的两个不同端点的路由器,转发分组的代价也可能不同。其次,要明白一个网络所连接的几个路由器之间转发分组并不需要经过任何其他中间路由器。例如,R6 到网络 N1 经过的路径和代价计算如下:R6 到 R3 经过的代价是 6,R3 到 R1 经过的代价是 1,R1 到网络 N1 经过的代价是 3,所以 R6 到网络 N1 经过的代价是 10。根据 Dijkstra 最短路径算法,加入节点的次序之一为(R6, R5, R3, N3, R4, R1, R2, N4, N1, N2),可以得到 R6 的路由表如下表所示。

目的网络

距离

下一跳路由器

目的网络

距离

下一跳路由器

N1

10

R3

N3

7

R3

N2

10

R3

N4

8

R3

04. 【2013 统考真题】假设 Internet 的两个自治系统构成的网络如下图所示,自治系统 AS1 由路由器 R1 连接两个子网构成;自治系统 AS2 由路由器 R2、R3 互连并连接 3 个子网构成。各子网地址、R2 的接口名、R1 与 R3 的部分接口 IP 地址如下图所示。

请回答下列问题:
1)假设路由表结构如下表所示。利用路由聚合技术,给出 R2 的路由表,要求包括到达图中所有子网的路由,且路由表中的路由项尽可能少。

目的网络

下一跳

接口

2)若 R2 收到一个目的 IP 地址为 194.17.20.200 的 IP 分组,R2 会通过哪个接口转发该 IP 分组?
3)R1 与 R2 之间利用哪个路由协议交换路由信息?该路由协议的报文被封装到哪个协议的分组中进行传输?

04. 【解答】

1)要求 R2 的路由表能到达图中的所有子网,且路由项尽可能少,则应对每个路由接口的子网进行聚合。在 AS1 中,子网 153.14.5.0/25 和子网 153.14.5.128/25 可聚合为子网 153.14.5.0/24;在 AS2 中,子网 194.17.20.0/25 和子网 194.17.21.0/24 可聚合为子网 194.17.20.0/23;子网 194.17.20.128/25 单独连接到 R2 的接口 E0。
于是可以得到 R2 的路由表如下:

目的网络

下一跳

接口

153.14.5.0/24

153.14.3.2

S0

194.17.20.0/23

194.17.24.2

S1

194.17.20.128/25

E0

2)该 IP 分组的目的 IP 地址 194.17.20.200 与路由表中 194.17.20.0/23 和 194.17.20.128/25 两个路由表项均匹配,根据最长匹配原则,R2 将通过 E0 接口转发该 IP 分组。
3)R1 和 R2 属于不同的自治系统,因此应使用边界网关协议(BGP 或 BGP4)交换路由信息;BGP 是应用层协议,它的报文被封装到 TCP 段中进行传输。

05. 【2014 统考真题】某网络中的路由器运行 OSPF 路由协议,下表是路由器 R1 维护的主要链路状态信息(LSI),下图是根据该表及 R1 的接口名构造的网络拓扑。

请回答下列问题:
1)假设路由表结构如下表所示,给出图中 R1 的路由表,要求包括到达图中子网 192.1.x.x 的路由,且路由表中的路由项尽可能少。

目的网络

下一跳

接口

2)当主机 192.1.1.130 向主机 192.1.7.211 发送一个 TTL = 64 的 IP 分组时,R1 通过哪个接口转发该 IP 分组?主机 192.1.7.211 收到的 IP 分组的 TTL 是多少?
3)若 R1 增加一条 Metric 为 10 的链路连接 Internet,则表中 R1 的 LSI 需要增加哪些信息?

05. 【解答】

1)因为题目要求路由表中的路由项尽可能少,所以对从同一接口转发的目的网络进行路由聚合,可以求出子网 192.1.6.0/24 和 192.1.7.0/24 都是通过接口 L0 转发,因此可将这两个子网聚合为子网 192.1.6.0/23,其他子网照常,可得到路由表如下:

目的网络

下一跳

接口

192.1.1.0/24

E0

192.1.6.0/23

10.1.1.2

L0

192.1.5.0/24

10.1.1.10

L1

2)通过查路由表可知:R1 通过 L0 接口转发该 IP 分组。因为该分组要经过 3 个路由器(R1、R2、R4),所以主机 192.1.7.211 收到的 IP 分组的 TTL 是 64 - 3 = 61。
3)互联网(Internet)包括无数的网络集合,不可能在路由表项中一一列出,因此 R1 到互联网的路由只能采用默认路由的方式,默认路由的网络前缀为 0.0.0.0/0。因此,R1 的 LSI 需要增加一条特殊的直连网络,网络前缀 Prefix 为 “0.0.0.0/0”,Metric 为 10。

06. 【2024 统考真题】网络空间是继陆海空天之后的 “第五疆域”,网络技术是网络疆域建设与治理的基础。路由算法与协议是网络核心技术之一,对其准确认知、合理选择与应用,对于网络建设十分重要。假设有互联网中的 4 个自治系统互连拓扑示意图如下图所示。其中,AS1 运行内部网关协议 RIP;AS3 规模较小,自治系统内任意两个主机间通信,经过路由器的数量不超过 15 个;AS4 规模较大,自治系统内任意两个主机间通信,经过路由器的数量可能超过 20 个。请回答下列问题。

1)若仅有 RIP 和 OSPF 内部网关协议供选择,则 AS4 应该选择哪个协议?
2)若 AS3 中的某主机向本自治系统内的另一主机发送 1 个 IP 分组,为确保该 IP 分组能够被正常接收,则该 IP 分组的初始 TTL 值应该至少设置为多少?
3)假设 AS1 中的路由器同一时刻启动,启动后立即构建并交换初始距离向量,之后每隔 30s 交换一次最新的距离向量,则从交换初始距离向量时刻算起,R11~R16 路由器均获得到达网络 210.2.3.0/24 的正确路由由至少需要多长时间?均获得到达网络 210.2.4.0/24 的正确路由由至少需要多长时间?
4)R44 向 R13 通告到达网络 136.5.16.0/20 路由时,由 BGP 哪类会话完成?通过哪个 BGP 报文通告?R13 通过 BGP 的哪类会话将该网络可达性信息通告给 R14 和 R15?
5)若 R14 和 R15 均收到分别由 R11、R12、R13 通告的到达网络 136.5.16.0/20 的可达性信息如下。
        目的网络:136.5.16.0/20,AS 路径:AS2 AS8 AS19,下一跳:R11
        目的网络:136.5.16.0/20,AS 路径:AS3 AS7 AS11 AS19,下一跳:R12
        目的网络:136.5.16.0/20,AS 路径:AS4 AS10 AS19,下一跳:R13
     则在无策略约束情况下,R14 和 R15 更新路由表后,各自路由表中到达网络         136.5.16.0/20 路由的下一跳分别是什么(用路由器名称表示)?

06. 【解答】

        1)RIP 限制了网络的规模,它能支持的最大距离为 15;而且 RIP 路由器之间交换的信息是完整的路由表,随着网络规模的扩大,开销也很大。因此 AS4 应该选择 OSPF 协议。
        2)每经过一个路由器,TTL 值都要减 1,当 TTL 值减为 0 时,就丢弃这个 IP 分组。为保证 IP 分组能被正常接收,需要考虑该 IP 分组可能经过路由器的最大数量,所以初始 TTL 值应至少设置为 16。这样,经过 15 个路由器后,TTL 值恰好变为 1,不会被丢弃。
        3)对于网络 210.2.3.0/24,启动后立即构建距离向量,R14 直连网络 210.2.3.0/24,首先更新 R14 的路由表,然后开始第一次交换初始距离向量,R14 分别与 R11 和 R15 交换路由信息;至此,R14、R11、R15 均获得了到达网络 210.2.3.0/24 的正确路由,如图 1 所示。经过 30s 后,R11 和 R12 交换路由信息,R15 分别与 R13 和 R16 交换路由信息;至此,R11~R16 路由器均获得了到达网络 210.2.3.0/24 的正确路由,如图 2 所示。因此,R11~R16 路由器均获得到达网络 210.2.3.0/24 的正确路由至少需要 30s。

对于网络 210.2.4.0/24,启动后立即构建距离向量,R16 直连网络 210.2.4.0/24,首先更新 R16 的路由表,然后开始第一次交换初始距离向量,R16 与 R15 交换路由信息;至此,R16、R15 均获得了到达网络 210.2.4.0/24 的正确路由,如图 3 所示。经过 30s 后,R15 分别与 R13 和 R14 交换路由信息;至此,R16、R15、R14、R13 均获得了到达网络 210.2.4.0/24 的正确路由,如图 4 所示。又经过 30s 后,R14 与 R11 交换路由信息,R13 与 R12 交换路由信息;至此,R11~R16 路由器均获得了到达网络 210.2.4.0/24 的正确路由,如图 5 所示。因此,均获得到达网络 210.2.4.0/24 的正确路由至少需要 60s。

        4)R44 向 R13 通告到达网络 136.5.16.0/20 路由属于自治系统之间的 BGP 会话,由 BGP 外部会话(eBGP)完成。通过 UPDATE 报文通告某一路由的信息。R13 向 R14 和 R15 通告网络可达性信息属于自治系统内部的 BGP 会话,由 BGP 内部会话(iBGP)完成。
        5)根据 BGP 路由算法,没有任何策略约束不考虑 “本地偏好值”,因此应选择经过 AS 跳数最少的路由。从 R12 到达目的网络所经过的 AS 跳数是 4,从 R11、R13 到达目的网络所经过的 AS 跳数都是 3(有相同的,无法选择)。因此,只能采用热土豆路由选择算法,其思想是让分组经过最少的转发次数离开本自治系统,这时要使用内部网关协议,AS1 采用的是 RIP,因此 R14 选择离它最近的 R11 转发分组。类似地,R15 选择离它最近的 R13 转发分组。于是,R14 路由表中到达网络 136.5.16.0/20 路由的下一跳是 R11,R15 路由表中到达网络 136.5.16.0/20 路由的下一跳是 R13。

4.5 IP 多播

4.5.1 多播的概念

        多播(也称组播)是让源主机一次发送的单个分组可以抵达用一个组地址标识的若干目的主机,即一对多的通信。在互联网上进行的多播,称为 IP 多播。
        与单播相比,在一对多的通信中,多播可大大节约网络资源。假设视频服务器向 90 台主机传送同样的视频节目,单播与多播的比较如图 4.22 所示。多播时仅发送一份数据,并且只需发送一次,只有在传送路径出现分岔时才将分组复制后继续转发,因此大大减轻了发送者的负担和网络的负载。多播需要路由器的支持才能实现,能够运行多播协议的路由器称为多播路由器。

4.5.2 IP 多播地址

        多播数据报的源地址是源主机的 IP 地址,目的地址是 IP 多播地址。IP 多播地址就是 IPv4 中的 D 类地址。D 类地址的前四位是 1110,因此 D 类地址范围是 224.0.0.0~239.255.255.255。每个 D 类 IP 地址标志一个多播组,一台主机可以随时加入或离开一个多播组。
        多播数据报和一般的 IP 数据报的区别是,前者使用 D 类 IP 地址作为目的地址,并且首部中的协议字段值是 2,表明使用 IGMP。需要注意的是:
        1)多播数据报也是 “尽最大努力交付”,不提供可靠交付。
        2)多播地址只能用于目的地址,而不能用于源地址。
        3)对多播数据报不产生 ICMP 差错报文。

        IP 多播可以分为两种:①只在本局域网上进行硬件多播;②在互联网的范围内进行多播。目前大部分主机都是通过局域网接入互联网的。因此,在互联网上进行多播的最后阶段,还是要把多播数据报在局域网上用硬件多播交付给多播组的所有成员[见图 4.22 (b)]。
        多播机制仅应用于 UDP,它能将报文同时发送给多个接收者。而 TCP 是一个面向连接的协议,它意味着分别运行在两台主机的进程之间存在一条连接,因此会一对一地发送。

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

        因为局域网支持硬件多播,所以只要把 IP 多播地址映射成多播 MAC 地址,即可将 IP 多播数据报封装在局域网的 MAC 帧中,而 MAC 帧首部的目的 MAC 地址字段就设置为由 IP 多播地址映射成的多播 MAC 地址。这样,就很方便地利用硬件多播实现了局域网内的 IP 多播。
        IANA 拥有的以太网多播地址的范围是从 01-00-5E-00-00-00 到 01-00-5E-7F-FF-FF。在这些地址中,只有后 23 位可用作多播。但 D 类 IP 地址可供分配的有 28 位,即这 28 位中的前 5 位无法映射到以太网多播地址,因此两者是多对一的映射关系,如图 4.23 所示。
        例如,IP 多播地址 224.128.64.32(E0-80-40-20)和另一个 IP 多播地址 224.0.64.32(E0-00-40-20)转换成以太网的多播地址都是 01-00-5E-00-40-20。因此收到多播数据报的主机,还要在 IP 层利用软件进行过滤,把不是本主机要接收的数据报丢弃。

4.5.4 IGMP 与多播路由协议

        路由器要获得多播组的成员信息,需要利用网际组管理协议(Internet Group Management Protocol,IGMP)。连接到局域网上的多播路由器还必须和互联网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有组成员,这就需要使用多播路由选择协议。
        IGMP 是让连接到本地局域网上的多播路由器,知道本局域网上是否有主机参加或退出了某个多播组。IGMP 并不是在互联网范围内对所有多播组成员进行管理的协议。IGMP 不知道 IP 多播组包含的成员数,也不知道这些成员分布在哪些网络上。
        IGMP 报文被封装在 IP 数据报中传送,但它也向 IP 提供服务。因此不把 IGMP 视为一个单独的协议,而视为整个网际协议 IP 的一个组成部分。IGMP 的工作可分为两个阶段。

        第一阶段:当某台主机加入新的多播组时,该主机应向多播组的多播地址发送一个 IGMP 报文,声明自己要成为该组的成员。本地的多播路由器收到 IGMP 报文后,还要利用多播路由选择协议,把这种组成员关系转发给互联网上的其他多播路由器。

        第二阶段:组成员关系是动态的。本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否仍然是组的成员。只要对某个组有一台主机响应,多播路由器就认为这个组是活跃的。但一个组在经过几次探询后仍然没有一台主机响应,多播路由器就认为本网络上的主机都已离开了这个组,因此就不再把这个组的成员关系转发给其他的多播路由器。

        多播路由选择实际上就是要找出以源主机为根节点的多播转发树,其中每个分组在每条链路上只传送一次(在多播转发树上的路由器不会收到重复的多播数据报)。不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树。

4.5.5 本节习题精选

一、单项选择题
01. 下列关于多播概念的描述中,错误的是( )。
A. 在单播路由选择中,路由器只能从它的一个接口转发收到的分组
B. 在多播路由选择中,路由器可以从它的多个接口转发收到的分组
C. 用多个单播仿真一个多播时需要更多的带宽
D. 用多个单播仿真一个多播时时延基本上是相同的

01. D
多个单播可以仿真多播,但是一个多播所需的带宽要小于多个单播带宽之和;用多个单播仿真一个多播时,路由器的时延将很大,而处理一个多播分组的时延是很小的。

02. 在设计多播路由时,为了避免路由环路,( )。
A. 采用了水平分割技术
B. 构造多播转发树
C. 采用了 IGMP
D. 通过生存时间(TTL)字段

02. B
因为树具有不存在环路的特性,所以构造一个多播转发树,通过该转发树既能将多播分组传送到组内的每台主机,又能避免环路[见图 4.22 (b)]。水平分割用于避免距离 - 向量路由算法中的无穷计数问题。TTL 字段用于防止 IP 分组因为环路而在网络中无限循环。

03. 以太网多播 IP 地址 224.215.145.230 应该映射到的多播 MAC 地址是( )。
A. 01-00-5E-57-91-E6
B. 01-00-5E-D7-91-E6
C. 01-00-5E-5B-91-E6
D. 01-00-5E-55-91-E6

03. A
        以太网多播地址块的范围是 01-00-5E-00-00-00~01-00-5E-7F-FF-FF,而且在每个地址中,只有后 23 位可用多播。这样,只能和 D 类 IP 地址中的后 23 位有一一对应关系。D 类 IP 地址可供分配的有 28 位,可见这 28 位中的前 5 位不能用来构成以太网硬件地址。215 的二进制为 11010111,其中,在映射过程中最高位为 0,因此 215.145.230 映射的二进制为 01010111.10010001. 11100110,对应的十六进制数是 57-91-E6。

04. 在下列 4 个地址中,( )只能用于 IP 数据报的目的地址而不能用于源地址。
A. 11.255.255.100
B. 192.168.1.100
C. 228.1.1.100
D. 0.0.0.0

04. C
        选项 A 是一个 A 类地址,既可用于目的地址,又可用于源地址。选项 B 是一个私有地址,既可用于目的地址,又可用于源地址。选项 D 表示本网络上的本主机,只能用于源地址。选项 C 是一个多播地址,多播地址的范围是 224.0.0.0~239.255.255.255,只能用于目的地址。

二、综合应用题
01. 互联网的多播是怎样实现的?为什么互联网上的多播比以太网上的多播复杂得多?

01. 【解答】
互联网的多播是靠路由器来实现的,这些路由器必须增加一些能够识别多播的软件。能够运行多播协议的路由器可以是一个单独的路由器,也可以是运行多播软件的普通路由器。互联网上的多播比以太网上的多播复杂得多,因为以太网本身支持广播和多播,而互联网上当前的路由器和许多物理网络都不支持广播和多播。

4.6 移动 IP

4.6.1 移动 IP 的概念

        移动 IP 技术是指移动站以固定的 IP 地址实现跨越不同网络的漫游功能,并保证基于 IP 的网络权限在漫游过程中不发生任何改变。移动 IP 的目标是把分组自动地投递给移动站。一个移动站是把其连接点从一个网络或子网改变到另一个网络或子网的主机。
移动 IP 定义了三种功能实体:移动节点、本地代理(也称归属代理)和外地代理。

        1)移动节点:具有永久 IP 地址的移动主机。

        2)本地代理:通常就是连接在归属网络(原始连接到的网络)上的路由器。

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

        值得注意的是,某用户将笔记本关机后从家里带到办公室重新上网,在办公室能很方便地通过 DHCP 自动获取新的 IP 地址。虽然笔记本移动了,更换了地点及所接入的网络,但是,这并不是移动 IP。但是,若我们需要在移动中进行 TCP 传输,则在移动站漫游时,应一直保持这个 TCP 连接,否则移动站的 TCP 连接就会断断续续。可见,若要使移动站在移动中的 TCP 连接不中断,就必须使笔记本的 IP 地址在移动中保持不变。这就是移动 IP 要研究的问题。

4.6.2 移动 IP 通信过程

        用一个通俗的例子来描述移动 IP 的通信原理。例如,在以前科技不那么发达的年代,本科毕业时都将走向各自的工作岗位。因为事先并不知道自己未来的准确通信地址,所以怎样继续和同学们保持联系呢?实际上也很简单。彼此留下各自的家庭地址(永久地址)。毕业后若要和某同学联系,只要写信寄到该同学的永久地址,再请其家长把信件转交即可。

        在移动 IP 中,每个移动站都有一个原始地址,即永久地址(或归属地址),移动站原始连接的网络称为归属网络。永久地址和归属网络的关联是不变的。在图 4.24 中,移动站 A 的永久地址是 131.8.6.7/16,而其归属网络是 131.8.0.0/16。归属代理通常是连接到归属网络上的路由器,然而它实现的代理功能是在应用层完成的。当移动站移动到另一地点,所接入的外地网络也称被访网络。在图 4.24 中,移动站 A 被移动到被访网络 15.0.0.8。被访网络中使用的代理称为外地代理,它通常是连接在被访网络上的路由器。外地代理有两个重要功能:①要为移动站创建一个临时地址,称为转交地址。在图 4.24 中,移动站 A 的转交地址是 15.5.6.7/8。转交地址的网络号显然和被访网络一致。②及时把移动站的转交地址告诉其归属代理。

图4.22 移动IP的基本通信过程

        请注意两点:转交地址是供移动站、归属代理及外地代理使用的,各种应用程序都不会使用。外地代理要向连接在被访网络上的移动站发送 IP 分组时,直接使用移动站的 MAC 地址。

        在图 4.24 中,通信者 B 要和移动站 A 进行通信。B 并不知道 A 在什么地方,但 B 使用 A 的永久地址作为发送的 IP 分组中的目的地址,移动 IP 的基本通信流程如下:
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 向归属代理注销转交地址。

        为了支持移动性,在网络层中还应增加一些新功能:①移动站到外地代理的登记协议;②外地代理到归属代理的登记协议;③归属代理数据报封装协议;④外地代理拆封协议。

4.6.3 本节习题精选

单项选择题
01. 以下关于移动 IP 工作原理的描述中,错误的是( )。
A. 移动 IP 的基本工作过程可以分为代理发现、注册、分组路由与注销 4 个阶段
B. 节点在使用移动 IP 进行通信时,归属代理和外部代理之间需要建立一条隧道
C. 移动节点到达新的网络后,通过注册过程把自己新的可达信息通知外部代理
D. 移动 IP 的分组路由可以分为单播、广播与多播

01. C
        选项 C 向归属代理通知移动节点的新可达信息(转交地址)。这样,归属代理就可将发往移动节点的分组通过隧道转到转交地址(外部代理),再由外部代理交付给移动节点。


02. 移动 IP 为移动主机设置了两个 IP 地址:归属地址和转交地址,( )。
A. 这两个地址都是固定的
B. 这两个地址随主机的移动而动态改变
C. 归属地址固定,转交地址动态改变
D. 归属地址动态改变,转交地址固定

02. C
        移动主机在原始本地网时,获得的是主地址,当它移动到一个外地网络中时,需获得一个新的临时辅地址,主地址保持不变;当它移动到另一个外地网络或返回本地网络时,辅地址改变或撤销,而主地址仍然保持不变。选项 C 正确。


03. 若一台主机的 IP 地址为 160.80.40.20/16,则当它移动到另一个不属于 160.80/16 子网的网络时,它将( )。(能否通过被访网络的路由器直接发送 / 接收数据报)
A. 可以直接接收和直接发送数据报,没有任何影响
B. 既不可以直接接收数据报,又不可以直接发送数据报
C. 不可以直接发送数据报,但可以直接接收数据报
D. 可以直接发送数据报,但不可以直接接收数据报
03. D
        当其他主机向该主机发送数据报时,使用永久地址 160.80.40.20/16 作为数据报的目的地址,因此会发往该主机的归属代理,归属代理知道该主机的转交地址,然后通过隧道技术将数据报发送到该主机的外地代理,由外地代理转交给该主机。当该主机向其他主机发送数据报时,使用永久地址 160.80.40.20/16 作为数据报的源地址,使用其他主机的 IP 地址作为数据报的目的地址,这个数据报显然没必要再通过该主机的归属代理进行转发,而直接通过外地代理转发。

4.7 网络层设备

4.7.1 冲突域和广播域

命题追踪 各种中继设备对冲突域 / 广播域的划分(2010、2020)
这里的 “域” 表示冲突或广播在其中发生并传播的区域。

1.冲突域
        冲突域是指连接到同一物理介质上的所有节点的集合,这些节点之间存在介质争用的现象。在 OSI 参考模型中,冲突域被视为第 1 层的概念,像集线器、中继器等简单复制转发信号的第 1 层设备所连接的节点都属于同一个冲突域,也就是说它们不能划分冲突域。而第 2 层(网桥、交换机)、第 3 层(路由器)设备都可以划分冲突域。

2.广播域
        广播域是指接收同样广播消息的节点集合。也就是说,在该集合中的任何一个节点发送一个广播帧,其他能收到这个帧的节点都被认为是该广播域的一部分。在 OSI 参考模型中,广播域被视为第 2 层的概念,像第 1 层(集线器等)、第 2 层(交换机等)设备所连接的节点都属于同一个广播域。而路由器,作为第 3 层设备,则可以划分广播域,即可以连接不同的广播域。
        通常所说的局域网(LAN)特指使用路由器分割的网络,也就是广播域。

4.7.2 路由器的组成和功能

命题追踪 路由器的功能(2010)
        路由器是一种具有多个输入 / 输出端口的专用计算机,其任务是连接不同的网络(连接异构网络)并完成分组转发。在多个逻辑网络(多个广播域)互连时必须使用路由器。
        当源主机向目标主机发送数据报时,路由器先检查源主机与目标主机是否连接在同一个网络上。若源主机和目标主机在同一个网络上,则直接交付而无须通过路由器。若源主机和目标主机不在同一个网络上,则路由器按照转发表(由路由表得出)指出的路由将分组转发给下一个路由器,这称为间接交付。可见,在同一个网络中传递数据无须路由器的参与,而跨网络通信必须通过路由器进行转发。例如,路由器可以连接不同的 LAN,连接不同的 VLAN,连接不同的 WAN,或者把 LAN 和 WAN 互连起来。路由器隔离了广播域。
        从结构上看,路由器由路由选择和分组转发两部分构成,如图 4.25 所示。而从模型的角度看,路由器是网络层设备,它实现了网络模型的下三层,即物理层、数据链路层和网络层。

        路由选择部分:也称控制部分,核心构件是路由选择处理机,其任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断更新和维护路由表。

        分组转发部分由三部分组成:交换结构、一组输入端口和一组输出端口。

        交换结构也称交换组织,其作用是根据转发表对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去。交换结构本身就是一个 “在路由器中的网络”。

图4.25 路由器体系结构

        路由器的端口中都有物理层、数据链路层、网络层的处理模块。输入端口在物理层接收比特流,在数据链路层提取出帧,剥去帧的首部和尾部后,分组就被送入网络层的处理模块。输出端口执行相反的操作。端口在网络层的处理模块中都设有一个缓冲队列,用来暂存等待处理或已处理完毕待发送的分组,还可用来进行必要的差错检测。若分组处理的速率赶不上分组进入队列的速率,就会使后面进入队列的分组因缓冲区满而只能被丢弃。需要说明的是,路由器的端口一般都具有输入和输出的功能,图 4.25 中分别给出输入和输出端口是为了使读者更容易理解。

4.7.3 路由表与分组转发

命题追踪 根据网络拓扑并利用路由聚合构造出路由表(2009、2013)
        路由表是根据路由选择算法得出的,主要用途是路由选择。从历年统考真题可以看出,标准的路由表有 4 个项目:目的网络 IP 地址、子网掩码、下一跳 IP 地址、接口。在图 4.26 所示的网络拓扑中,R1 的路由表见表 4.7,该路由表包含到互联网的默认路由。

图4.26 一个简单的网络拓扑

命题追踪 路由表转发分组的分析(2014)

目的网络 IP 地址

子网掩码

下一跳 IP 地址

接口

202.114.1.0

255.255.255.0

E1

202.114.2.0

255.255.255.0

L0

202.114.3.0

255.255.255.0

202.114.2.2

L0

0.0.0.0

0.0.0.0

202.114.2.2

L0

        转发表是从路由表得出的,其表项和路由表项有直接的对应关系,如图 4.27 所示。但转发表的格式和路由表的格式不同,其结构应使查找过程最优化(而路由表则需对网络拓扑变化的计算最优化)。转发表中含有一个分组将要发往的目的网络,以及分组的下一跳(下一步接收者的目的地址,实际为 MAC 地址)。转发表中还可设置一条默认路由,只要目的网络不在转发表中,就一律选择默认路由转发,默认路由表项的匹配优先级最低。路由表总是用软件来实现的;转发表可以用软件来实现,甚至也可以用特殊的硬件来实现。

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

4.7.4 本节习题精选

一、单项选择题
01. 要控制网络上的广播风暴,可以采用的方法是( )。
A. 用交换机将网络分段
B. 用路由器将网络分段
C. 将网络转接成 10Base-T
D. 用网络分析仪跟踪正在发送广播信息的计算机

01. B
网桥和交换机是第二层设备,能够分割冲突域,但不能分割广播域。路由器是第三层设备,不转发全网广播(目的地址 255.255.255.255),因此可以分割广播域。

02. 下列关于冲突域的叙述中,正确的是( )。
A. 能接收到同一广播帧的所有设备的集合
B. 能发送同一广播帧的所有设备的集合
C. 能产生冲突的所有设备的集合
D. 能隔离冲突的所有设备的集合

02. C
冲突域是指能产生冲突的所有设备的集合,也就是说,若这些设备同时发送数据,则会发生信号干扰和冲突。冲突域的大小取决于网络拓扑和设备类型。

03. 下列设备中,能够分隔广播域的是( )。
A. 集线器
B. 交换机
C. 路由器
D. 中继器

03. C
路由器工作在网络层,不转发广播包(目的地址为 255.255.255.255 的 IP 包),因此能够分隔广播域,抑制网络风暴。交换机工作在数据链路层,能够分隔冲突域,但不能分隔广播域。集线器和中继器是物理层设备,既不能分隔广播域,又不能分隔冲突域。

04. 一个局域网与在远处的另一个局域网互连,则需要用到( )。
A. 物理通信介质和集线器
B. 网间连接器和集线器
C. 路由器和广域网技术
D. 广域网技术

04. C
局域网的互连需要路由器作为连接设备,同时是远程的局域网,因此要用到广域网技术。

05. 路由器主要实现( )的功能。
A. 数据链路层、网络层与应用层
B. 网络层与传输层
C. 物理层、数据链路层与网络层
D. 物理层与网络层

05. C
路由器是网络层设备,所以它必须处理网络层以下的功能,即物理层和数据链路层。而传输层和应用层是网络层之上的,它们使用网络层的接口,路由器不实现它们的功能。

06. 下列关于路由器和路由表的说法中,正确的是( )。
A. 路由器处理的信息量比交换机少,因而转发速度比交换机快
B. 对于同一目标,路由器只提供延迟最小的最佳路由
C. 当路由表中的所有表项都不匹配时,按照默认路由进行转发
D. 路由器不但能够根据 IP 地址进行转发,而且可以根据物理地址进行转发

06. C
路由器是第三层设备,要处理的内容比第二层设备交换机更多,因而转发速度比交换机慢,选项 A 错误。虽然一些路由协议也将延迟等作为参数进行路由选择,但路由协议使用得最多的参数是传输距离,此外还有一些其他参数,选项 B 错误。默认路由的匹配优先级最低,只要目的网络不在转发表中,就一律选择默认路由转发,选项 C 正确。路由器只能根据 IP 地址进行转发,D 错误。

07. (未使用 CIDR)当一个 IP 分组进行直接交付时,要求发送方和目的站具有相同的( )。
A. IP 地址
B. 主机号
C. 端口号
D. 子网地址

07. D
判断一个 IP 分组的交付方式是直接交付还是间接交付,路由器需要根据分组的目的 IP 地址和该路由器接收端口的 IP 地址是否属于同一个子网来判断。具体来说,将该分组的源 IP 地址和目的 IP 地址分别与子网掩码进行 “与” 操作,若得到的子网地址相同,则该分组就采用直接交付方式,否则采用间接交付方式。

08. 一个路由器的路由表通常包含( )。
A. 需要包含到达所有主机的完整路径信息
B. 需要包含所有到达目的网络的完整路径信息
C. 需要包含到达目的网络的下一跳路径信息
D. 需要包含到达所有主机的下一跳路径信息

08. C
路由表中包含到目的网络的下一跳路径信息。由路由表表项的组成也不难得出正确答案为选项 C。路由表也不可能包含到达所有主机的下一跳信息,否则路由转发将是不可想象的。

09. 决定路由器的转发表中的内容的算法是( )。
A. 指数回退算法
B. 分组调度算法
C. 路由算法
D. 拥塞控制算法

09. C
转发表是根据路由表生成的,路由表又是由路由算法得到的,因此路由算法决定了转发表中的内容。

10. 路由器中计算路由信息的是( )。
A. 输入队列
B. 输出队列
C. 交换结构
D. 路由选择处理机

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

11. 路由表的分组转发部分由( )组成。
A. 交换结构
B. 输入端口
C. 输出端口
D. 以上都是

11. D
分组转发部分包括 3 部分:①交换结构,根据转发表对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去。②输入端口,包括物理层、数据链路层和网络层的处理模块。③输出端口,负责从交换结构接收分组,再将其发送到路由器外面的线路上。

12. 由路由器转发分组时,需要进行( )。
A. 网络层处理和数据链路层处理
B. 网络层处理和物理层处理
C. 数据链路层处理和物理层处理
D. 网络层处理、数据链路层处理和物理层处理

12. D
路由器的端口中有物理层、数据链路层和网络层的处理模块。输入端口在物理层接收比特流,在数据链路层提取出帧,剥去帧的首部和尾部后,分组就被送入网络层的处理模块;输出端口执行相反的操作。网络层处理模块根据分组的目的地址,查找转发表,决定输出端口。

13. 路由器的路由选择部分包括( )。
A. 路由选择处理机
B. 路由选择协议
C. 路由表
D. 以上都是

13. D
路由器的路由选择部分包括 3 部分:①路由选择处理机,它根据所选定的路由选择协议构造路由表,同时和相邻路由器交换路由信息。②路由选择协议,用来更新路由表的算法。③路由表,它是根据路由算法得出的,一般包括从目的网络到下一跳的映射。

14. 不同网络设备传输数据的延迟时间是不同的,下列设备中传输时延最大的是( )。
A. 局域网交换机
B. 网桥
C. 路由器
D. 集线器

14. C
路由器具有较大的传输时延,因为它需要根据所接收的每个分组首部中的 IP 地址决定是否转发分组,处理分组首部的任务一般由软件完成,将带来较长的处理时间。因为局域网交换机由硬件进行帧的转发,而且不关心数据链路层以上的数据,所以具有比路由器要小得多的传输时延。从数量级上看,若局域网交换机的传输时延为几十微秒,则路由器的传输时延为几千微秒。集线器的每个接口都具有收发功能,当某个接口收到信号时,立即向所有其他接口转发,因此其传输时延最小。

15. 在路由表中设置一条默认路由,则其目的地址和子网掩码应分别置为( )。
A. 192.168.1.1、255.255.255.0
B. 127.0.0.0、255.0.0.0
C. 0.0.0.0、0.0.0.0
D. 0.0.0.0、255.255.255.255

15. C
路由表中默认路由的目的地址和子网掩码都是 0.0.0.0。

16. 路由器转发分组(在路由表中已找到匹配的条目)时,会根据路由表中的( )字段来确定输出端口。
A. 目的网络地址
B. 下一跳地址
C. 距离度量值
D. 接口标识符

16. D
输出端口就是路由器的接口,每个接口都有一个标识符,如 G0/0 等。路由表中的每个条目都会指定一个接口标识符,路由器转发分组时,根据路由表中的接口标识符来确定输出端口。

17. 路由器能够分割广播域的原因是( )。
A. 路由器工作在网络层,不转发广播帧
B. 路由器工作在数据链路层,不转发广播帧
C. 路由器工作在物理层,不转发广播帧
D. 路由器工作在传输层,不转发广播帧

17. A
交换机会转发广播帧,所以同一台交换机下的所有设备都在一个广播域中。路由器不会转发广播帧,因为路由器工作在网络层,它只关心 IP 地址,而不关心 MAC 地址。

18. 如下图所示,用 7 个相同的路由器与 8 台主机相连。链路带宽分为三种,最上层的最快,最下层的最慢,都是全双工方式,图中标注了各层链路带宽的数值。所有路由器的处理速度都很快,远超链路带宽。下列关于网络拥塞分析的说法中,正确的是( )。

A. R1-R2 链路和 R2-R4 链路都不可能发生拥塞
B. R1-R2 链路可能发生拥塞,R2-R4 链路不可能发生拥塞

C. R1 - R2 链路不可能发生拥塞,R2 - R4 链路可能发生拥塞
D. R1 - R2 链路和 R2 - R4 链路都可能发生拥塞

18. C
R1 - R2 链路上的数据率在任何时候都不可能超过 4Mb/s,因此不可能发生拥塞。对于 R2 - R4 链路,考虑这种情况:H5 和 H6 同时以 1Mb/s 的速率向 H1 发送数据,H7 和 H8 同时以 1Mb/s 的速率向 H2 发送数据。此时,R1 右边的所有链路都正常工作,R1 - R2 链路也正常工作,都没有超过这些链路的带宽。但是,若这些数据全部都通过 R2 转发,再通过带宽为 2Mb/s 的 R2 - R4 链路分别发送给主机 H1 和 H2,则显然是不可能的,于是在 R2 的输入缓存中,进来的数据比出去的要多,数据堆积得越来越多,发送不出去,产生拥塞。选项 C 正确。

19. 【2010 统考真题】下列网络设备中,能够抑制广播风暴的是( )。
I 中继器 II 集线器 III 网桥 IV 路由器
A. 仅 I 和 II B. 仅 III C. 仅 III 和 IV D. 仅 IV

19. D
中继器和集线器工作在物理层,既不隔离冲突域也不隔离广播域。为了解决冲突域的问题,人们利用网桥和交换机来分隔各个网段中的通信量,建立多个分离的冲突域,但当网桥和交换机接收到一个未知转发信息的数据帧时,为了保证该帧能被目的节点正确接收,将该帧从所有的端口广播出去,可以看出网桥和交换机的冲突域等于端口个数,广播域为 1。路由器可以隔离广播域和冲突域,要屏蔽数据链路层的广播帧,当然应该是网络层设备路由器。在此题的选项中,路由器是其中最高层的网络设备,其他设备能隔离的,路由器一定能隔离。

20. 【2012 统考真题】下列关于 IP 路由器功能的描述中,正确的是( )。
I. 运行路由协议,设置路由表
II. 监测到拥塞时,合理丢弃 IP 分组
III. 对收到的 IP 分组头进行差错检验,确保传输的 IP 分组不丢失
IV. 根据收到的 IP 分组的目的 IP 地址,将其转发到合适的输出线路上
A. 仅 III、IV B. 仅 I、II、III C. 仅 I、II、IV D. I、II、III、IV

20. C
选项 I 和 IV 显然是路由器的功能。对于选项 II,当路由器监测到拥塞时,可合理丢弃 IP 分组,并向发出该 IP 分组的源主机发送一个源点抑制的 ICMP 报文(最新标准已不再使用)。对于选项 III,路由器对收到的 IP 分组首部进行差错检验,丢弃有差错首部的报文,但不保证 IP 分组不丢失。

21. 【2020 统考真题】下图所示的网络中,冲突域和广播域的个数分别是( )。

A. 2,2 B. 2,4 C. 4,2 D. 4,4

21. C
网络层设备路由器可以隔离广播域和冲突域;数据链路层设备交换机只能隔离冲突域;物理层设备集线器、中继器既不隔离冲突域也不隔离广播域。因此共有 2 个广播域,4 个冲突域。

二、综合应用题
01. 某个单位的网点由 4 个子网组成,结构如下图所示,其中主机 H1、H2、H3 和 H4 的 IP 地址和子网掩码见下表。

主机

IP 地址

子网掩码

H1

202.99.98.18

255.255.255.240

H2

202.99.98.35

255.255.255.240

H3

202.99.98.51

255.255.255.240

H4

202.99.98.66

255.255.255.240

1)请写出路由器 R1 到 4 个子网的路由表。
2)试描述主机 H1 发送一个 IP 数据报到主机 H2 的过程(包括物理地址解析过程)。

01. 【解答】
1)将 H1、H2、H3、H4 的 IP 地址分别与它们的子网掩码进行 “与” 操作,可得到 4 个子网的网络地址,分别为 202.99.98.16、202.99.98.32、202.99.98.48、202.99.98.64,因此路由器 R1 到 4 个子网的路由表见下表。

目的网络

子网掩码

下一跳

202.99.98.16

255.255.255.240

直接

202.99.98.32

255.255.255.240

直接

202.99.98.48

255.255.255.240

202.99.98.33

202.99.98.64

255.255.255.240

202.99.98.33

2)主机 H1 向主机 H2 发送一个 IP 数据报的过程如下:
① 主机 H1 首先构造一个源 IP 地址为 202.99.98.18、目的 IP 地址为 202.99.98.35 的 IP 数据报,主机 H1 先把本子网的子网掩码与 H2 的 IP 地址逐位 “与”,所得结果不等于 H1 的网络地址,因此 H1 与 H2 不在同一子网,无法直接交付,然后将该数据报传送给数据链路层。
② 主机 H1 通过 ARP 获得路由器 R1(202.99.98.17)对应的 MAC 地址,并将其作为目的 MAC 地址,将 H1 的 MAC 地址作为源 MAC 地址填入封装有 IP 数据报的帧,然后将该帧发送出去。
③ 路由器 R1 收到该帧后,去掉帧头与帧尾,得到 IP 数据报,然后根据 IP 数据报中的目的 IP 地址(202.99.98.35)去查找路由表,得到下一跳地址为直接相连。
④ 路由器 R1 通过 ARP 得到主机 H2 的 MAC 地址,并将其作为目的 MAC 地址,将 R1 的 MAC 地址作为源 MAC 地址填入封装有 IP 数据报的帧,然后将该帧发送到子网 Net2 上。
⑤ 主机 H2 将收到的帧,去除帧头与帧尾,并最终得到从主机 H1 发来的 IP 数据报。

注意:
        在②中(发出的帧),帧的目的地 MAC 地址为默认网关的 MAC 地址;在④中(接收的帧),帧的源 MAC 地址为默认网关的 MAC 地址。

02. 试简述路由器的路由功能和转发功能。

02.【解答】
        转发即当一个分组到达时所采取的动作。在路由器中,每个分组到达时对它进行处理,它在路由表中查找分组所对应的输出线路。通过查得的结果,将分组发送到正确的线路上。
路由算法是网络层软件的一部分,它负责确定一个进来的分组应该被传送到哪条输出线路上。路由算法负责填充和更新路由表,转发功能则根据路由表的内容来确定当每个分组到来时应该采取什么动作(如从哪个端口转发出去)。

03. 【2019 统考真题】某网络拓扑如下图所示,其中 R 为路由器,主机 H1~H4 的 IP 地址配置以及 R 的各接口 IP 地址配置如图中所示。现有若干以太网交换机(无 VLAN 功能)和路由器两类网络互连设备可供选择。

请回答下列问题:
1)设备 1、设备 2 和设备 3 分别应选择什么类型的网络设备?
2)设备 1、设备 2 和设备 3 中,哪几个设备的接口需要配置 IP 地址?为对应的接口配置正确的 IP 地址。
3)为确保主机 H1~H4 能够访问 Internet,R 需要提供什么服务?
4)若主机 H3 发送一个目的地址为 192.168.1.127 的 IP 数据报,网络中哪几个主机会接收该数据报?

03.【解答】
1)以太网交换机(无 VLAN 功能)连接的若干 LAN 仍然是一个网络(同一个广播域),路由器可以连接不同的 LAN、不同的 WAN 或把 WAN 和 LAN 互连起来,隔离了广播域。IP 地址 192.168.1.2/26 与 192.168.1.3/26 的网络前缀均为 192.168.1.0,视为 LAN1。IP 地址 192.168.1.66/26 与 192.168.1.67/26 的网络前缀均为 192.168.1.64,视为 LAN2。所以设备 1 为路由器,设备 2、3 为以太网交换机。
2)设备 1 为路由器,其接口应配置 IP 地址。IF1 接口与路由器 R 相连,其相连接口的 IP 地址为 192.168.1.253/30,253 的二进制表示形式为 11111101,因此 IF1 接口的网络前缀也应为 192.168.1.111111,已分配 192.168.1.253,去除全 0 和全 1,IF1 接口的 IP 地址应为 192.168.1.254。LAN1 的默认网关为 192.168.1.1,LAN2 的默认网关为 192.168.1.65,网关的 IP 地址是具有路由功能的设备的 IP 地址,通常默认网关地址就是路由器中的 LAN 端口地址,设备 1 的 IF2、IF3 接口的 IP 地址分别设置为 192.168.1.1 和 192.168.1.65。
3)私有地址段:C 类 192.168.0.0~192.168.255.255,即 H1~H4 均为私有 IP 地址,若要能够访问 Internet,R 需要提供 NAT 服务,即网络地址转换服务。
4)主机 H3 发送一个目的地址为 192.168.1.127 的 IP 数据报,主机号全为 1,为本网络的广播地址,因为路由器可以隔离广播域,所以只有主机 H4 会接收到数据报。

4.8 本章小结及疑难点

1.“尽最大努力交付” 有哪些含义?

1)不保证源主机发送的 IP 数据报一定无差错地交付到目的主机。

2)不保证源主机发送的 IP 数据报都在某一规定的时间内交付到目的主机。

3)不保证源主机发送的 IP 数据报一定按发送时的顺序交付到目的主机。

4)不保证源主机发送的 IP 数据报不会重复交付给目的主机。

5)不故意丢弃 IP 数据报。丢弃 IP 数据报的情况是:路由器检测出首部检验和有错误;或者因为网络中通信量过大,路由器或目的主机中的缓存已无空闲空间。
        但要注意,IP 数据报的首部中有一个 “首部检验和” 字段。当它检验出 IP 数据报的首部出现了差错时,就丢弃该数据报。因此,凡交付给目的主机的 IP 数据报都是 IP 首部没有差错的或没有检测出差错的。也就是说,在传输过程中,出现差错的 IP 数据报都被丢弃了。
        现在互联网上绝大多数的通信量都属于 “尽最大努力交付”。若数据必须可靠地交付给目的地,则使用 IP 的高层软件必须负责解决这一问题。

2.假定在一个局域网中,计算机 A 广播一个 ARP 请求分组,希望找出计算机 B 的硬件地址。试问这时由哪个计算机发送 ARP 响应分组?将谁的硬件地址告诉计算机 A?
        这要区分两种情况。第一,若计算机 B 和计算机 A 都连接在同一个局域网,则计算机 B 发送 ARP 响应分组,给出计算机 B 的硬件地址。第二,若计算机 B 和计算机 A 不连接在同一个局域网,则必须由一个连接计算机 A 所在局域网的路由器来响应,这时该路由器向计算机 A 发送 ARP 响应分组,给出该路由器的硬件地址。

3.在数据报的首部中只有源 IP 地址和目的 IP 地址,而没有中间经过的路由器的 IP 地址,更没有指明下一跳路由器的 IP 地址,那么待转发的数据报怎样才能找到下一跳路由器呢?
        当路由器收到一个待转发的数据报时,由路由表得出下一跳路由器的 IP 地址后,不是把这个地址填入数据报,而是送交数据链路层的网络接口软件。网络接口软件负责把下一跳路由器的 IP 地址转换成硬件地址(使用 ARP),并将此硬件地址写入 MAC 帧的首部,然后根据此硬件地址找到下一跳路由器。可见,当发送一连串的数据报时,上述的查找路由表、用 ARP 得到硬件地址、把硬件地址写入 MAC 帧的首部等过程,将不断地重复进行,造成了一定的开销。
        那么,能不能在路由表中不使用 IP 地址而直接使用硬件地址呢?不行。我们要清楚,使用抽象的 IP 地址,本来就是为了隐蔽各种底层网络的复杂性而便于分析和研究问题,这样就不可避免地要付出一些代价,例如在选择路由时多了一些开销。反过来,若在路由表中直接使用硬件地址,则因为硬件地址是平面的,将导致路由表极为庞大,从而带来更多的麻烦。

4.路由器实现了物理层、数据链路层、网络层,这句话的含义是什么?
        第 1 章中提到了网络中的两个通信节点利用协议栈进行通信的过程。发送方一层一层地把数据 “包装”,接收方一层一层地把 “包装” 拆开,最后上交给用户。路由器实现了物理层,数据链路层和网络层的含义是指路由器有能力对这三层协议的控制信息进行识别、分析以及转换,直观的理解是路由器有能力对数据 “包装” 这三层协议或者 “拆开” 这三层协议。自然,路由器就有能力互连这三层协议不同的两个网络。

第 5 章 传输层

【考纲内容】

(一)传输层提供的服务:传输层的功能;传输层寻址与端口;无连接服务和面向连接服务

(二)UDP:UDP 数据报;UDP 检验

(三)TCP:TCP 段;TCP 连接管理;TCP 可靠传输;TCP 流量控制与拥塞控制

【复习提示】
        传输层是整个网络体系结构中的关键层次。要求掌握传输层在计算机网络中的功能、工作方式及原理等,掌握 UDP 及 TCP(如首部格式、可靠传输、流量控制、拥塞控制、连接管理等)。其中,TCP 报文分析、连接管理、流量控制与拥塞控制机制,出选择题、综合题的概率均较大,因此要将其工作原理透彻掌握,以便能在具体的题目中灵活运用。

5.1 传输层提供的服务

5.1.1 传输层的功能

        数据链路层提供链路上相邻节点之间的逻辑通信,网络层提供主机之间的逻辑通信。传输层位于网络层之上、应用层之下,它为运行在不同主机上的进程之间提供逻辑通信。(① 逻辑通信是指对等层之间的通信好像是沿水平方向传送的,但两个对等层之间并没有一条水平方向的物理连接。)传输层属于面向通信部分的最高层,同时也是用户功能中的最低层。显然,即使网络层协议不可靠(网络层协议使分组丢失、混乱或重复),传输层同样能为应用程序提供可靠的服务。
        从图 5.1 可看出,网络的边缘部分的两台主机使用网络的核心部分的功能进行端到端的通信时,只有主机的协议栈才有传输层,而路由器在转发分组时都只用到下三层的功能(在通信子网中没有传输层,传输层只存在于通信子网以外的主机中)。传输层的功能如下。

1.应用进程之间的逻辑通信

        从网络层来说,通信的双方是两台主机,IP 数据报的首部给出了这两台主机的 IP 地址。但 “两台主机之间的通信” 实际上是两台主机中的应用进程之间的通信。应用进程之间的通信也称端到端的逻辑通信。IP 虽然能把分组送到目的主机,但这个分组还停留在主机的网络层,而没有交付给主机中的进程。从传输层来看,通信的真正端点不是主机而是主机中的进程。

图5.1 传输层为相互通信的进程提供逻辑通信

2.复用和分用
        复用是指发送方不同的应用进程都可以使用同一个传输层协议传送数据。分用是指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程。

注意:
        网络层也有复用和分用的功能,但网络层的复用是指发送方不同协议的数据都可被封装成 IP 数据报发送出去,分用是指接收方的网络层在剥去首部后把数据交付给相应的协议。

3.差错检测

        传输层要对收到的报文(首部和数据部分)进行差错检测。对于 TCP,若接收方发现报文段出错,则要求发送方重发该报文段。对于 UDP,若接收方发现数据报出错,则直接丢弃。在网络层,IP 数据报首部中的检验和字段只检验首部是否出错,而不检查数据部分。

4.提供面向连接和无连接的传输协议
        传输层向高层用户屏蔽了低层网络核心的细节(如网络拓扑、路由协议等),它使应用进程看见的是在两个传输层实体之间好像有一条端到端的逻辑通信信道,这条逻辑通信信道对上层的表现却因传输层协议不同而有很大的差别。当传输层采用面向连接的 TCP 时,尽管下面的网络是不可靠的(只提供尽最大努力的服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。但当传输层采用无连接的 UDP 时,这种逻辑通信信道仍然是一条不可靠信道。

5.1.2 传输层的寻址与端口

1.端口的作用
        端口能让应用层的各种进程将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。端口在传输层的作用类似于 IP 地址在网络层的作用,只不过 IP 地址标识的是主机,而端口标识的是主机中的应用进程。
        数据链路层的服务访问点为帧的 “类型” 字段,网络层的服务访问点为 IP 数据报的 “协议” 字段,传输层的服务访问点为 “端口号” 字段,应用层的服务访问点为 “用户界面”。
在协议栈层间的抽象的协议端口是软件端口,它与路由器或交换机上的硬件端口是完全不同的概念。硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与传输实体进行层间交互的一种地址。传输层使用的是软件端口。

2.端口号
        应用进程通过端口号进行标识,端口号长度为 16 比特,能够表示 65536(216)个不同的端口号。端口号只具有本地意义,即端口号只标识本计算机应用层中的各进程,在因特网中不同计算机的相同端口号是没有联系的。根据端口号范围可将端口分为两类:

1)服务器端使用的端口号:它又分为两类,最重要的一类是熟知端口号,数值为 0~1023,IANA(互联网地址指派机构)把这些端口号指派给了 TCP/IP 最重要的一些应用程序,让所有的用户都知道。另一类称为登记端口号,数值为 1024~49151,它是供没有熟知端口号的应用程序使用的,使用这类端口号必须在 IANA 登记,以防止重复。
一些常用的熟知端口号如下:

2)客户端使用的端口号:数值为 49152~65535。因为这类端口号仅在客户进程运行时才动态地选择,所以也称短暂端口号。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的端口号,因而可以把数据发送给客户进程。通信结束后,刚用过的客户端端口号就不复存在,这个端口号就可以供其他客户进程使用。

3.套接字
        在网络中通过 IP 地址来标识和区别不同的主机,通过端口号来标识和区分一台主机中的不同应用进程,端口号拼接到 IP 地址就构成套接字(Socket)。在网络中采用发送方和接收方的套接字来识别端点。套接字,实际上是一个通信端点,即
                        套接字(Socket)=(IP 地址:端口号)
它唯一地标识网络中的一台主机上的一个应用进程。
        在网络通信中,主机 A 发给主机 B 的报文包含目的端口号和源端口号,源端口号是 “返回地址” 的一部分,即当 B 需要发回一个报文给 A 时,B 到 A 的报文中的目的端口号便是 A 到 B 的报文中的源端口号(完全的返回地址是 A 的 IP 地址和源端口号)。

5.1.3 无连接服务与面向连接服务

        TCP/IP 族在 IP 层之上使用了两个传输协议:一个是面向连接的传输控制协议(TCP),采用 TCP 时,传输层向上提供的是一条全双工的可靠逻辑信道;另一个是无连接的用户数据报协议(UDP),采用 UDP 时,传输层向上提供的是一条不可靠的逻辑信道。

        TCP提供面向连接的可靠服务,通信双方在传送数据之前必须先建立连接,然后基于此连接进行可靠数据传输,数据传输结束后要释放连接。TCP 不提供广播或多播服务。TCP 为了实现可靠数据传输,就必须增加许多措施,如确认、流量控制、计时器及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。因此 TCP 主要适用于可靠性更重要的场合,如文件传输协议(FTP)、超文本传输协议(HTTP)、远程登录(TELNET)等。

        UDP提供无连接的不可靠服务,通信双方在传送数据之前不需要建立连接,接收方的传输层在收到 UDP 用户数据报后,无须给发送方发回任何确认。UDP 在 IP 层之上仅提供两个附加服务:多路复用和对数据的错误检查。IP 层知道怎样把分组投递给一台主机,但不知道怎样把它们投递给主机上的具体应用。因为 UDP 比较简单,所以执行速度比较快、实时性好。使用 UDP 的应用主要包括小文件传送协议(TFTP)、DNS、SNMP 和实时传输协议(RTP)。

表5.1所示为一些典型互联网应用所用的 TCP/IP 应用层协议和传输层协议。

表5.1 一些典型互联网应用所用的 TCP/IP 应用层协议和传输层协议

互联网应用

TCP/IP 应用层协议

TCP/IP 传输层协议

域名解析

域名系统(DNS)

UDP

文件传送

简单文件传送协议(TFTP)

UDP

路由选择

路由信息协议(RIP)

UDP

IP 地址分配

动态主机配置协议(DHCP)

UDP

网络管理

简单网络管理协议(SNMP)

UDP

IP 多播

网际组管理协议(IGMP)

UDP

电子邮件

简单邮件传送协议(SMTP)

TCP

远程终端接入

远程终端协议(TELNET)

TCP

万维网

超文本传送协议(HTTP)

TCP

文件传送

文件传送协议(FTP)

TCP

注意:
        IP 数据报和 UDP 数据报的区别:IP 数据报在网络层要经过路由器的存储转发;而 UDP 数据报封装成 IP 数据报在网络层传输时,UDP 数据报的信息对路由器是不可见的。

5.1.4 本节习题精选

单项选择题
01. 在 OSI 参考模型中,提供端到端的透明传输服务、差错控制和流量控制的层是( )。
A. 物理层 B. 网络层 C. 传输层 D. 会话层

01. C
端到端即进程到进程,物理层只提供节点之间的比特流传输服务,网络层提供主机到主机的通信服务,主要功能是路由选择。本题条件若换成 TCP/IP 模型,答案依然是选项 C。

02. 传输层为( )之间提供逻辑通信。
A. 主机 B. 进程 C. 路由器 D. 操作系统

02. B
传输层提供的是端到端服务,为进程之间提供逻辑通信。

03. 下列关于传输层的面向连接服务特性的说法中,正确的是( )。
A. 不保证可靠和顺序交付 B. 不保证可靠但保证顺序交付
C. 保证可靠但不保证顺序交付 D. 保证可靠和顺序交付

03. D
面向连接服务是指通信双方在进行通信之前,要先建立一个完整的连接,在通信过程中,整个连接一直可以被实时地监控和管理。通信完毕后释放连接。面向连接的服务可以保证数据的可靠和顺序交付。

04. 在 TCP/IP 模型中,传输层的主要作用是在互联网的源主机和目的主机对等实体之间建立用于会话的( )。
A. 操作连接 B. 点到点连接 C. 控制连接 D. 端到端连接

04. D
传输层的主要作用是在源主机进程和目的主机进程之间提供端到端的数据传输。一般来说,端到端通信是由一段段的点到点信道构成的,端到端协议建立在点对点协议的基础之上。

05. 可靠传输协议中的 “可靠” 指的是( )。
A. 使用面向连接的会话 B. 使用尽力而为的传输
C. 使用滑动窗口来维持可靠性 D. 使用确认机制来确保传输的数据不丢失

05. D
若一个协议使用确认机制对传输的数据进行确认,则可以认为它是一个可靠的协议;若一个协议采用 “尽力而为” 的传输方式,则是不可靠的。例如,TCP 对传输的报文段提供确认,因此是可靠的传输协议;而 UDP 不提供确认,因此是不可靠的传输协议。

06. 下列选项中,( )能够唯一确定一个在互联网上通信的进程。
A. 主机名 B. IP 地址及 MAC 地址
C. MAC 地址及端口号 D. IP 地址及端口号

06. D
要在互联网上唯一确定一个进程,就要使用 IP 地址和端口号的组合,通常称为套接字(Socket),IP 地址确定某主机,端口号确定该主机上的某进程。

07. 在( )范围内的端口号被称为熟知端口号并限制使用,这些端口号是为常用的应用层协议如 FTP、HTTP 等保留的。

A. 0~127 B. 0~255 C. 0~511 D. 0~1023

07. D
熟知端口号的数值为 0~1023,登记端口号的数值是 1024~49151,客户端使用的端口号的数值是 49152~65535。

08. 下列哪个 TCP 熟知端口号是错误的?( )
A. TELNET:23 B. SMTP:25 C. HTTP:80 D. FTP:24

08. D
FTP 控制连接的端口是 21,数据连接的端口是 20。

09. 下列关于 TCP 和 UDP 端口的说法中,正确的是( )。
A. TCP 和 UDP 分别拥有自己的端口号,它们互不干扰,可以共存于同一台主机
B. TCP 和 UDP 分别拥有自己的端口号,但它们不能共存于同一台主机
C. TCP 和 UDP 的端口没有本质区别,但它们不能共存于同一台主机
D. 当一个 TCP 连接建立时,它们互不干扰,不能共存于同一台主机

09. A
端口号只具有本地意义,即端口号只标识本计算机应用层中的各个进程。同一台计算机中 TCP 和 UDP 分别拥有自己的端口号,它们互不干扰,因此 UDP 和 TCP 可以使用相同的端口号。

10. 下列关于传输层及相关协议的说法中,错误的是( )。
A. 传输层是 OSI 参考模型的第四层
B. 传输层提供的是主机间的点到点数据传输
C. TCP 是面向连接的,UDP 是无连接的
D. TCP 进行流量控制和拥塞控制,而 UDP 既不进行流量控制,又不进行拥塞控制

10. B
传输层是 OSI 参考模型中的第 4 层,TCP 是面向连接的,它提供流量控制和拥塞控制,保证服务可靠;UDP 是无连接的,不提供流量控制和拥塞控制,只能做出尽最大努力的交付。传输层提供的是进程到进程间的传输服务,也称端到端服务。

5.2 UDP

5.2.1 UDP 数据报

1.UDP 概述
        UDP 仅在 IP 层的数据报服务之上增加了复用、分用和差错检测的功能。若应用开发者选择 UDP 而非 TCP,则应用程序几乎直接与 IP 打交道。为什么应用开发者宁愿在 UDP 之上构建应用,也不选择 TCP?既然 TCP 提供可靠的服务,而 UDP 不提供,则 TCP 总是首选吗?答案是否定的,因为有很多应用更适合 UDP,主要因为 UDP 具有如下优点:

命题追踪 UDP的特点(2014)

1)UDP 无须建立连接。因此 UDP 不会引入建立连接的时延。

2)无连接状态。TCP 需要在端系统中维护连接状态。此连接状态包括接收和发送缓存、拥塞控制参数和序号与确认号的参数。而 UDP 既不维护连接状态,又不跟踪这些参数。因此,当某些专用服务器使用 UDP 时,一般都能支持更多的活动客户机。

3)UDP 的首部开销小。TCP 有 20B 的首部开销,而 UDP 仅有 8B 的开销。

4)UDP 没有拥塞控制,因此网络中的拥塞不会影响源主机的发送速率。某些实时应用要求源主机以稳定的速率发送数据,能容忍一些数据的丢失,但不允许有太大的时延。

5)UDP 支持一对一、一对多、多对一和多对多的交互通信。
        UDP 常用于一次性传输较少数据的网络应用,如 DNS、SNMP 等,因为对于这些应用,若采用 TCP,则将为连接创建、维护和拆除带来不小的开销。UDP 也常用于多媒体应用(如 IP 电话、实时视频会议、流媒体等),显然,可靠数据传输对这些应用来说并不是最重要的,但 TCP 的拥塞控制会导致数据出现较大的延迟,这是它们不可容忍的。
        UDP 不保证可靠交付,但这并不意味着应用对数据的要求是不可靠的,所有维护可靠性的工作可由用户在应用层来完成。应用开发者可根据应用的需求来灵活设计自己的可靠性机制。
        UDP 是面向报文的。发送方 UDP 对应用层交下来的报文,在添加首部后就向下交付给 IP 层,一次发送一个报文,既不合并,又不拆分,而是保留这些报文的边界;接收方 UDP 对 IP 层交上来 UDP 数据报,在去除首部后就原封不动地交付给上层应用进程,一次交付一个完整的报文。因此报文不可分割,是 UDP 数据报处理的最小单位。因此,应用程序必须选择合适大小的报文,若报文太长,则 UDP 把它交给 IP 层后,可能导致分片;若报文太短,则 UDP 把它交给 IP 层后,会使 IP 数据报的首部的相对长度太大,两者都会降低 IP 层的效率。

2.UDP 的首部格式
        UDP 数据报包含两部分:首部字段和数据字段。UDP 首部有 8B,由 4 个字段组成,每个字段的长度都是 2B ,如图5.2所示。各字段意义如下:

命题追踪 UDP 首部格式及各字段意义(2018)
1)源端口。源端口号。在需要对方回信时选用,不需要时可用全 0。
2)目的端口。目的端口号。这在终点交付报文时必须使用到。

命题追踪 UDP 首部的长度(2021)
3)长度。UDP 数据报的长度(包括首部和数据),其最小值是 8(仅有首部)。
4)检验和。检测 UDP 数据报在传输中是否有错。有错就丢弃。该字段是可选的,当源主机不想计算检验和时,则直接令该字段为全 0。

        当传输层从 IP 层收到 UDP 数据报时,就根据首部中的目的端口,把 UDP 数据报通过相应的端口,上交最后的终点 —— 应用进程,如图 5.3 所示。

        若接收方 UDP 发现收到的报文中的目的端口号不正确(不存在对应于端口号的应用进程),则就丢弃该报文,并由 ICMP 发送 “端口不可达” 差错报文给发送方。

5.2.2 UDP 检验

        在计算检验和时,要在 UDP 数据报之前增加 12B 的伪首部,伪首部并不是 UDP 的真正首部。只是在计算检验和时,临时添加在 UDP 数据报的前面,得到一个临时的 UDP 数据报。检验和就是按照这个临时的 UDP 数据报来计算的。伪首部既不向下传送,又不向上递交,而只是为了计算检验和。图 5.4 给出了 UDP 数据报的伪首部各字段的内容。


        UDP 计算检验和的方法和计算 IP 数据报首部检验和的方法基本相同。不同的是:IP 数据报的检验和只检验 IP 数据报的首部,但 UDP 的检验和要将首部和数据部分一起检验。
        UDP 计算检验和的方法:在发送方,先把全 0 放入检验和字段,再把伪首部和 UDP 数据报看成是由许多 16 位的字串接起来的。若 UDP 数据报的数据部分不是偶数个字节,则要在末尾填入一个全 0 字节(但此字节不发送)。然后按二进制反码计算出这些 16 位字的和。将此和的二进制反码写入检验和字段,并发送。在接收方,把收到的 UDP 数据报连同伪首部(若不是偶数个字节,则还需补上一个全 0 字节)后,按二进制反码求这些 16 位字的和。当无差错时其结果应为全 1,否则就表明有差错出现,接收方就应丢弃这个 UDP 数据报。

命题追踪 UDP 检验和的计算规则(2024)
        二进制反码求和的运算规则:①从低位到高位逐列进行计算,0 和 0 相加是 0,0 和 1 相加是 1,1 和 1 相加是 0 并产生进位 1;②若最高位相加后产生进位,则最后得到的结果要在最低位加 1,该过程也称回卷。下面通过一个简单的例子来说明,假设有下面 3 个 16 位的字:

在接收方,将这 4 个 16 位的字(包括检验和)相加,若结果为 11111111 11111111,则表示无差错;若结果中的某些位是 0,则表示有差错。

注意:
        1)若 UDP 检验和检验出 UDP 数据报是错误的,则可以丢弃,也可以交付给上层,但是需要附上错误报告,即告诉上层这是错误的数据报。
        2)通过伪首部,不仅可以检查源端口号、目的端口号和 UDP 用户数据报的数据部分,还可以检查 IP 数据报的源 IP 地址和目的地址。

这种简单的差错检验方法的检错能力并不强,但它的好处是简单、处理速度快。

5.2.3 本节习题精选

一、单项选择题
01. 使用 UDP 的网络应用,其数据传输的可靠性由( )协议负责。
A. 传输层 B. 应用层 C. 数据链路层 D. 网络层

01. B
UDP 在网络层的 IP 基础之上增加了复用分用和有限的差错控制,IP 的特点是尽最大努力交付。UDP 在传送数据时没有流量控制机制,也没有确认机制,是一个不可靠的传输层协议。若网络应用使用 UDP 传输数据,则必须在传输层的上层即应用层提供可靠性的工作。

02. 下列关于 UDP 的描述中,错误的是( )。
A. UDP 报头主要包括端口号、长度、检验和等字段
B. UDP 长度字段是 UDP 数据报的长度,包括伪首部的长度
C. UDP 检验和对伪首部、UDP 报文头及应用层数据进行检验
D. 伪首部包括 IP 分组报头的一部分

02. B
伪首部只是在计算检验和时临时添加的,不计入 UDP 的长度。对于选项 D,伪首部包括源 IP 和目的 IP,这是 IP 分组报头的一部分。

03. UDP 数据报首部不包含( )。
A. UDP 源端口号         B. UDP 检验和
C. UDP 目的端口号         D. UDP 数据报首部长度

03. D
UDP 数据报的格式包括 UDP 源端口号、UDP 目的端口号、UDP 报文长度和检验和,但不包括 UDP 数据报首部长度。因为 UDP 数据报首部长度是固定的 8B,所以没有必要再设置首部长度字段。

04. UDP 数据报中的长度字段( )。
A. 不记录数据的长度         B. 只记录首部的长度
C. 只记录数据部分的长度         D. 包括首部和数据部分的长度

04. D
长度字段记录 UDP 数据报的长度(包括首部和数据部分),以字节为单位。

05. UDP 数据报比 IP 数据报多提供了( )服务。
A. 流量控制         B. 拥塞控制         C. 端口功能         D. 路由转发

05. C
虽然 UDP 和 IP 都是数据报协议,但是它们之间还是存在差别。其中,最大的差别是 IP 数据报只能找到目的主机而无法找到目的进程,UDP 提供端口功能及复用和分用功能,可以将数据报投递给对应的进程。

06. 下列关于 UDP 的描述,正确的是( )。
A. 给出数据的按序投递

B. 不允许多路复用
C. 拥有流量控制机制

D. 是无连接的

06. D
UDP 是不可靠的,所以没有数据的按序投递,排除选项 A;UDP 只在 IP 层的数据报服务上增加了很少的一点功能,即复用和分用功能及差错检测功能,排除选项 B;显然 UDP 没有流量控制,排除选项 C;UDP 是传输层的无连接协议,答案为 D。

07. 接收方收到有差错的 UDP 数据报时的处理方式是( )。
A. 丢弃

B. 请求重传

C. 差错校正

D. 忽略差错

07. A
接收端通过检验发现数据有差错,就直接丢弃该数据报,仅此而已。

08. 下列关于 UDP 检验和的说法中,错误的是( )。
A. 计算检验和时需按 2 字节对齐,若数据部分不足,则需用一个全 0 字节填充
B. 若 UDP 检验和计算结果为 0,则在检验和字段填充 0
C. UDP 检验和字段的计算包括一个伪首部、UDP 首部和携带的用户数据
D. UDP 检验和的计算方法是二进制反码求和再取反

08. B
UDP 检验和不是必需的,若不使用检验和,则将检验和字段设置为 0。而若检验和的计算结果恰好为 0,则将检验和字段置为全 1(这个结论了解即可)。

09. 下列关于 UDP 检验的描述中,错误的是( )。
A. UDP 检验和段的使用是可选的,若源主机不想计算检验和,则该检验和段应为全 0
B. 在计算检验和的过程中,需要生成一个伪首部,源主机需要把该伪首部发送给目的主机
C. 检验出 UDP 数据报出错时,可以丢弃或交付给上层
D. UDP 检验和还能检验 IP 数据报的源 IP 地址和目的 IP 地址

09. B
UDP 数据报的伪首部包含了 IP 地址信息,目的是通过数据检验保证 UDP 数据报正确到达目的主机。伪首部是临时添加的,只是为了计算检验和,既不向下传送,又不向上递交。若检验出 UDP 数据报出错,则可以丢弃,也可以交付给上层,但是需要告诉上层这是错误的数据报。

10. 下列网络应用中,不适合使用 UDP 的是( )。
A. 客户机 / 服务器领域

B. 远程调用
C. 实时多媒体应用

D. 远程登录

10. D
UDP 的特点是开销小,时间性好且易于实现。在客户 / 服务器模型中,它们之间的请求报文都很短,使用 UDP 不但编码简单,而且只需要很少的消息。远程调用使用 UDP 的理由和客户 / 服务器模型的类似。对于实时多媒体应用,需要保证数据及时传送,而比例不大的错误是可以容忍的,所以使用 UDP 也是合适的,而且使用 UDP 可以实现多播,为多个客户端服务。而远程登录需要依靠一个客户端到服务器的可靠连接,必须保证数据传输的安全性,使用 UDP 是不合适的。

11. 一个 UDP 数据报的数据字段长度为 9192B,如在数据链路层要采用以太网来传送,则应当将其划分为 IP 数据报片的片数是( )。
A. 6

B. 7

C. 8

D. 9

11. B
UDP 数据字段长度 9192B,加上 UDP 首部长度 8B,共 9200B。每个 IP 数据报片的最大长度为 1500B,减去 IP 首部 20B,剩下 1480B 用来存放 UDP 数据报。因此需要将 UDP 数据报划分为⌈9200/1480⌉=7个 IP 数据报片。每个 IP 数据报片的数据字段长度为 1480B,除了最后一个为 320B。每个 IP 数据报片的偏移字段的值依次为 0, 185, 370, 555, 740, 925, 1110。

12. 某应用层数据大小为 200B,传输层使用 UDP,网际层使用 IP(采用最大首部长度),使用以太网进行传输(不考虑前导码和 VLAN),则该应用层数据的传输效率是( )。
A. 82.6% B. 75.5% C. 69.9% D. 67.1%

12. C
以太网 MAC 帧首部和尾部为 18B,网际层 IP 首部为 60B(采用最大首部长度),传输层 UDP 首部为 8B,所以该应用层数据的传输效率为200÷(200+18+60+8)=69.9%。

13. 在进行跨网络的 IP 通信时,不考虑 NAT,传输层使用 UDP 进行封装,数据链路层采用以太网 MAC 帧进行封装,则下列字段中一定保持不变的是( )。
I. UDP 总长度 II. UDP 检验和 III. FCS 帧检验序列
IV. 目的 MAC 地址 V. 目的 IP 地址 VI. IP 检验和
A. V         B. I、II、V         C. IV、VI         D. III、IV、V

13. A
若数据在传输过程中受到链路 MTU 的限制,则需要进行分片处理,于是 UDP 总长度发生变化,相应的 UDP 检验和、IP 检验和、FCS 帧检验序列都会重新计算,在不同的链路上,目的 MAC 地址都有所不同,只有目的 IP 地址一定保持不变。

14. 【2014 统考真题】下列关于 UDP 的叙述中,正确的是( )。
I. 提供无连接服务 II. 提供复用 / 分用服务 III. 通过差错检验,保障可靠数据传输
A. 仅 I         B. 仅 I、II         C. 仅 II、III         D. I、II、III

14. B
UDP 提供的是无连接服务,选项 I 正确;同时 UDP 也提供复用 / 分用服务,选项 II 正确;UDP 虽然有差错检验机制,但 UDP 的差错检验只是检查数据在传输的过程中有没有出错,出错则直接丢弃,没有重传等机制,不保证可靠传输。使用 UDP 时,可靠传输必须由应用层实现,选项 III 错误。

15. 【2018 统考真题】UDP 实现分用时所依据的首部字段是( )。
A. 源端口号         B. 目的端口号         C. 长度         D. 检验和

15. B
传输层分用的定义是,接收方的传输层剥去报文首部后,能把这些数据正确交付到目的进程。C 和 D 显然不符。端口号用来标识主机中的应用进程。对于 A 和 B,源端口号在需要对方回信时选用,不需要时可用全 0。目的端口号在终点交付报文时使用,符合题意。

16. 【2024 统考真题】若 UDP 在计算检验和的过程中,计算得到中间结果为 1011 1001 1011 0110 时,还需要加上最后一个 16 位数 0110 0101 1100 0101,则最终计算得到的检验和是 ( )。
A. 0001 1111 0111 1011
B. 0001 1111 0111 1100
C. 1110 0000 1000 0011
D. 1110 0000 1000 0100

16. C
UDP 检验和的计算方法是二进制反码求和再取反,二进制反码求和的运算规则如下:①从低位到高位逐列进行计算,0 和 0 相加是 0,0 和 1 相加是 1,1 和 1 相加是 0 并产生进位 1;②若最高位相加后产生进位,则最后得到的结果要在最低位加 1,该过程也称回卷。计算过程如下:

二、综合应用题
01. 为什么要使用 UDP?让用户进程直接发送原始的 IP 分组不就足够了吗?

01. 【解答】
仅仅使用 IP 分组还不够。IP 分组包含 IP 地址,该地址指定一个目的机器。一旦这样的分组到达目的机器,网络控制程序如何知道把它交给哪个进程呢?UDP 分组包含一个目的端口,这一信息是必需的,因为有了它,分组才能被投递到正确的进程。此外,UDP 可以对数据报做包括数据段在内的差错检测,而 IP 只对其首部做差错检测。

02. 使用 TCP 对实时语音数据的传输是否有问题?使用 UDP 传送数据文件时有什么问题?

02. 【解答】
TCP 需要建立连接和维护状态,提供了确认、重传、拥塞控制等机制,虽然保证了传输的可靠性,但也增加了网络延迟和开销,还会导致报文的乱序、重复等现象,影响实时语音数据的实时性、连贯性和清晰度。实时音频 / 视频传输,不宜重传,可容忍少量数据的丢失或出错,但不允许有太大的时延,因此适合使用 UDP。UDP 不需要建立连接,没有重传机制,不保证可靠交付,因此不适合可靠性要求高的应用,在传送数据文件时可能会丢失数据。对于可靠性要求高但实时性要求低的应用,如文件传输、电子邮件等,适合使用 TCP。

03. 一个应用程序用 UDP,到了 IP 层将数据报再划分为 4 个数据报片发送出去。结果前两个数据报片丢失,后两个到达目的站。过了一段时间应用程序重传 UDP,而 IP 层仍然划分为 4 个数据报片来传送。结果这次前两个到达目的站而后两个丢失。试问:在目的站能否将这两次传输的 4 个数据报片组装成为完整的数据报?假定目的站第一次收到的后两个数据片仍然保存在目的站的缓存中。

03. 【解答】
不行。重传时,IP 数据报的标识字段会有另一个标识符。仅当标识符相同的 IP 数据报片才能组装成一个 IP 数据报。前两个 IP 数据报片的标识符与后两个 IP 数据报片的标识符不同,因此不能组装成一个 IP 数据报。

04. 一个 UDP 首部的信息(十六进制表示)为 0xF721 00 45 00 2C E8 27。UDP 数据报的格式如下图所示。试问:

1)源端口、目的端口、数据报总长度、数据部分长度分别是什么?
2)该 UDP 数据报是从客户发送给服务器还是从服务器发送给客户?使用该 UDP 服务的程序使用的是哪个应用层协议?

04. 【解答】
1)第 1、2 个字节为源端口,即 F721,转换成十进制数为 63265。第 3、4 个字节为目的端口,即 00 45,转换成十进制数为 69。第 5、6 个字节为 UDP 长度(包含首部和数据部分),即 00 2C,转换成十进制数为 44,数据报总长度为 44B,数据部分长度为44−8=36B。
2)由 1)可知,该 UDP 数据报的源端口号为 63265,目的端口号为 69,前一个为客户端使用的端口号,后一个为熟知的 TFTP 的端口号,可知该数据报是客户发给服务器的。

05. 一个 UDP 用户数据报的数据字段为 8192B,要使用以太网来传送。假定 IP 数据报无选项。试问应当划分为几个 IP 数据报片?说明每个 IP 数据报片的数据字段长度和片段偏移字段的值。

05. 【解答】
以太网帧的数据段的最大长度是 1500B,UDP 用户数据报的首部是 8B。假定 IP 数据报无选项,首部长度都是 20B。IP 数据报的片段偏移指出一个片段在原 IP 分组中的相对位置,偏移的单位是 8B。UDP 用户数据报的数据字段为 8192B,加上 8B 的首部,总长度是 8200B。应当划分为 6 个 IP 报片。各 IP 报片总长度、数据长度和片偏移如下表所示。

1

2

3

4

5

6

IP 报片总长度

1500B

1500B

1500B

1500B

1500B

820B

数据长度

1480B

1480B

1480B

1480B

1480B

800B

片偏移

0

185

370

555

740

925

5.3 TCP

5.3.1 TCP 的特点

        TCP 是在不可靠的 IP 层之上实现的可靠的数据传输协议,它主要解决传输的可靠、有序、无丢失和不重复问题。TCP 是 TCP/IP 体系中非常复杂的一个协议,主要特点如下:
1)TCP 是面向连接的传输层协议,TCP 连接是一条逻辑连接。
2)每一条 TCP 连接只能有两个端点,每一条 TCP 连接只能是一对一的。
3)TCP 提供可靠交付的服务,保证传送的数据无差错、不丢失、不重复且有序。
4)TCP 提供全双工通信,允许通信双方的应用进程在任何时候都能发送数据,为此 TCP 连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。

        发送缓存用来暂时存放以下数据:①发送应用程序传送给发送方 TCP 准备发送的数据;②TCP 已发送但尚未收到确认的数据。

        接收缓存用来暂时存放以下数据:①按序到达但尚未被接收应用程序读取的数据;②不按序到达的数据。
5)TCP 是面向字节流的,虽然应用程序和 TCP 的交互是一次一个数据块(大小不等),但 TCP 把应用程序交下来的数据仅视为一连串的无结构的字节流。
        TCP 和 UDP 在发送报文时所采用的方式完全不同。UDP 报文的长度由发送应用进程决定,而 TCP 报文的长度则根据接收方给出的窗口值和当前网络拥塞程度来决定。若应用进程传送到 TCP 缓存的数据块太长,则 TCP 就把它划分得短一些再传送;若太短,则 TCP 也可等到积累足够多的字节后再构成报文段发送出去。关于 TCP 报文的长度问题,后面会详细讨论。

5.3.2 TCP 报文段

        TCP 传送的数据单元称为报文段。TCP 报文段既可用来运载数据,又可用来建立连接、释放连接和应答。一个 TCP 报文段分为首部和数据两部分,整个 TCP 报文段作为 IP 数据报的数据部分封装在 IP 数据报中,如图 5.5 所示。其首部的前 20B 是固定的。TCP 首部最短为 20B,后面有 4N 字节是根据需要而增加的选项,长度为 4B 的整数倍。

图5.5 TCP报文段

TCP 的全部功能体现在其首部的各个字段中,各字段意义如下:

命题追踪 TCP 报文段首部中各字段的分析(2012)
1)源端口和目的端口。各占 2B。分别表示发送方和接收方使用的端口号。

命题追踪 TCP 首部中序号、确认号的含义(2009、2016)
2)序号。占 4B,范围为~,共232个序号。TCP 连接中传送的字节流中的每个字节都要按顺序编号,序号字段值指的是本报文段所发送的数据的第一个字节的序号。
例如,一报文段的序号字段是 301,而携带的数据共有 100B,表明本报文段的数据的最后一个字节的序号是 400,因此下一个报文段的数据序号应从 401 开始。
3)确认号。占 4B,是期望收到对方下一个报文段的第一个数据字节的序号。若确认号为 N,则表明到序号N−1为止的所有数据都已正确收到。
例如,B 正确收到了 A 发送过来的一个报文段,其序号字段是 501,而数据长度是 200B(序号 501~700),这表明 B 正确收到了 A 发送的到序号 700 为止的数据。因此 B 期望收到 A 的下一个数据序号是 701,于是 B 在发送给 A 的确认报文中把确认号置为 701。

命题追踪  TCP 首部的最小长度(2021)
4)数据偏移(首部长度)。占 4 位,这里不是 IP 数据报分片的那个数据偏移,而是表示首部长度(首部中还有长度不确定的选项字段),它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移” 的单位是 32 位(以 4B 为计算单位)。因为 4 位二进制数能表示的最大值为 15,所以 TCP 首部的最大长度为 60B。
5)保留。占 6 位,保留为今后使用,但目前应置为 0。
6)紧急位 URG。当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。紧急数据被插入至报文段数据的最前面,而在紧急数据后面的数据仍是普通数据,因此要与首部中的紧急指针字段配合使用。
7)确认位 ACK。仅当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置 1。
8)推送位 PSH(Push)。两个应用进程进行交互式通信时,都希望在键入一个命令后立即就能收到对方的响应,此时发送方 TCP 把 PSH 置 1,接收方 TCP 收到PSH=1的报文段后,就尽快交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。
9)复位位 RST(Reset)。当 RST = 1 时,表示 TCP 连接中出现严重差错(如主机崩溃等),必须释放连接,然后重新建立传输连接。此外,它还可用于拒绝一个非法的报文段。
10)同步位 SYN。当 SYN = 1 时表示这是一个连接请求或连接接受报文。
当 SYN = 1,ACK = 0 时,表明这是一个连接请求报文,若对方同意建立连接,则应在响应报文中使用 SYN = 1,ACK = 1。关于连接的建立和释放,下一节会详细讨论。
11)终止位 FIN(Finish)。用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已发送完毕,并要求释放传输连接。
12)窗口。占 2B,范围为 0~216 - 1。窗口值告诉对方,从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量(以字节为单位)。接收方的数据缓存空间是有限的,因此窗口值作为接收方让发送方设置其发送窗口的依据。
例如,设确认号是 701,窗口字段是 1000。这表明,从 701 号算起,发送此报文段的一方还有接收 1000 字节数据(字节序号为 701~1700)的接收缓存空间。
13)检验和。占 2B。检验和字段检验的范围包括首部和数据两部分。计算检验和时,和 UDP一样,要在 TCP 报文段的前面加上 12B 的伪首部(只需将 UDP 伪首部的协议字段的 17 改成 6,UDP 长度字段改成 TCP 长度,其他的和 UDP 一样)。
14)紧急指针。占 2B。紧急指针仅在 URG = 1 时才有意义,它指出本报文段中的紧急数据的字节数(紧急数据在报文段数据的最前面)。即使窗口为零,也可以发送紧急数据。
15)选项。长度可变,最长可达 40B。当不使用选项时,TCP 首部长度是 20B。TCP 最初只规定了一种选项,即最大报文段长度(Maximum Segment Size,MSS),它是 TCP 报文段中的数据字段的最大长度。之后又陆续增加了窗口扩大、时间戳等选项,具体请参见教材。
16)填充。这是为了使整个首部长度是 4B 的整数倍。

5.3.3 TCP 连接管理

        TCP 是面向连接的协议,因此每个 TCP 连接都有三个阶段:连接建立、数据传送和连接释放。TCP 连接的管理就是使运输连接的建立和释放都能正常进行。
        在 TCP 连接建立的过程中,要解决以下三个问题:
        1)要使每一方能够确知对方的存在。
        2)要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项、时间戳选项等)。
        3)能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。

        TCP 把连接作为最基本的抽象,每条 TCP 连接有两个端点,TCP 连接的端点不是主机,不是主机的 IP 地址,不是应用进程,也不是传输层的协议端口。TCP 连接的端口即为套接字(Socket),每一条 TCP 连接唯一地被通信的两个端点(两个套接字)所确定。还应注意:同一个 IP 地址可以有多个不同的 TCP 连接,而同一个端口号也可以出现在多个不同的 TCP 连接中。
        TCP 连接的建立采用客户 / 服务器模式。主动发起连接建立的应用进程称为客户(Client),而被动等待连接建立的应用进程称为服务器(Server)。

1.TCP 连接的建立
连接的建立经历以下 3 个步骤,通常称为三次握手,如图 5.6 所示。

图5.6 用“三次握手”建立TCP连接

        连接建立前,服务器处于 LISTEN(收听)状态,等待客户的连接请求。

命题追踪 TCP 连接建立的报文段中各字段的分析(2011、2012、2016、2019)
        第一步:客户机首先向服务器发送连接请求报文段。请求报文段的 SYN 位置 1,同时选择一个初始序号 seq = x。TCP 规定,SYN 报文段(SYN = 1 的报文段)不能携带数据,但要消耗一个序号。这时,客户机进入 SYN-SENT(同步已发送)状态。
        第二步:服务器收到连接请求报文段后,如同意建立连接,则向客户机发回确认。确认报文段的 SYN 位和 ACK 位都置 1,确认号 ack = x + 1,同时选择一个初始序号 seq = y。确认报文段不能携带数据,但也要消耗一个序号。这时,服务器进入 SYN-RCVD(同步收到)状态。
        第三步:客户机收到确认报文段后,还要向服务器给出确认。确认报文段的 ACK 位置 1,确认号 ack = y + 1,序号 seq = x + 1。该报文段可以携带数据。若不携带数据,则不消耗序号,下一个数据报文段的序号仍为 x + 1。这时,客户机进入 ESTABLISHED(已建立连接)状态。
        当服务器收到来自客户机的确认后,也进入 ESTABLISHED 状态。
        成功进行以上三步后,就建立了 TCP 连接,接下来就可以传送应用层数据。TCP 提供的是全双工通信,因此通信双方的应用进程在任何时候都能发送数据。
2. TCP 连接的释放
        天下没有不散的筵席,TCP 同样如此。参与 TCP 连接的两个进程中的任何一个都能终止该连接。TCP 连接释放的过程通常称为四次挥手,如图 5.7 所示。

图 5.7 用 “四次挥手” 释放 TCP 连接

命题追踪 TCP 连接建立、数据传送、连接释放的报文段中序号字段的分析(2020、2023)
        第一步:客户机打算关闭连接时,向服务器发送连接释放报文段,并停止发送数据,主动关闭 TCP 连接,该报文段的 FIN 位置 1,序号 seq = u,它等于前面已传送的数据的最后一个字节的序号加 1,FIN 报文段即使不携带数据,也要消耗一个序号。这时,客户机进入 FIN-WAIT-1(终止等待 1)状态。TCP 是全双工的,即可以想象为一条 TCP 连接上有两条数据通路,发送 FIN 的一端不能再发送数据,即关闭了其中一条数据通路,但对方还可以发送数据。
        第二步:服务器收到连接释放报文段后即发出确认。该报文段的 ACK 位置 1,确认号 ack = u + 1,序号 seq = v,等于它前面已传送过的数据的最后一个字节的序号加 1。然后服务器进入 CLOSE-WAIT(关闭等待)状态。此时,从客户机到服务器这个方向的连接就释放了,但从服务器到客户机这个方向的连接并未关闭,TCP 连接处于半关闭状态。客户机收到来自服务器的确认后,进入 FIN-WAIT-2(终止等待 2)状态,等待服务器发出的连接释放报文段。

命题追踪 TCP 连接释放过程中状态变化的(2021)
        第三步:若服务器已经没有要向客户机发送的数据,就向其发送连接释放报文段。该报文段的 FIN 位和 ACK 位都置 1,序号 seq = w(处于半关闭状态的服务器可能又发送了一些数据),还必须重复发送上次已发送的确认号 ack = u + 1。这时服务器进入 LAST-ACK(最后确认)状态。

命题追踪 TCP 连接释放的过程及状态变化的时间分析(2016、2022、2024)
        第四步:客户机收到连接释放报文段后,必须发出确认,之后进入 TIME-WAIT(时间等待)状态。该报文段的 ACK 位置 1,确认号 ack = w + 1,序号 seq = u + 1。服务器收到该确认报文段后就进入 CLOSED(连接关闭)状态。客户机进入 TIME-WAIT 状态后,还要经过时间等待计时器设置的时间 2MSL(Maximum Segment Lifetime,最长报文段寿命)后,才进入 CLOSED 状态。
若服务器收到连接释放请求后不再发送数据,则从客户机发出 FIN 报文段时刻算起,客户机释放连接的最短时间为 1RTT + 2MSL,服务器释放连接的最短时间为 1.5RTT。
        除时间等待计时器外,TCP 还使用一个保活计时器,以避免客户机突然出现故障,而导致服务器一直无效等待。服务器每收到一次客户的数据,就会重置保活计时器,若计时到期后还没有收到客户的数据,服务器就每隔 75 秒发送一个探测报文段。若连续发送 10 个探测报文段后仍未收到客户的响应,则服务器认为客户机出了故障,关闭这个连接。
对上述 TCP 连接建立和释放服务的总结如下:

1)建立连接。分为 3 步:

        ① SYN = 1,seq = x。

        ② SYN = 1,ACK = 1,seq = y,ack = x + 1。

        ③ ACK = 1,seq = x + 1,ack = y + 1。
2)释放连接。分为 4 步:

        ① FIN = 1,seq = u。

        ② ACK = 1,seq = v,ack = u + 1。

        ③ FIN = 1,ACK = 1,seq = w,ack = u + 1。

        ④ ACK = 1,seq = u + 1,ack = w + 1。

5.3.4 TCP 可靠传输

        TCP 在不可靠的 IP 层之上建立一种可靠数据传输服务。TCP 提供的可靠数据传输服务保证接收方从缓存区读出的字节流与发送方发出的字节流完全一样。TCP 使用了检验、序号、确认和重传等机制来达到这一目的。其中,TCP 的检验机制与 UDP 一样,这里不再赘述。

命题追踪  TCP 的确认机制,序号和确认号的含义(2011、2012、2013)

1.序号
        TCP 首部的序号字段用来保证数据能有序提交给应用层,TCP 把数据视为一个无结构但有序的字节流,序号建立在传送的字节流之上,而不建立在报文段之上。
        TCP 连接传送的数据流中的每个字节都编上一个序号。序号字段的值是指本报文段所发送的数据的第一个字节的序号。如图 5.8 所示,假设 A 和 B 之间建立了一条 TCP 连接,A 的发送缓存区中共有 10B,序号从 0 开始排序,第一个报文段包含第 0~2 个字节,则该 TCP 报文段的序号是 0,第二个报文段的序号是 3。

2.确认
        TCP 首部的确认号是期望收到对方的下一个报文段的数据的第一个字节的序号。在图 5.8 中,若接收方 B 已收到第一个报文段的数据,此时 B 希望收到的下一个报文段的数据是从第 3 个字节开始的,则 B 发送给 A 的报文段中的确认号字段应为 3。发送方缓存区会继续存储那些已发送但未收到确认的报文段,以便在需要时重传。
        TCP 默认使用累积确认,即 TCP 只确认数据流中至第一个丢失字节为止的字节,这样可以减小传输开销。接收方可在合适的时候发送确认,也可在自己有数据要发送时将确认信息顺便捎带上(捎带确认)。例如,在图 5.8 中,接收方 B 收到了 A 发送的包含字节 0~2 及字节 6~7 的报文段。由于某种原因,B 还未收到字节 3~5 的报文段,此时 B 仍在等待字节 3(和其后面的字节),因此 B 传到 A 的下一个报文段将确认号字段置为 3。

3.重传
        有两种事件会导致 TCP 对报文段进行重传:超时和冗余 ACK。
(1)超时
        TCP 每发送一个报文段,就对这个报文段设置一个超时计时器。计时器设置的重传时间到期但还未收到确认时,就要重传这一报文段。
        因为 TCP 的下层是互联网环境,IP 数据报所选择的路由变化很大,所以传输层的往返时延的方差也很大。为了计算超时计时器的重传时间,TCP 采用一种自适应算法,它记录一个报文段发出的时间,以及收到相应确认的时间,这两个时间之差称为报文段的往返时间(Round-Trip Time,RTT)。TCP 维护了 RTT 的一个加权平均往返时间 RTTS,它会随新测量 RTT 样本值的变化而变化。显然,超时计时器设置的超时重传时间(Retransmission Time-Out,RTO)应略大于 RTTS,但也不能太多,否则当报文段丢失时,TCP 不能很快重传,导致数据传输时延大。
(2)冗余 ACK(冗余确认)
        超时触发重传存在的一个问题是超时周期往往太长。所幸的是,发送方通常可在超时事件发生之前通过注意所谓的冗余 ACK 来较好地检测丢包情况。冗余 ACK 就是再次确认某个报文段的 ACK,而发送方先前已经收到过该报文段的确认。例如,发送方 A 发送了序号为 1、2、3、4、5 的 TCP 报文段,其中 2 号报文段在链路中丢失,它无法到达接收方 B。因此 3、4、5 号报文段对于 B 来说就成了失序报文段。TCP 规定每当比期望序号大的失序报文段到达时,就发送一个冗余 ACK,指明下一个期待字节的序号。在本例子中,3、4、5 号报文段到达 B,但它们不是 B 所期望收到的下一个报文段,于是 B 就发送 3 个对 1 号报文段的冗余 ACK,表示自己期望接收 2 号报文段。TCP 规定当发送方收到对同一个报文段的 3 个冗余 ACK 时,就可以认为跟在这个被确认报文段之后的报文段已经丢失。就前面的例子而言,当 A 收到对于 1 号报文段的 3 个冗余 ACK 时,它可以认为 2 号报文段已经丢失,这时发送方 A 可以立即对 2 号报文段执行重传,这种技术通常称为快速重传。当然,冗余 ACK 还被用在拥塞控制中,这将在后面的内容中讨论。

5.3.5 TCP 流量控制

        流量控制的功能就是让发送方的发送速率不要太快,以便让接收方来得及接收,因此可以说流量控制是一个速度匹配服务(匹配发送方的发送速率与接收方的读取速率)。

        TCP 利用滑动窗口机制来实现流量控制,滑动窗口的基本原理已在第 3 章中介绍过,这里要介绍的是 TCP 如何使用窗口机制来实现流量控制。TCP 要求接收方维持一个接收窗口(rwnd),接收方根据当前接收缓存的大小,动态地调整接收窗口的大小,其大小反映了接收方的容量。接收方将其放在 TCP 报文段首部中的 “窗口” 字段,以通知发送方。发送方的发送窗口不能超过接收方给出的接收窗口值,以限制发送方向网络注入报文的速率。

命题追踪 利用接收窗口实现流量控制的过程(2016、2021)
        图 5.9 说明了如何利用滑动窗口机制进行流量控制。假设数据只从 A 发往 B,而 B 仅向 A 发送确认报文段,则 B 可通过设置确认报文段首部中的窗口字段来将 rwnd 通知给 A。rwnd 即接收方允许连续接收的能力,单位是字节。发送方 A 总是根据最新收到的 rwnd 值来限制自己发送窗口的大小,从而将未确认的数据量控制在 rwnd 大小之内,保证 A 不会使 B 的接收缓存溢出。设 A 向 B 发送数据,在连接建立时,B 告诉 A:“我的接收窗口 rwnd = 400”。接收方 B 进行了三次流量控制,这三个报文段都设置了 ACK = 1,只有在 ACK = 1 时确认号字段才有意义。第一次把窗口减到 rwnd = 300,第二次又减到 rwnd = 100,最后减到 rwnd = 0,即不允许发送方再发送数据。这使得发送方暂停发送的状态将持续到 B 重新发出一个新的窗口值为止。

        TCP 为每个连接设有一个持续计时器,只要发送方收到对方的零窗口通知,就启动持续计时器。若计时器超时,就发送一个零窗口探测报文段,而对方就在确认这个探测报文段时给出现在的窗口值。若窗口仍然为零,则发送方收到确认报文段后就重新设置持续计时器。
传输层和数据链路层的流量控制的区别是:传输层实现的是端到端,即两个进程之间的流量控制;数据链路层实现的是两个中间的相邻节点之间的流量控制。此外,数据链路层的滑动窗口协议的窗口大小不能动态变化,传输层的窗口大小则可以动态变化。

5.3.6 TCP 拥塞控制

        拥塞控制是指防止过多的数据注入网络,保证网络中的路由器或链路不致过载。出现拥塞时,端点并不了解拥塞发生的细节,对通信的端点来说,拥塞往往表现为通信时延的增加。
        拥塞控制与流量控制的区别:拥塞控制是让网络能够承受现有的网络负荷,是一个全局性的过程,涉及所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。相反,流量控制往往是指点对点的通信量的控制,是个端到端的问题(接收端控制发送端),它所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收。当然,拥塞控制和流量控制也有相似的地方,即它们都通过控制发送方发送数据的速率来达到控制效果。
        例如,某个链路的传输速率为 10Gb/s,某大型机向一台 PC 以 1Gb/s 的速率传送文件,显然网络的带宽是足够大的,因而不存在拥塞问题,但如此高的发送速率将导致 PC 可能来不及接收,因此必须进行流量控制。但若有 100 万台 PC 在此链路上以 1Mb/s 的速率传送文件,则现在的问题就变为网络的负载是否超过了现有网络所能承受的范围。
        TCP 进行拥塞控制的算法有四种:慢开始、拥塞避免、快重传和快恢复。
        发送方在确定发送报文段的速率时,既要考虑接收方的接收能力,又要从全局考虑不要使网络发生拥塞。因此,除了上节介绍的接收窗口,TCP 还要求发送方维持一个拥塞窗口(cwnd),其大小取决于网络的拥塞程度,并且动态地变化。发送方控制拥塞窗口的原则:只要网络未出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去,以提高网络的利用率。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入网络的分组数,以缓解网络出现的拥塞。

命题追踪 发送窗口、接收窗口和拥塞窗口的关系(2010、2014、2015、2016)
        发送窗口的上限值应取接收窗口 rwnd 和拥塞窗口 cwnd 中较小的一个,即
                        发送窗口的上限值 = min [rwnd, cwnd]
        接收窗口的大小可根据 TCP 报文首部的窗口字段通知发送方,而发送方如何维护拥塞窗口呢?这就是下面讲解的慢开始和拥塞避免算法。这里假设:数据为单方向传送,对方只传送确认报文;接收方总是有足够大的缓存空间,因而发送窗口的大小由网络的拥塞程度决定。
        为了便于理解,下面采用最大报文段长度 MSS 作为拥塞窗口大小的单位。

1.慢开始和拥塞避免
(1)慢开始算法

        慢开始算法的思路是当发送方刚开始发送数据时,因为并不清楚网络的负荷情况,若立即把大量数据注入网络,则有可能引发网络拥塞。具体方法是:先发送少量数据探测一下,若没有发生拥塞,则适当增大拥塞窗口,即由小到大逐渐增大拥塞窗口(发送窗口)。

命题追踪 慢开始算法的原理(2014、2015)
        例如,A 向 B 发送数据,发送方先令 cwnd = 1,即一个 MSS。A 发送第一个报文段,A 收到 B 对第一个报文段的确认后,把 cwnd 从 1 增大到 2。于是 A 接着发送两个报文段,A 收到 B 对这两个报文段的确认后,把 cwnd 从 2 增大到 4,下次就可一次发送 4 个报文段。
        慢开始的 “慢” 并不是指拥塞窗口 cwnd 的增长速率慢,而是指在 TCP 开始发送报文段时先设置 cwnd = 1,使得发送方一开始向网络注入的报文段少(目的是试探一下网络的拥塞情况),然后逐渐增大 cwnd,这对防止网络出现拥塞是一个非常有力的措施。使用慢开始算法后,每经过一个传输轮次(往返时延 RTT),cwnd 就会加倍,即 cwnd 的值随传输轮次指数增长。为了防止 cwnd 增长过大而引起网络拥塞,还需要设置一个慢开始门限 ssthresh(阈值)。这样,当慢开始一直把 cwnd 增大到一个规定的 ssthresh 时,然后改用拥塞避免算法。
(2)拥塞避免算法

命题追踪  慢开始和拥塞避免算法的原理 / 慢开始门限的作用(2017、2020、2023)
        拥塞避免算法的思路是让拥塞窗口 cwnd 缓慢增大,具体做法是:每经过一个往返时延 RTT 就把发送方的拥塞窗口 cwnd 加 1,而不是加倍,使拥塞窗口 cwnd 按线性规律缓慢增长(加法增大),这比慢开始算法的拥塞窗口增长速率要缓慢得多。
        根据 cwnd 的大小执行不同的算法,可归纳如下:

        当cwnd<ssthresh时,使用慢开始算法。

        当cwnd>ssthresh时,停止使用慢开始算法而改用拥塞避免算法。

        当cwnd=ssthresh时,既可使用慢开始算法,又可使用拥塞避免算法(常规做法)。

(3)网络拥塞的处理
        无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(未按时收到确认),就要首先把慢开始门限 ssthresh 设置为出现拥塞时的发送方的 cwnd 值的一半(但不能小于 2),然后把拥塞窗口 cwnd 重新设置为 1,执行慢开始算法。这样做的目的是迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完。

命题追踪 慢开始和拥塞避免阶段的平均传输速率分析(2016、2023)
慢开始和拥塞避免算法的实现过程举例如图 5.10 所示。

  • 初始时,拥塞窗口置为 1,即cwnd=1,慢开始门限置为 16,即ssthresh=16。

命题追踪 慢开始 / 拥塞避免阶段拥塞窗口的变化分析(2016、2023)

  • 慢开始阶段,发送方每收到一个对新报文段的确认 ACK,就把拥塞窗口 cwnd 值加 1,也即经过每个传输轮次(RTT),cwnd 呈指数规律增长。当 cwnd 增长到慢开始门限 ssthresh 时(当cwnd=16时),就改用拥塞避免算法,cwnd 按线性规律增长。

命题追踪 慢开始和拥塞避免算法的原理(2009、2022)

  • 当cwnd=24时,网络出现超时,调整 ssthresh 值为 12(超时时 cwnd 值的一半),同时 cwnd 置为 1,并执行慢开始算法;当cwnd=12时,改为执行拥塞避免算法。

注意:
        在慢开始阶段,若2cwnd>ssthresh,则下一个 RTT 后的 cwnd 等于 ssthresh,而不等于2cwnd。第 16 个轮次时cwnd=8、ssthresh=12,则第 17 个轮次时cwnd=12,而不等于 16。

        在慢开始和拥塞避免算法中使用了 “乘法减小” 和 “加法增大” 方法。“乘法减小” 是指不论是在慢开始阶段还是在拥塞避免阶段,只要出现超时(很可能出现了网络拥塞),就把慢开始门限值 ssthresh 设置为当前拥塞窗口的一半 (并执行慢开始算法)。当网络频繁出现拥塞时,ssthresh 值就下降得很快,以大大减少注入网络的分组数。而 “加法增大” 是指执行拥塞避免算法后,在收到对所有报文段的确认后(经过 1RTT),就把拥塞窗口 cwnd 增加一个 MSS 大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。
        拥塞避免并不能完全避免拥塞。利用以上措施要完全避免网络拥塞是不可能的。拥塞避免是指在拥塞避免阶段将拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。

2. 快重传和快恢复
        有时个别报文段会在网络中丢失,但实际上网络并未发生拥塞。若发送方迟迟收不到确认,就会产生超时,并误认为网络发生了拥塞,这就导致发送方错误地启动慢开始算法,从而降低传输效率。采用快重传算法可以让发送方尽早知道发生了个别报文段的丢失。
(1)快重传

命题追踪 快重传算法的原理、重传的时机(2019)
        快重传算法是使发送方尽快(尽早)进行重传,而不等超时计时器超时再重传。这就要求接收方不要等待自己发送数据时才进行捎带确认,而要立即发送确认,即使收到了失序的报文段也要立即发出对已收到报文段的重复确认。发送方一旦连续收到 3 个冗余 ACK(重复确认),就立即重传相应的报文段,而不是等该报文段的超时计时器超时再重传。
(2)快恢复
        快恢复算法的原理如下:当发送方连续收到 3 个冗余 ACK(重复确认)时,执行 “乘法减小” 方法,把慢开始门限 ssthresh 调整为当前 cwnd 的一半。这是为了预防网络发生拥塞。但发送方现在认为网络很可能没有发生(严重)拥塞,否则就不会有几个报文段连续到达接收方,也不会连续收到重复确认。因此与慢开始算法的不同之处是,它把 cwnd 值也调整为当前 cwnd 的一半(等于 ssthresh 值),然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。
        因为跳过了拥塞窗口 cwnd 从 1 起始的慢开始过程,所以被称为快恢复。快恢复算法的实现过程如图 5.11 所示,作为对比,虚线为慢开始的处理过程。

        实际上,这四种算法同时应用在 TCP 拥塞控制机制中,它们使用的总结:在 TCP 连接建立和网络出现超时,采用慢开始和拥塞避免算法(ssthresh=cwnd/2,cwnd = 1);当发送方收到 3 个冗余 ACK 时,采用快重传和快恢复算法(ssthresh = cwnd/2,cwnd = ssthresh)。
        在流量控制中,发送方发送数据的量由接收方决定;而在拥塞控制中,则由发送方自己通过检测网络状况来决定。再次提醒读者:接收方的缓存空间总是有限的。因此,发送方发送窗口的大小由流量控制和拥塞控制共同决定。当题目中同时出现接收窗口(rwnd)和拥塞窗口(cwnd)时,发送方发送窗口的实际大小是由 rwnd 和 cwnd 中较小的那一个确定的。

5.3.7 本节习题精选

一、单项选择题
01. 下列关于传输层协议的面向连接服务的描述中,错误的是( )。
A. 面向连接的服务需要经历 3 个阶段:连接建立、数据传输及连接释放
B. 当链路不发生错误时,面向连接的服务可以保证数据到达的顺序是正确的
C. 面向连接的服务有很高的效率和时间性能
D. 面向连接的服务提供了一个可靠的数据流

01. C
因为面向连接的服务需要建立连接,且需要保证数据的有序性和正确性,所以它比无连接的服务开销大,而速度和效率方面也要比无连接的服务差一些。

02. TCP 规定 HTTP( )进程的端口号为 80。
A. 客户机 B. 解析 C. 服务器 D. 主机

02. C
TCP 中端口号 80 标识 Web 服务器端的 HTTP 进程,客户端访问 Web 服务器的 HTTP 进程的端口号由客户端的操作系统动态分配。因此答案为选项 C。

03. 下列关于 TCP 的端口的叙述中,错误的是( )。
A. 客户端使用的端口号是动态规定的 B. 端口号长度为 16 位
C. 端口号用于在通信中识别进程 D. 局域网内的计算机不能使用相同端口号

03. D
客户端使用的端口号仅在客户进程运行时才动态地选择。应用进程通过端口号进行标识,端口号长度为 16 位。不同计算机的相同端口号是没有联系的,因此选项 D 错误。

04. 下列几种描述中,( )不是 TCP 服务的特点。
A. 字节流 B. 全双工 C. 可靠 D. 支持广播

04. D
TCP 提供的是一对一全双工可靠的字节流服务,所以 TCP 并不支持广播。

05. 下列几种描述中,( )不是 TCP 的特性。
A. 比 UDP 开销大 B. 强制重传错误分组
C. 在 TCP 首部中有目标主机 IP 地址 D. 把消息分成段并在目标主机中进行重组

05. C
在 TCP 首部中没有目标主机 IP 地址,这是 IP 首部的字段。TCP 采用确认机制,并对错误或超时的分组进行重传,以保证数据的可靠性。TCP 会根据网络的最大传输单元 MTU 和最大报文段长度 MSS 将消息分成适当大小的段(参考本章疑难点),并在目标主机中进行重组。

06. 下列几种字段中,包含在 TCP 首部中而不包含在 UDP 首部中的是( )。
A. 目的端口号 B. 序列号(序号)
C. 检验和 D. 目的 IP 地址

06. B
TCP 报文段和 UDP 数据报都包含源端口、目的端口、检验号。因为 UDP 提供不可靠的传输服务,不需要对报文编号,所以不会有序列号字段,而 TCP 提供可靠的传输服务,因此需要设置序列号字段。目的 IP 地址属于 IP 数据报中的内容。

07. 下列关于 TCP 报头格式的描述中,错误的是( )。
A. 报头长度为 20~60B,其中固定部分为 20B
B. 端口号字段依次表示源端口号与目的端口号
C. 报头长度总是 4 的倍数个字节
D. TCP 检验和伪首部中 IP 分组头的协议字段为 17

07. D
TCP 伪首部与 UDP 伪首部一样,包括 IP 分组首部的一部分。IP 首部中有一个协议字段,用于指明上层协议是 TCP 还是 UDP。17 代表 UDP,6 代表 TCP,所以选项 D 错误。对于 A 选项,因为数据偏移字段的单位是 4B,所以当偏移取最大值时 TCP 首部长度为 15×4 = 60B。由于使用填充,所以长度总是 4B 的倍数,选项 C 正确。

08. 当 TCP 报文段的标志字段中( )为 1,表示必须释放连接,然后重新建立连接。
A. URG B. RST C. ACK D. FIN

08. B
URG 是紧急位,其为 1 时表示报文段中有紧急数据,需要尽快发送。RST 是复位位,其为 1 时表示出现严重错误,必须释放连接,然后重新建立连接。ACK 是确认位,其为 1 时表示确认号(ack)字段有效。FIN 为终止位,其为 1 时代表发送方请求释放单向连接,此时并没有完全释放连接,只有当接收方发送完数据并同样将 FIN 位置为 1 时才会释放连接。

09. TCP 报文段首部中窗口字段的值的含义是( )。
A. 指明自己的拥塞窗口的尺寸 B. 指明对方的发送窗口的尺寸
C. 指明自己的接收窗口的尺寸 D. 指明对方的拥塞窗口的尺寸

09. C
TCP 报文段首部中窗口字段的值指的是自己接收窗口的尺寸。

10. 在采用 TCP 连接的数据传输阶段,若发送端的发送窗口值由 1000 变为 2000,则发送端在收到一个确认之前可以发送( )。
A. 2000 个 TCP 报文段 B. 2000B
C. 1000B D. 1000 个 TCP 报文段

10.B
TCP 使用滑动窗口机制来进行流量控制。在 ACK 应答信息中,TCP 在接收端用 ACK 加上接收方允许接收数据范围的最大值回送给发送方,发送方把这个最大值当作发送窗口值,表明发送端在未收到确认之前可以发送的最大字节数,即 2000B。

11. A 和 B 建立了 TCP 连接,当 A 收到确认号为 100 的确认报文段时,表示( )。
A. 报文段 99 已收到 B. 报文段 100 已收到
C. 末字节序号为 99 的报文段已收到 D. 末字节序号为 100 的报文段已收到

11. C
TCP 的确认号是指接收方下一次希望收到的报文段的数据部分第一个字节的编号,可以看出,前一个已收到的报文段的最后一个字节的编号为 99,所以选项 C 正确。报文段的序号是其数据部分第一个字节的编号。选项 A、B 不正确,因为有可能已收到的这个报文段的数据部分不止一个字节,则报文段的编号就不为 99,但可以说编号为 99 的字节已收到。

12. 当 TCP 在传送大量数据时,是以( )的大小将数据进行分割发送的,进行重发时同样也是以此为单位的。
A. MSS B. 字节 C. 比特 D. MTU

12. A
两端主机在发出建立 TCP 连接的请求时,会在 TCP 首部写入 MSS(最大报文段长度)选项,告诉对方自己的接口能够适应的 MSS 的大小,然后在二者之间选择一个较小的值投入使用,此后 TCP 将以 MSS 的大小对数据进行分割发送。MSS 是在三次握手时计算得出的。

13. 在 TCP 中,发送方的窗口大小取决于( )。
A. 仅接收方允许的窗口
B. 接收方允许的窗口和发送方允许的窗口
C. 接收方允许的窗口和拥塞窗口
D. 发送方允许的窗口和拥塞窗口

13. C
TCP 让每个发送方仅发送正确数量的数据,保持网络资源被利用但又不会过载。为了避免网络拥塞和接收方缓冲区溢出,TCP 发送方在任意时刻可以发送的最大数据流是接收方允许的窗口和拥塞窗口中的最小值。

14. TCP 利用滑动窗口来实现流量控制,只要发送方收到对方的零窗口通知,就启动( )计时器。若计时器超时,就发送一个零窗口探测报文段,以试图获得对方的窗口值。
A. 重传 B. 保活 C. 时间等待 D. 持续

14. D
TCP 为每个连接设有一个持续计时器,只要发送方收到对方的零窗口通知,就启动持续计时器。若计时器超时,则发送一个零窗口探测报文段,而对方就在确认这个探测报文段时给出现在的窗口值。若窗口仍然为零,则发送方收到确认报文段后就重新设置持续计时器。

15. TCP 在 40Gb/s 的线路上传送数据,若 TCP 充分利用了线路的带宽,则经过( )的时间 TCP 会发生序号绕回(使用了之前用过的字节序号,已知232/5×109=0.859)。
A. 859ms B. 85.9ms C. 8.59ms D. 0.859ms

15. A
在 40Gb/s 的线路上传送数据,每秒可传送5×109字节的数据,TCP 的序号字段有 32 位,共有232个不同的序号,则可发送的时间是232/(5×109)=0.859s=859ms。

16. TCP 的滑动窗口协议中,规定重传分组的数量最多可以( )。
A. 是任意的 B. 1 个
C. 大于滑动窗口的大小 D. 等于滑动窗口的大小

16. D
TCP 滑动窗口协议中发送方滑动窗口的大小规定了发送方最多能够传送的分组数量,只有窗口滑动了,才能往后继续发送。分组重传的最大值也是发送方能发送数据的最大值,因而重传分组的数量最多也不能超过滑动窗口的大小。

17. 下列关于 TCP 窗口与拥塞控制概念的描述中,错误的是( )。
A. 接收窗口(rwnd)通过 TCP 首部中的窗口字段通知数据的发送方
B. 发送窗口确定的依据是:发送窗口 = min [接收端窗口,拥塞窗口]
C. 拥塞窗口是接收端根据网络拥塞情况确定的窗口值
D. 拥塞窗口大小在开始时可以按指数规律增长

17. C
拥塞窗口是发送端根据网络拥塞情况确定的窗口值。

18. 下列关于 TCP 工作原理与过程的描述中,错误的是( )。
A. TCP 连接建立过程需要经过 “三次握手” 的过程
B. TCP 传输连接建立后,客户端与服务器端的应用进程进行全双工的字节流传输
C. TCP 传输连接的释放过程很复杂,只有客户端可以主动提出释放连接的请求
D. TCP 连接的释放需要经过 “四次挥手” 的过程

18. C
参与 TCP 连接的两个进程中的任何一个都能提出释放连接的请求。

19. TCP 使用三次握手协议来建立连接,设 A、B 双方发送报文的初始序列号分别为 X 和 Y,A 发送(①)的报文给 B,B 接收到报文后发送(②)的报文给 A,然后 A 发送一个确认报文给 B 便建立了连接(注意,ACK 的下标为捎带的序号)。
①A. SYN = 1,序号 = X         B. SYN = 1,序号 = X+1,ACKX​=1
C. SYN = 1,序号 = Y         D. SYN = 1,序号 = Y,ACKY+1​=1
②A. SYN = 1,序号 = X+1         B. SYN = 1,序号 = X+1,ACKX​=1
C. SYN = 1,序号 = Y,ACKX+1​=1         D. SYN = 1,序号 = Y,ACKY+1​=1

19. A、C
TCP 使用三次握手来建立连接,第一次握手 A 发给 B 的 TCP 报文中应置其首部 SYN 位为 1,并选择序号 seq = X,表明传送数据时的第一个数据字节的序号是 X;在第二次握手中,即 B 接收到报文后,发给 A 的确认报文段中应使 SYN = 1,使 ACK = 1,且确认号 ACK = X + 1,即ACKX+1​=1(ACK 的下标为捎带的序号),同时告诉自己选择的序号 seq = Y。

20. TCP “三次握手” 过程中,第二次 “握手” 时,发送的报文段中( )标志位被置为 1。
A. SYN B. ACK
C. ACK 和 RST D. SYN 和 ACK

20. D
在 TCP 的 “三次握手” 中,第二次握手时,SYN 和 ACK 均被置为 1。

21. TCP 采用三报文握手建立连接,其中第三个报文是( )。
A. TCP 连接请求 B. 对 TCP 连接请求的确认
C. 对 TCP 连接请求确认的确认 D. TCP 普通数据

21. C
TCP 采用三报文握手建立连接,其中第一个报文是 TCP 连接请求,第二个报文是对 TCP 连接请求的确认,第三个报文是对 TCP 连接请求确认的确认。

22. 主机 A 和 B 之间建立了一个 TCP 连接,A 向 B 发送的第一个 SYN 报文段中的序号值(seq)等于 211,数据传输结束在释放连接时,A 向 B 发送的第 4 次挥手报文段的 seq 等于 985,则在本次通信过程中,A 向 B 总共发送了( )字节的数据。
A. 771 B. 772 C. 773 D. 774

22. B
A 向 B 发送的第一个 SYN 段虽然不携带数据,但仍会消耗一个序号 211,A 向 B 发送的第 4次挥手报文段的 seq 等于 985,说明之前发送的数据的序号为 212~984,因为在断开连接时发送的第一个 FIN 段会消耗一个序号,因此发送的总数据量为 984 - 212 = 772B。

23. A 和 B 之间建立了 TCP 连接,A 向 B 发送了一个报文段,其中序号字段 seq = 200,确认号字段 ack = 201,数据部分有 2 字节,那么在 B 对该报文的确认报文段中( )。
A. seq = 202,ack = 200         B. seq = 201,ack = 201
C. seq = 201,ack = 202         D. seq = 202,ack = 201

23. C
在 A 发向 B 的报文中,seq 表示发送的报文段中数据部分的第一个字节在 A 的发送缓存区中的编号,ack 表示 A 期望收到的下一个报文段的数据部分的第一个字节在 B 的发送缓存区中的编号。因此,同一个报文段中的 seq 和 ack 的值是没有联系的。在 B 发给 A 的报文(捎带确认)中,seq 值应和 A 发向 B 的报文中的 ack 值相同,即 201;ack 值表示 B 期望下次收到 A 发出的报文段的第一个字节的编号,应是 200 + 2 = 202。

24. TCP 的通信双方,有一方发送了带有 FIN 标志的数据段后,表示( )。
A. 将断开通信双方的 TCP 连接
B. 单方面释放连接,表示本方已经无数据发送,但可以接收对方的数据
C. 中止数据发送,双方都不能发送数据
D. 连接被重新建立

24. B
FIN 位用来释放一个连接,它表示本方已没有数据要传输。然而,在关闭一个连接后,对方还可以继续发送数据,所以还有可能接收到数据。

25. 某客户与服务器建立 TCP 连接,当连接断开时,客户先向服务器发送一个标志 FIN = 1 的报文段 A,此报文段中 seq 值为 x,ack 值为 y。一段时间后,客户收到了服务器发来的一个标志 FIN = 1 的报文段 B,则下列关于报文段 B 的说法中,正确的是( )。
A. B 中的 seq 值一定为 y B. B 中的 seq 值一定为y+1
C. B 中的 ack 值一定为 x D. B 中的 ack 值一定为x+1

25. D
客户向服务器发送 FIN 报文段 A,表示客户不再通过本连接向服务器发送数据,但服务器仍有可能继续向客户发送数据,假设服务器在发送 FIN 报文段 B 之前已向客户发送了 k 字节的数据,则报文段 B 中的 seq 值为 y + k,选项 A、B 错误。报文段 A 是客户通过本连接发给服务器的最后一个报文段,且会消耗一个序号,因此报文段 B 中的 ack 值一定为 x + 1,选项 C 错误,选项 D 正确。

26. 某应用程序每秒产生一个 60B 的数据块,每个数据块被封装在一个 TCP 报文中,然后封装在一个 IP 数据报中,则最后每个数据报所包含的应用数据所占的百分比是( )。(注意:TCP 报文和 IP 数据报的首部没有附加字段。)
A. 20% B. 40% C. 60% D. 80%

26. C
本题中,一个 TCP 报文的首部长度是 20B,一个 IP 数据报的首部长度也是 20B,再加上 60B 的数据,一个 IP 数据报的总长度为 100B,可知数据占 60%。

27. 假设 TCP 客户与 TCP 服务器的通信已结束,端到端的往返时间为 RTT。t 时刻 TCP 客户请求断开连接,则从 t 时刻起 TCP 服务器释放该连接的最短时间是( )。
A. 0.5RTT B. 1RTT C. 1.5RTT D. 2RTT

27. C
t 时刻 TCP 客户请求断开连接,发出连接释放 FIN 报文段;题目问的是最短时间,所以当 TCP 服务器收到 TCP 客户发来的 FIN 报文段后不再发送数据,因此同时发出确认 ACK 报文段和连接释放 FIN 报文段,即直接跳过 CLOSE - WAIT 状态;TCP 客户收到 FIN 报文段后必须发出确认;TCP 服务器收到确认后就进入 CLOSED 状态,共经历 1.5RTT。

28. 甲发起与乙的 TCP 连接,甲选择的初始序号为 200,若甲和乙建立连接过程中最后一个报文段不携带数据,则 TCP 连接建立后,甲给乙发送的数据报文段的序号为( )。
A. 203 B. 202 C. 201 D. 200

28. C
甲选择的初始序号为 200,建立 TCP 连接的第一个报文段不能携带数据,但要消耗一个序号。甲给乙发送的第二个报文段(第三次握手)的序号是 201,该报文段可以携带数据,若不携带数据,则不消耗序号,题中该报文段不携带数据,因此下一个数据报文段的序号仍是 201。

29. A 发起与 B 的 TCP 连接,A 选择的初始序号为 1666,连接建立过程中未发送任何数据,TCP 连接建立后,A 给 B 发送了 1000B 数据,B 正确接收后发送给 A 的确认序号是 ( )。
A. 1667 B. 2666 C. 2667 D. 2668

29. C
A 的初始序号为 1666,建立连接的第一个报文段不携带数据,但要消耗一个序号。A 给 B 发送的第二个报文段的序号是 1667,该报文段不携带数据,因此不消耗序号。下一个数据报文段的序号仍是 1667,1000B 的序号范围是 1667~2666,所以 B 接收后发送给 A 的确认序号是 2667。

30. 一个 TCP 连接的数据传输阶段,若发送端的发送窗口值由 2000 变为 3000,则意味着发送端可以( )。
A. 在收到一个确认之前可以发送 3000 个 TCP 报文段
B. 在收到一个确认之前可以发送 1000B
C. 在收到一个确认之前可以发送 3000B
D. 在收到一个确认之前可以发送 2000 个 TCP 报文段

30. C
TCP 提供的是可靠的字节流传输服务,使用窗口机制进行流量控制与拥塞控制。TCP 的滑动窗口机制是面向字节的,因此窗口大小的单位为字节。假设发送窗口的大小为 N,这意味着发送端可以在没有收到确认的情况下连续发送 N 字节。

31.甲和乙建立了 TCP 连接,甲向乙发送了 3 个连续的 TCP 段,分别包含 200 字节、300 字节、400 字节的有效载荷,第 3 个段的序号为 1000。若乙仅正确接收到第 1 个和第 3 个段,则乙发送给甲的确认号是( )。
A. 500
B. 600
C. 700
D. 800

31. C
乙仅正确接收到第 1 个和第 3 个段,所以乙下次期望收到第 2 个段,乙发送给甲的确认号即第 2 个段的序号。第 3 个段的序号为 1000,则第 2 个段的序号为 1000 - 300 = 700,所以确认号为 700。

32.在一个 TCP 连接中,MSS 为 1KB,当拥塞窗口为 34KB 时发生了超时事件。若在接下来的 4RTT 内报文段传输都是成功的,则当这些报文段均得到确认后,拥塞窗口的大小是( )。
A. 8KB
B. 9KB
C. 16KB
D. 17KB

32. C
若在拥塞窗口为 34KB 时发生了超时事件,则慢开始门限值就被设定为 17KB,且 cwnd 重新设为 1KB。按照慢开始算法,第 1 个 RTT 后 cwnd = 2KB,第 2 个 RTT 后 cwnd = 4KB,第 3 个 RTT 后 cwnd = 8KB。当第 4 个 RTT 发出去的 8 个报文段的确认都收到后,cwnd = 16KB(此时还未超过慢开始门限值)。注意,题中 “这些报文段均得到确认后” 这句话很重要。

33.若甲向乙发起了一条 TCP 连接,最大段长为 1KB,乙每收到一个数据段都会发出一个接收窗口为 10KB 的确认段,若甲在 t 时刻发生超时,此时拥塞窗口为 16KB。则从 t 时刻起,在不再发生超时的情况下,经过 10RTT 后,甲的发送窗口是( )。
A. 10KB
B. 12KB
C. 14KB
D. 15KB

33. A
接收窗口等于 10KB。发生超时后,拥塞窗口重设为 1,经过 10RTT 后,拥塞窗口一定大于 10KB。但甲的发送窗口取拥塞窗口和接收窗口中的较小值,即 10KB。

34.设 TCP 的拥塞窗口的慢开始门限值初始为 8(单位为报文段),当拥塞窗口上升到 12 时发生超时,TCP 开始慢开始和拥塞避免,则第 13 次传输时拥塞窗口的大小为( )。
A. 4
B. 6
C. 7
D. 8

34. C
在慢开始和拥塞避免算法中,拥塞窗口初始为 1,窗口大小开始按指数增长。当拥塞窗口大于慢开始门限后停止使用慢开始算法,改用拥塞避免算法。此处慢开始的门限值初始为 8,当拥塞窗口增大到 8 时改用拥塞避免算法,窗口大小按线性增长,每次增加 1 个报文段,当增加到 12 时,出现超时,重新设门限值为 6(12 的一半),拥塞窗口再重新设为 1,执行慢开始算法,到门限值 6 时执行拥塞避免算法。因此,拥塞窗口大小的变化为 1, 2, 4, 8, 9, 10, 11, 12, 1, 2, 4, 6, 7, 8, 9, … ,其中第 13 次传输时(第 12 个传输轮次后)拥塞窗口的大小为 7。

35. 甲和乙刚建立 TCP 连接,并约定最大段长为 2KB,假设乙总是及时清空缓存,保证接收窗口始终为 20KB,ssthresh 为 16KB,若双向传输时间为 10ms,发送时延忽略不计,且没有发生拥塞的情况,则经过( )甲的发送窗口第一次达到 20KB。
A. 40ms B. 50ms C. 60ms D. 70ms

35. B
当拥塞窗口小于 ssthresh 时,拥塞窗口以指数方式增长,拥塞窗口从 2KB 到 16KB 需经过 3RTT,超过 16KB 后,每经过 1RTT,拥塞窗口加 1MSS,所以从 16KB 到 20KB 经过了 2RTT,共经过 5RTT,RTT = 10ms,故经过 50ms 后甲的发送窗口第一次为 20KB。

36. 假设一个 TCP 连接的传输过程在慢开始阶段,在tRTT时刻到(t+1)RTT时刻之间发送了k个数据段,假设仍然保持在慢开始阶段,预期在(t+1)RTT时刻到(t+2)RTT时刻之间将发送( )个数据段(假设接收方有足够的缓存)。
A. k B. k+1 C. 2k D. 2k

36. D
在慢开始阶段,每收到一个对新报文段的确认,拥塞窗口就加 1,因此每经过 1RTT,拥塞窗口就加倍。在tRTT时刻到(t+1)RTT时刻之间发送了k个数据段,因此在这个 RTT 后,拥塞窗口由k变为2k,所以在下一个 RTT 内预期将发送2k个数据段。

37. 下列关于 TCP 的拥塞控制机制的描述中,错误的是( )。
A. TCP 刚建立连接进入慢开始阶段
B. 慢开始阶段拥塞窗口指数级增加
C. 超时发生时,新门限值(慢开始和拥塞避免阶段的分界点)等于旧门限值的一半
D. 拥塞避免阶段拥塞窗口线性增加

37. C
超时发生时,新门限值通常设置为此时拥塞窗口值的一半,而不是旧门限值的一半。

38. 在一个 TCP 连接中,MSS 为 1KB,当拥塞窗口为 34KB 时收到了 3 个冗余 ACK 报文。若在接下来的 4RTT 内报文段传输都是成功的,则当这些报文段均得到确认后,拥塞窗口的大小是( )。
A. 8KB B. 16KB C. 20KB D. 21KB

38. D
条件 “收到了 3 个冗余 ACK 报文” 说明此时应执行快恢复算法,因此慢开始门限值设为 17KB,并且此时 cwnd 也被设为 17KB,第 1 个 RTT 后 cwnd = 18KB,第 2 个 RTT 后 cwnd = 19KB,第 3 个 RTT 后 cwnd = 20KB,第 4 个 RTT 后,发出的报文全部得到确认,cwnd 再增加 1KB,变为 21KB。注意 cwnd 的增加都发生在收到确认报文后。

39. A 和 B 建立 TCP 连接,MSS 为 1KB。某时,慢开始门限值为 2KB,A 的拥塞窗口为 4KB,在接下来的 1RTT 内,A 向 B 发送了 4KB 的数据(TCP 的数据部分),并且得到了 B 的确认,确认报文中的窗口字段的值为 2KB。在下一个 RTT 中,A 最多能向 B 发送( )数据。
A. 2KB B. 8KB C. 5KB D. 4KB

39. A
本题中出现了拥塞窗口和接收窗口,为了保证 B 的接收缓存不发生溢出,发送窗口应该取两者的最小值。先看拥塞窗口,由于慢开始门限值为 2KB,第 1 个 RTT 中 A 拥塞窗口为 4KB,按照拥塞避免算法,收到 B 的确认报文后,拥塞窗口增长为 5KB。再看接收端窗口,B 通过确认报文中窗口字段向 A 通知接收端窗口,则接收端窗口为 2KB。因此在下一次发送数据时,A 的发送窗口应该为 2KB,即 1RTT 内最多发送 2KB。所以选项 A 正确。

40. 假设在没有发生拥塞的情况下,在一条往返时延 RTT 为 10ms 的线路上采用慢开始控制策略。若接收窗口的大小为 24KB,最大报文段 MSS 为 2KB,则发送方能发送出第一个完全窗口(也就是发送窗口达到 24KB)需要的时间是( )。
A. 30ms B. 40ms C. 50ms D. 60ms

40. B
按照慢开始算法,发送窗口的初始值为拥塞窗口的初始值,即 MSS 的大小 2KB,然后依次增大为 4KB、8KB、16KB,然后是接收窗口的大小 24KB,即达到第一个完全窗口。因此达到第一个完全窗口所需要的时间为 4RTT = 40ms。

41. 甲向乙发起一个 TCP 连接,最大段长 MSS = 1KB,RTT = 3ms,乙的接收缓存为 16KB,且乙的接收缓存仅有数据存入而无数据取出,则甲从连接建立成功至发送窗口达到 8KB,需经过的最小时间以及此时乙的接收缓存的可用空间分别为( )。
A. 3ms, 15KB B. 9ms, 9KB C. 6ms, 13KB D. 12ms, 8KB

41. B
本题要求的是最小时间,且题目未给出拥塞窗口的门限值,所以拥塞窗口一直按指数增长是最快的。拥塞窗口从 1KB 增长到 8KB 需要 3 个 RTT,即 9ms,并在第 1 个 RTT 内发送 1KB,在第 2 个 RTT 内发送 2KB,在第 3 个 RTT 内发送 4KB,累积发送 1 + 2 + 4 = 7KB,这时乙的接收缓存还剩 16 - 7 = 9KB,此时的发送窗口 = min {拥塞窗口,接收窗口} = 8KB,所以选 B。

42. 【2009 统考真题】主机甲与主机乙之间已建立一个 TCP 连接,主机甲向主机乙发送了两个连续的 TCP 段,分别包含 300B 和 500B 的有效载荷,第一个段的序列号为 200,主机乙正确接收到这两个数据段后,发送给主机甲的确认序列号是( )。
A. 500 B. 700 C. 800 D. 1000

42. D
返回的确认序列号是接收方期待收到对方下一个报文段数据部分的第一个字节的序号,因此乙在正确接收到两个段后,返回给甲的确认序列号是 200 + 300 + 500 = 1000。

43. 【2009 统考真题】一个 TCP 连接总以 1KB 的最大段长发送 TCP 段,发送方有足够多的数据要发送,当拥塞窗口为 16KB 时发生了超时,若接下来的 4RTT 时间内的 TCP 段的传输都是成功的,则当第 4 个 RTT 时间内发送的所有 TCP 段都得到肯定应答时,拥塞窗口大小是( )。
A. 7KB B. 8KB C. 9KB D. 16KB

43. C
发生超时后,慢开始门限 ssthresh 变为 16KB/2 = 8KB,拥塞窗口变为 1KB。在接下来的 3RTT 内,执行慢开始算法,拥塞窗口大小依次为 2KB、4KB、8KB,因为慢开始门限 ssthresh 为 8KB,所以之后转而执行拥塞避免算法,即拥塞窗口开始 “加法增大”。因此第 4 个 RTT 结束后,拥塞窗口的大小为 9KB。

44. 【2010 统考真题】主机甲和主机乙之间已建立一个 TCP 连接,TCP 最大段长为 1000B。若主机甲的当前拥塞窗口为 4000B,在主机甲向主机乙连续发送两个最大段后,成功收到主机乙发送的第一个段的确认段,确认段中通告的接收窗口大小为 2000B,则此时主机甲还可以向主机乙发送的最大字节数是( )。
A. 1000 B. 2000 C. 3000 D. 4000

44. A
发送方的发送窗口的上限值取接收窗口和拥塞窗口这两个值中的较小一个,于是此时发送方的发送窗口为 min {4000, 2000} = 2000B。因为确认段是对第一个段的确认,所以 2000B 的含义是甲发送第一个段后还能再发送 2000B,又因为之前甲连续发送了两个最大段,也就是说,第二个段还未收到确认,所以甲还能继续向乙发送的最大字节数是 2000 - 1000 = 1000B。

45. 【2011 统考真题】主机甲向主机乙发送一个(SYN = 1,seq = 11220)的 TCP 段,期望与主机乙建立 TCP 连接,若主机乙接受该连接请求,则主机乙向主机甲发送的正确的 TCP 段可能是( )。
A.(SYN = 0,ACK = 0,seq = 11221,ack = 11221)
B.(SYN = 1,ACK = 1,seq = 11220,ack = 11220)
C.(SYN = 1,ACK = 1,seq = 11221,ack = 11221)
D.(SYN = 0,ACK = 0,seq = 11220,ack = 11220)

45. C
在确认报文段中,同步位 SYN 和确认位 ACK 必须都是 1;返回的确认号 ack 是甲发送的初始序号 seq = 11220 加 1,即 ack = 11221;同时乙也要选择并消耗一个初始序号 seq,seq 值由乙的 TCP 进程任意给出,它与确认号、请求报文段的序号没有任何关系。

46. 【2011 统考真题】主机甲与主机乙之间已建立一个 TCP 连接,主机甲向主机乙发送了 3 个连续的 TCP 段,分别包含 300B、400B 和 500B 的有效载荷,第 3 个段的序号为 900。若主机乙仅正确接收到第 1 个段和第 3 个段,则主机乙发送给主机甲的确认序号是( )。
A. 300 B. 500 C. 1200 D. 1400

46. B
TCP 首部的序号字段是指本报文段数据部分的第一个字节的序号,而确认号是期待收到对方下一个报文段的第一个字节的序号。第三个段的序号为 900,则第二个段的序号为 900 - 400 = 500,现在主机乙期待收到第二个段,因此发给甲的确认号是 500。

47. 【2013 统考真题】主机甲与主机乙之间已建立一个 TCP 连接,双方持续有数据传输,且数据无差错与丢失。若甲收到一个来自乙的 TCP 段,该段的序号为 1913、确认序号为 2046、有效载荷为 100B,则甲立即发送给乙的 TCP 段的序号和确认序号分别是( )。
A. 2046、2012 B. 2046、2013 C. 2047、2012 D. 2047、2013

47. B
确认序号 ack 是期望收到对方下一个报文段的数据的第一个字节的序号,序号 seq 是指本报文段所发送的数据的第一个字节的序号。甲收到一个来自乙的 TCP 段,该段的序号 seq = 1913、确认序号 ack = 2046、有效载荷为 100B,表明到序号 1913 + 100 - 1 = 2012 为止的所有数据甲均已收到,而乙期望收到下一个报文段的序号从 2046 开始。因此甲发给乙的 TCP 段的序号seq1​=ack=2046和确认序号ack1​=seq+100=2013。

48. 【2014 统考真题】主机甲和乙建立了 TCP 连接,甲始终以 MSS = 1KB 大小的段发送数据,并有数据重发机制;乙每收到一个数据段都会发出一个接收窗口为 10KB 的确认段。若甲在t时刻发生超时的时候拥塞窗口为 8KB,则从t时刻起,不再发生超时的情况下,经过 10RTT 后,甲的发送窗口是( )。
A. 10KB B. 12KB C. 14KB D. 15KB

48. A
当t时刻发生超时,把 ssthresh 设为 8 的一半,即 4,把拥塞窗口设为 1KB。然后经历 10RTT 后,拥塞窗口的大小依次为 2, 4, 5, 6, 7, 8, 9, 10, 11, 12,而发送窗口取当时的拥塞窗口和接收窗口的最小值,接收窗口始终为 10KB,所以此时的发送窗口为 10KB。
实际上,接收窗口一直为 10KB,发送窗口必然小于或等于 10KB,只有选项 A 满足条件。

49. 【2015 统考真题】主机甲和主机乙新建一个 TCP 连接,甲的拥塞控制初始阈值为 32KB,甲向乙始终以 MSS = 1KB 大小的段发送数据,并一直有数据发送;乙为该连接分配 16KB 接收缓存,并对每个数据段进行确认,忽略段传输延迟。若乙收到的数据全部存入缓存,不被取走,则甲从连接建立成功时刻起,未出现发送超时的情况下,经过 4RTT 后,甲的发送窗口是( )。
A. 1KB B. 8KB C. 16KB D. 32KB

49. A
发送窗口 = min {接收窗口,拥塞窗口}。因为乙的接收缓存仅有数据存入而不被取走,所以每个 RTT 后的接收窗口等于接收缓存 - 累积收到的数据。在前 4 个 RTT 中,因为拥塞窗口一直小于接收窗口,所以发送窗口就等于拥塞窗口的大小,4RTT 后,乙收到的数据全部存入缓存不被取走,接收窗口还剩 1KB(16 - 1 - 2 - 4 - 8 = 1)缓存,使得甲的发送窗口为 1KB。

50. 【2017 统考真题】若甲向乙发起一个 TCP 连接,最大段长 MSS = 1KB,RTT = 5ms,乙开辟的接收缓存为 64KB,则甲从连接建立成功至发送窗口达到 32KB,需经过的时间至少是 ( )。
A. 25ms B. 35ms C. 160ms D. 165ms

50. A
发送窗口 = min {接收窗口,拥塞窗口},题中接收窗口(接收缓存)为 64KB,注意本题没有说明 “接收缓存仅有数据存入而不被取走”,因此不用考虑之前发送的数据占用缓存。按照慢开始算法,初始拥塞窗口为最大报文段长度 1KB,每经过 1RTT,拥塞窗口加倍,因此若没有发生超时事件,则至少经过5RTT,拥塞窗口才能达到32KB。

51. 【2019 统考真题】某客户通过一个 TCP 连接向服务器发送数据的部分过程如下图所示。客户在t0​时刻第一次收到确认序列号 ack_seq = 100 的段,并发送序列号 seq = 100 的段,但发生丢失。若 TCP 支持快速重传,则客户重新发送 seq = 100 段的时刻是( )。
A. t1​ B. t2​ C. t3​ D. t4​

51.C
TCP 规定当发送方收到对同一个报文段的 3 个重复确认时,就可以认为这个被确认报文段之后的报文已丢失,立即执行快速重传算法。t3​时刻连续收到来自服务器的三个确认序号 ack_seq = 100 的段(注意,t0​时刻首次收到的 ack_seq = 100 的段并不计入冗余 ACK),发送方认为 seq = 100 的段已经丢失,执行快速重传算法,重新发送 seq = 100 的段。

52. 【2019 统考真题】若主机甲主动发起一个与主机乙的 TCP 连接,甲、乙选择的初始序列号分别为 2018 和 2046,则第三次握手 TCP 段的确认序列号是( )。
A. 2018 B. 2019 C. 2046 D. 2047

52.D
根据 TCP 连接建立的 “三次握手” 原理,第三次握手时甲发出的确认序列号应为第二次握手时乙发出的序列号 + 1,即 2047。

53. 【2020 统考真题】若主机甲与主机乙已建立一条 TCP 连接,最大段长(MSS)为 1KB,往返时间(RTT)为 2ms,则在不出现拥塞的前提下,拥塞窗口从 8KB 增长到 32KB 所需的最长时间是( )。
A. 4ms B. 8ms C. 24ms D. 48ms

53.D
因为慢开始门限 ssthresh 可以根据需求设置,为了求拥塞窗口从 8KB 增长到 32KB 所需的最长时间,可以假定慢开始门限小于或等于 8KB,只要不出现拥塞,拥塞窗口就都是加法增大,每经历一个传输轮次(RTT),拥塞窗口逐次加 1,因此所需的最长时间为 (32 - 8)×2ms = 48ms。

54. 【2020 统考真题】若主机甲与主机乙建立 TCP 连接时,发送的 SYN 段中的序号为 1000,在断开连接时,主机甲发送给主机乙的 FIN 段中的序号为 5001,则在无任何重传的情况下,甲向乙已经发送的应用层数据的字节数为( )。
A. 4002 B. 4001 C. 4000 D. 3999

54.C
甲与乙建立 TCP 连接时发送的 SYN 段中的序号为 1000(TCP 规定,SYN 段不能携带数据,但要消耗一个序号),则在数据传输阶段所用起始序号为 1001。断开连接时,甲发送给乙的 FIN 段中的序号为 5001(TCP 规定,FIN 段即使不携带数据,也要消耗一个序号),因此已发送数据的最后一个字节的序号为 5000,即甲向乙已发送的数据字节序号为 1001 - 5000,共 4000 字节。

55. 【2020 统考真题】若客户首先向服务器发送 FIN 段请求断开 TCP 连接,则当客户收到服务器发送的 FIN 段并向服务器发送 ACK 段后,客户的 TCP 状态转换为( )。
A. CLOSE_WAIT B. TIME_WAIT C. FIN_WAIT_1 D. FIN_WAIT_2

55.B
TCP 连接释放的过程在 5.3.3 节中介绍。当客户机收到服务器发送的 FIN 段并向服务器发送 ACK 段时,客户机的 TCP 状态变为 TIME_WAIT,此时 TCP 连接还未释放,必须经过时间等待计时器设置的时间 2MSL(最长报文段寿命)后,客户机才进入 CLOSED(连接关闭)状态。

56. 【2021 统考真题】若大小为 12B 的应用层数据分别通过 1 个 UDP 数据报和 1 个 TCP 段传输,则该 UDP 数据报和 TCP 段实现的有效载荷(应用层数据)最大传输效率分别是( )。
A. 37.5%, 16.7% B. 37.5%, 37.5% C. 60.0%, 16.7% D. 60.0%, 37.5%

56.D
当应用层数据交给传输层时,放在报文段的数据部分。UDP 首部有 8B,TCP 首部最短有 20B。为了达到最大传输效率,通过 UDP 传输时,总长度为 20B,最大传输效率是 12B/20B = 60%。通过 TCP 传输时,总长度为 32B,最大传输效率是 12B/32B = 37.5%。

57. 【2021 统考真题】设主机甲通过 TCP 向主机乙发送数据,部分过程如下图所示。甲在t0​时刻发送一个序号 seq = 501、封装 200B 数据的段,在t1​时刻收到乙发送的序号 seq = 601、确认序号 ack_seq = 501、接收窗口 rcvwd = 500B 的段,则甲在未收到新的确认段之前,可以继续向乙发送的数据序号范围是( )。

A. 501~1000 B. 601~1100 C. 701~1000 D. 801~1100

57.C
主机甲发送 200B 数据的段后,继续发送数据的段的序号 seq = 701。因为甲收到乙发来的确认序号为 501、接收窗口为 500 的段,即从序号 501 开始,甲累积还能发送 500B 的数据。因为甲此时已发送从序号 501 开始的 200B 数据,所以甲在未收到新的确认段之前,还能发送的数据字节数为 500 - 200 = 300B,还能发送的数据序号范围是 701 - 1000。

58.【2022 统考真题】假设主机甲和主机乙已建立一个 TCP 连接,最大段长 MSS = 1KB,甲一直向乙发送数据,当甲的拥塞窗口为 16KB 时,计时器发生了超时,则甲的拥塞窗口再次增长到 16KB 所需要的时间至少是( )。
A. 4 RTT B. 5 RTT C. 11 RTT D. 16 RTT

58.C
时刻 0 发生了超时,门限值 ssthresh 变为拥塞窗口 cwnd 的一半即 8,同时 cwnd 置为 1,执行慢开始算法,cwnd 指数增长,经过 3RTT,增长到 ssthresh 值;之后执行拥塞避免算法,cwnd 线性增长,再经过 8RTT,增长到 16,共花费 11RTT,如下表所示。

59.【2022 统考真题】假设客户 C 和服务器 S 已建立一个 TCP 连接,通信往返时间 RTT = 50ms,最长报文段寿命 MSL = 800ms,数据传输结束后,C 主动请求断开连接。若从 C 主动向 S 发出 FIN 段时刻算起,则 C 和 S 进入 CLOSED 状态所需的时间至少分别是( )。
A. 850 ms, 50 ms B. 1650 ms, 50 ms
C. 850 ms, 75 ms D. 1650 ms, 75 ms

59.D
TCP 连接的释放过程如书中图 5.7 所示。题目问的是最少时间,所以当服务器 S 收到客户 C 发送的 FIN 请求后不再发送数据,即服务器 S 同时发出确认 ACK 报文段和连接释放 FIN 报文段,忽略 FIN - WAIT - 2 和 CLOSE - WAIT 状态。客户 C 收到服务器 S 发来的 FIN 报文段后,进入 CLOSED 状态还需等到 TIME - WAIT 结束,总用时至少为 1RTT + 2MSL = 50 + 800×2 = 1650ms。服务器 S 进入 CLOSED 状态需要经过 3 次报文段的传输时间,即 1.5RTT = 75ms。

60.【2024 统考真题】假设主机 H 通过 TCP 向服务器发送长度为 3000B 的报文,往返时间 RTT = 10ms,最长报文段寿命 MSL = 30s,最大报文段长度 MSS = 1000B,忽略 TCP 段的传输时延,报文传输结束后 H 首先请求断开连接,则从 H 请求建立 TCP 连接时刻起到,H 进入 CLOSED 状态为止,所需的时间至少是( )。
A. 30.03s B. 30.04s C. 60.03s D. 60.04s

60.D
建立 TCP 连接的前两次握手需要 1RTT,第三次握手的报文段可以携带 MSS = 1000B 的数据,H 收到该报文段的确认后,发送窗口增大到 2000B,因此第 3 个 RTT 可以发送 2000B 的数据,经 3RTT 后,3000B 的报文传输结束。第 4 个 RTT 开始时,H 向服务器发送 FIN 报文段请求断开连接,题目问的是最少时间,因此服务器收到 FIN 请求后不再发送数据,即服务器同时发出连接释放 ACK 报文段和 FIN 报文段。H 收到服务器发来的 FIN 报文段后开启时间等待计时器,等待 2MSL 的时间(60s),进入 CLOSED 状态,总时间为 40ms + 60s = 60.04s。

二、综合应用题
01. 在使用 TCP 传输数据时,若有一个确认报文段丢失,则也不一定会引起与该确认报文段对应的的数据的重传。试说明理由。

01.【解答】
        这是因为发送方可能还未重传时,就收到了对更高序号的确认。例如主机 A 连续发送两个报文段(SEQ = 92,DATA 共 8B)和(SEQ = 100,DATA 共 20B),均正确到达主机 B。B 连续发送两个确认(ACK = 100 和 ACK = 120),但前一个确认在传送时丢失。例如 A 在第一个报文段(SEQ = 92,DATA 共 8B)超时之前收到了对第二个报文段的确认(ACK = 120),此时 A 知道,119 号和在 119 号之前的所有字节均已被 B 正确接收,因此 A 不会再重传第一个报文段。

02. 若收到的报文段无差错,只是报文段失序,则 TCP 对此未做明确规定,而是让 TCP 的实现者自行确定。试讨论两种可能的方法的优劣:
1)将失序报文段丢弃。
2)先将失序报文段暂存于接收缓存内,待所缺序号的报文段收齐后再一起上交应用层。

02.【解答】
        第一种方法将失序报文段丢弃,会引起被丢弃报文段的重复传送,增加对网络带宽的消耗,但由于用不着将该报文段暂存,可避免对接收方缓冲区的占用。
        第二种方法先将失序报文段暂存于接收缓存,待所缺序号的报文段收齐后再一起上交应用层;这样可以减少发送方的重传次数,减少对网络带宽的消耗,但增加了接收方缓冲区的开销。

03. 一个 TCP 连接要发送 3200B 的数据。第一个字节的编号为 10010。若前两个报文段各携带 1000B 的数据,最后一个报文段携带剩下的数据,写出每个报文段的序号。

03.【解答】
        TCP 报文段的序号是指其数据部分的第一个字节的序号。因此第一个报文段的序号是 10010,序号范围 10010 - 11009;第二个报文段的序号是 10010 + 1000 = 11010,序号范围 11010 - 12009;第三个报文段的序号为 11010 + 1000 = 12010,序号范围 12010 - 13209。

04. 设 TCP 发送窗口的最大尺寸为 64KB,网络的平均往返时间为 20ms,问 TCP 所能得到的最大数据传输速率是多少?(只考虑单向传输,且假设信道带宽不受限 )

04.【解答】
        最大数据传输速率表明在 1RTT 内将窗口中的字节全部发送完毕。在平均往返时间 20ms 内,发送的最大数据量为最大窗口值,即 64×1024B,
                        64×1024×8÷(20×10−3)≈26.2Mb/s
        因此,所能得到的最大数据传输速率是 26.2Mb/s。

05. 在一个 TCP 连接中,信道带宽为 100Mb/s,单个报文大小为 1000B,发送窗口固定为 60,端到端时延为 20ms。TCP 最多能达到的平均数据传输速率是多少?信道利用率是多少?(只考虑单向传输,确认报文的发送时延、各层协议的首部开销均忽略不计。)

05.【解答】
        发送方发出一个报文所需的时间 = 报文长度 / 信道带宽 = 1000×8÷(100×10^6)=0.08ms(注意单位转换)。发送方发出一个窗口的第一个报文到收到该报文的确认报文所需的时间 = 0.08 + RTT = 0.08 + 2× 端到端时延 = 40.08ms。发出一个窗口的所有报文所需的时间 = 60×0.08ms = 4.8ms。在 40.08ms 时间内,发送方可以连续发出一个窗口的所有报文,若所有报文都正确到达接收方,则所能达到的平均数据传输速率为1000×60×8÷(40.08×10^−3)≈11.98Mb/s。
        信道利用率 = 平均数据传输速率 / 信道带宽(最大数据传输速率) = 11.98/100 = 11.98%。

06. 主机 A 基于 TCP 向主机 B 连续发送 3 个 TCP 报文段。第一个报文段的序号为 90,第二个报文段的序号为 120,第三个报文段的序号为 150。
1)第一、二个报文段中有多少数据?
2)假设第二个报文段丢失而其他两个报文段到达主机 B,在主机 B 发往主机 A 的确认报文中,确认号应是多少?

06.【解答】
1)TCP 报文段的序号是指其数据部分的第一个字节的编号。因此第一个报文段中的数据有 120 - 90 = 30B,第二个报文段中的数据有 150 - 120 = 30B。
2)因为 TCP 采用累积确认策略,所以当第二个报文段丢失后,第三个报文段就成了失序报文,B 期望收到的下一个报文段是序号为 120 的报文段,所以确认号为 120。

07. 考虑在一条 TCP 连接上采用慢开始拥塞控制而不发生网络拥塞的情况下,接收窗口为 24KB,RTT 为 10ms,最大段长为 2KB,则需要多长时间才能发送第一个完全窗口?

07.【解答】
        最大段长是 2KB,初始的拥塞窗口是 2KB,经过前 3 个 RTT 后拥塞窗口依次变为 4KB、8KB 和 16KB,经过第 4 个 RTT 后拥塞窗口变为 32KB(大于接收窗口 24KB),所以此时发送窗口取 24KB,即第一个完全窗口。10ms×4 = 40ms,因此需要 40ms 才能发送第一个完全窗口。

08. 设 TCP 拥塞窗口的慢开始门限值初始为 12MSS,当拥塞窗口达到 16 时出现超时,再次进入慢开始阶段,则从此时起恢复到超时前的拥塞窗口大小,需要多少个往返时延?

08.【解答】
        在慢开始和拥塞避免算法中,拥塞窗口初始为 1,窗口大小开始按指数增长。当拥塞窗口大于慢开始门限后停止使用慢开始算法,改用拥塞避免算法。此处慢开始的门限值初始为 12,当拥塞窗口增大到 12 时改用拥塞避免算法,窗口大小按线性增长,每次增加 1 个报文段,当增加到 16 时,出现超时,重新设门限值为 8(16 的一半),拥塞窗口再重新设为 1,执行慢开始算法,到门限值 8 时执行拥塞避免算法。
        这样,拥塞窗口的变化就为 1, 2, 4, 8, 12, 13, 14, 15, 16, 1, 2, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, …。可见从出现超时时拥塞窗口为 16 到恢复拥塞窗口大小为 16,需要的往返时间次数是 11。注意,发现超时时,拥塞窗口从 16 变为 1 是立即进行的,不会间隔 1RTT。

09. 假定 TCP 报文段载荷是 1500B,最大分组存活时间是 120s,要使得 TCP 报文段的序列号不会循环回来而重叠,线路允许的最快速度是多大?(不考虑帧长限制 )

09.【解答】
        目标在 120s 内最多发送232B(序列号为 32 位),即 35791394B/s 的载荷。TCP 报文段载荷是 1500B,因此可以发送 23861 个报文段。TCP 开销是 20B,IP 开销是 20B,以太网开销是 26B(18B 的首部和尾部,7B 的前同步码,1B 的帧开始定界符)。这就意味着对于 1500B 的载荷,必须发送 1566B。566×8×23861≈299Mb/s,因此允许的最快线路速率是 299Mb/s。当比这一速度更快时,就存在同一时段内不同 TCP 报文段具有相同序号的风险。

10. 一个 TCP 连接使用 256kb/s 的链路,其端到端时延为 128ms。经测试发现吞吐率只有 128kb/s。问窗口是多少?忽略 PDU 封装的协议开销及接收方应答分组的发送时间(假定应答分组长度很小 )。

10.【解答】
        来回路程的时延 128ms×2 = 256ms。设窗口值为 X(注意:单位为字节)。
        假定一次最大发送量等于窗口值,且发送时间等于 256ms,则每发送一次都得停下来期待再次得到下一个窗口的确认,以得到新的发送许可。这样,发送时间等于停止等待应答的时间,结果测到的平均吞吐率就等于发送速率的一半,即 128kb/s,
8X÷(128×2×1000)=256×0.001⇒X=256×1000×256×0.001÷8=256×32=8192
所以,窗口值为 8192。

11. 假定 TCP 最大报文段的长度是 1KB,拥塞窗口被置为 18KB,并且发生了超时事件。若接着的 4 次迸发量传输都是成功的,则该窗口将是多大?

11.【解答】
        在 TCP 的拥塞控制算法中,除使用慢开始的接收窗口和拥塞窗口外,还使用第 3 个参数,即门槛值。发生超时的时候,该门槛值被设置成当前拥塞窗口值的一半即 9KB,而拥塞窗口则重置成一个最大报文段长。然后使用慢开始的算法决定网络可以接受的发进量,一直增长到门槛值为止。从这一点开始,成功的传输线性地增加拥塞窗口,即每次进发传输后只增加一个最大报文段,而不是每个报文段传输后都增加一个最大报文段的窗口值。现在由于发生了超时,下一次传输将是 1 个最大报文段,然后是 2 个、4 个和 8 个最大报文段,第四次发送成功,且门限为 9KB,所以在 4 次进发量传输后,拥塞窗口将增加为 9KB。

12. 一个 TCP 首部的数据信息(十六进制表示)为 0x0D 28 00 15 50 5F A9 06 00 00 00 00 70 02 40 00 C0 29 00 00。TCP 首部的格式如下图所示。请回答:

1)源端口号和目的端口号各是多少?
2)发送的序列号是多少?确认号是多少?
3)TCP 首部的长度是多少?
4)这是一个使用什么协议的 TCP 连接?该 TCP 连接的状态是什么?

12.【解答】
1)源端口号为第 1、2 个字节,即 0D 28,转换为十进制数为 3368。目的端口号为第 3、4 个字节,即 00 15,转换为十进制数为 21。
2)第 5~8 个字节为序列号,即 50 5F A9 06。第 9~12 个字节为确认号,即 00 00 00 00,也即十进制数 0。
3)第 13 个字节的前 4 位为 TCP 首部的长度,这里的值是 7(以 4B 为单位),因此乘以 4 后得到 TCP 首部的长度为 28B,说明该 TCP 首部还有 8B 的选项数据。
4)根据目的端口为 21 可知这是一条 FTP 连接,而 TCP 的状态则需要分析第 14 个字节。第 14 个字节的值为 02,即 SYN 置为 1,而且 ACK = 0 表示该数据段没有捎带的确认,这说明是第一次握手时发出的 SYN 连接。

13. 【2012 统考真题】主机 H 通过快速以太网连接 Internet,IP 地址为 192.168.0.8,服务器 S 的 IP 地址为 211.68.71.80。H 与 S 使用 TCP 通信时,在 H 上捕获的其中 5 个 IP 分组如表 1 所示。

回答下列问题:
1)表 1 中的 IP 分组中,哪几个是由 H 发送的?哪几个完成了 TCP 连接建立过程?哪几个在通过快速以太网传输时进行了填充?
2)根据表 1 中的 IP 分组,分析 S 已经收到的应用层数据字节数是多少。
3)若表 1 中的某个 IP 分组在 S 发出时的前 40B 如表 2 所示,则该 IP 分组到达 H 时经过了多少个路由器?

IP 分组头和 TCP 段头结构分别如图 1 和图 2 所示。

13.【解答】
1)由图 1 看出,源 IP 地址为 IP 分组头的第 13~16 个字节。在表 1 中,1、3、4 号分组的源 IP 地址均为 192.168.0.8(c0a80008H),所以 1、3、4 号分组是由 H 发送的。再观察 1, 3, 4 号分组的标识字段,分别是 9b, 9c, 9d,标识字段是一个计数器,每产生一个数据报就加 1,这也说明主机 H 先后发送了 1, 3, 4 号分组。
在表 1 中,1 号分组封装的 TCP 段的 SYN = 1,ACK = 0,seq = 846b 41c5H;2 号分组封装的 TCP 段的 SYN = 1,ACK = 1,seq = e059 9feH,ack = 846b 41c6H;3 号分组封装的 TCP 段的 ACK = 1,seq = 846b 41c6H,ack = e059 9f0H,所以 1、2、3 号分组完成了 TCP 连接的建立过程。
由于快速以太网数据帧有效载荷的最小长度为 46B,表 1 中 3、5 号分组的总长度为 40(28H)字节,小于 46B,其余分组总长度均大于 46B。所以 3、5 号分组通过快速以太网传输时需要填充。
2)由 3 号分组封装的 TCP 段可知,发送应用层数据初始序号为 seq = 846b 41c6H,由 5 号分组封装的 TCP 段可知,ack 为 seq = 846b 41d6H,所以 S 已经收到的应用层数据的字节数为 846b 41d6H - 846b 41c6H = 10H = 16B。
3)因为 S 发出的 IP 分组的标识 = 6811H,所以该分组所对应的是表 1 中的 5 号分组。S 发出的 IP 分组的 TTL = 40H = 64,5 号分组的 TTL = 31H = 49,64 - 49 = 15,所以可以推断该 IP 分组到达 H 时经过了 15 个路由器。

14.【2016 统考真题】假设下图中的 H3 访问 Web 服务器 S 时,S 为新建的 TCP 连接分配了 20KB(K = 1024)的接收缓存,最大段长 MSS = 1KB,平均往返时间 RTT = 200ms。H3 建立连接时的初始序号为 100,且持续以 MSS 大小的段向 S 发送数据,拥塞窗口初始阈值为 32KB; S 对收到的每个段进行确认,并通告新的接收窗口。假定 TCP 连接建立完成后,S 端的 TCP 接收缓存仅有数据存入而无数据取出。请回答下列问题:

1)在 TCP 连接建立过程中,H3 收到的 S 发送过来的第二次握手 TCP 段的 SYN 和 ACK 标志位的值分别是多少?确认序号是多少?
2)H3 收到的第 8 个确认段所通告的接收窗口是多少?此时 H3 的拥塞窗口变为多少?H3 的发送窗口变为多少?
3)H3 的发送窗口等于 0 时,下一个待发送的数据段序号是多少?H3 从发送第 1 个数据段到发送窗口等于 0 时刻为止,平均数据传输速率是多少?(忽略段的传输时延。)
4)若 H3 与 S 之间通信已经结束,在 t 时刻 H3 请求断开该连接,则从 t 时刻起,S 释放该连接的最短时间是多少?

14.【解答】
1)第二次握手报文段的 SYN = 1,ACK = 1。确认序号是第一次握手报文段的序号 + 1 = 101。
2)因为 S 的 TCP 接收缓存仅有数据存入而无数据取出,当 S 收到第 8 个段时接收缓存还剩 12KB,所以 H3 收到的第 8 个确认段所通告的接收窗口是 12KB。在慢开始阶段,每收到一个对新报文段的确认,拥塞窗口就加 1,当收到对第 8 个报文段的确认后,H3 的拥塞窗口变为 9KB。H3 的发送窗口取接收窗口和拥塞窗口的最小值,即 9KB。
3)H3 的发送窗口等于 0 时,下一个待发送段的序号是 20K + 101 = 20×1024 + 101 = 20581。H3 从发送第 1 个段到发送窗口等于 0 时刻为止,共耗费了 5RTT(每个 RTT 传输的数据量依次为 1KB、2KB、4KB、8KB、5KB),平均数据传输速率是 20KB÷(5×200ms) = 20×1024×8b/s = 163.84kb/s。

注意:

        K 表示文件大小或描述存储空间时等于 1024,这里通常用大写的 K;k 表示传输速率或描述网络通信时等于 1000,这里通常用小写的 k。注意区分和转换。

4)t 时刻 H3 请求断开连接,发出连接释放 FIN 报文段;S 收到后,最短时间的情况是 S 已没有要发送的数据,所以同时发出确认 ACK 报文段和连接释放 FIN 报文段,即 S 直接跳过 CLOSE - WAIT 状态;H3 收到 FIN 报文段后必须发出确认,S 收到确认后进入 CLOSED 状态,共经历 1.5RTT,因此 S 释放该连接的最短时间是 1.5×200ms = 300ms。

5.4 本章小结及疑难点

1.MSS 设置得太大或太小会有什么影响?
        规定最大报文段长度 MSS,并不是考虑接收方的缓存可能放不下 TCP 报文段中的数据。实际上,MSS 与接收窗口没有关系。TCP 报文段的数据部分,至少要加上 40B 的首部(TCP 首部至少 20B 和 IP 首部至少 20B),才能组装成一个 IP 数据报。若选择较小的 MSS 值,网络的利用率就很低。设想在极端情况下,当 TCP 报文段只含有 1B 的数据时,在 IP 层传输的数据报的开销至少有 40B(包括 TCP 首部和 IP 首部)。这样,网络的利用率就不会超过 1/41。到了数据链路层还要加上一些开销,网络的利用率还会进一步降低。但反过来,若 TCP 报文段很长,则在 IP 层传输时有可能要分解成多个短数据报片。在终点还要把收到的各个短数据报片装配成原来的 TCP 报文段。当传输出错时,还要进行重传。这些也都会使开销增大。
        因此,MSS 应尽可能大一些,只要在 IP 层传输时不再分片就行。因为 IP 数据报所经历的路径是动态变化的,所以在一条路径上确定的不显著分片的 MSS,若改走另一条路径,则可能需要进行分片。因此最佳的 MSS 是很难确定的。MSS 的默认值为 536B,因此在互联网上的所有主机都能接受的报文段长度是 536 + 20(TCP 固定首部长度) = 556B。

2.TCP 使用的是 GBN 还是选择重传?
        这是一个有必要弄清的问题。前面讲过,TCP 使用累积确认,这看起来像是 GBN 的风格。但是,正确收到但失序的报文并不会丢弃,而是缓存起来,并且发送冗余 ACK 指明期望收到的下一个报文段,这是 TCP 方式和 GBN 的显著区别。例如,A 发送了 N 个报文段,其中第 k(k < N)个报文段丢失,其余 N - 1 个报文段正确地按序到达接收方 B。使用 GBN 时,A 需要重传分组 k,以及所有后继分组 k + 1, k + 2, …, N。相反,TCP 却至多重传一个报文段,即报文段 k。另外,TCP 中提供一个 SACK(Selective ACK)选项,即选择确认选项。使用选择确认选项时,TCP 看起来就和 SR 非常相似。因此,TCP 的差错恢复机制可视为 GBN 和 SR 协议的混合体。

3.为什么超时事件发生时 cwnd 被置为 1,而收到 3 个冗余 ACK 时 cwnd 减半?
        大家可以从如下角度考虑。超时事件发生和收到 3 个冗余 ACK,哪个意味着网络拥塞程度更严重?通过分析不难发现,在收到 3 个冗余 ACK 的情况下,网络虽然拥塞,但至少还有 ACK 报文段能被正确交付。而当超时发生时,说明网络可能已经拥塞得连 ACK 报文段都传输不了,发送方只能等待超时后重传数据。因此,超时事件发生时,网络拥塞更严重,发送方就应该最大限度地抑制数据发送量,所以 cwnd 置为 1;收到 3 个冗余 ACK 时,网络拥塞不是很严重,发送方稍微抑制一下发送的数据量即可,所以 cwnd 减半。

4.为什么不采用 “两次握手” 建立连接呢?
        这主要是为了防止两次握手情况下已失效的连接请求报文段突然又传送到服务器而产生错误。考虑下面这种情况。客户 A 向服务器 B 发出 TCP 连接请求,第一个连接请求报文在网络的某个节点长时间滞留,A 超时后认为报文丢失,于是再重传一次连接请求,B 收到后建立连接。数据传输完毕后双方断开连接。而此时,前一个滞留在网络中的连接请求到达服务器 B,而 B 认为 A 又发来连接请求,此时若使用 “三次握手”,则 B 向 A 返回确认报文段,因为是一个失效的请求,所以 A 不予理睬,建立连接失败。若采用的是 “两次握手”,则这种情况下 B 认为传输连接已经建立,并一直等待 A 传输数据,而 A 此时并无连接请求,因此不予理睬,这样就造成了 B 的资源白白浪费。

5.为什么 TCP 在建立连接时不能每次都选择相同的、固定的初始序号?
1)假定主机 A 和 B 频繁地建立连接,传送一些 TCP 报文段后,再释放连接,然后又不断地建立新的连接、传送报文段和释放连接。
2)假定每次建立连接时,主机 A 都选择相同的、固定的初始序号,如选择 1。
3)假定主机 A 发出的某些 TCP 报文段在网络中会滞留较长时间,以致主机 A 超时重传这些 TCP 报文段。
4)假定有一些在网络中滞留时间较长的 TCP 报文段最后终于到达主机 B,但这时传送该报文段的那个连接早已释放,而在到达主机 B 时的 TCP 连接是一条新的 TCP 连接。
        这样,工作在新的 TCP 连接的主机 B 就有可能会接收在旧的连接传送的、已无意义的、过时的 TCP 报文段(因为这个 TCP 报文段的序号有可能正好处在当前新连接所用的序号范围之中),结果产生错误。因此,必须使得迟到的 TCP 报文段的序号不处在新连接所用的序号范围之中。
        这样,TCP 在建立新的连接时所选择的初始序号一定要和前面的一些连接所用过的序号不同。因此,不同的 TCP 连接不能使用相同的初始序号。

6.假定在一个互联网中,所有链路的传输都不出现差错,所有节点也都不会发生故障。试问在这种情况下,TCP 的 “可靠交付” 功能是否就是多余的?
        不是多余的。TCP 的 “可靠交付” 功能在互联网中起着至关重要的作用。至少在以下的情况下,TCP 的 “可靠交付” 功能是必不可少的。
1)每个 IP 数据报独立地选择路由,因此在到达目的主机时有可能出现失序。
2)由于路由选择的计算出现错误,导致 IP 数据报在互联网中转圈。最后数据报首部中的生存时间(TTL)的数值下降到零。这个数据报在中途就被丢失。
3)某个路由器突然出现很大的通信量,以致路由器来不及处理到达的数据报。因此有的数据报被丢弃。
以上列举的问题表明:必须依靠 TCP 的 “可靠交付” 功能才能保证在目的主机的目的进程中接收到正确的报文。

第 6 章 应用层

【考纲内容】

(一)网络应用模型
        客户 / 服务器模型;P2P 模型
(二)域名系统(DNS)
        层次域名空间;域名服务器;域名解析过程
(三)文件传输协议(FTP)
        FTP 的工作原理;控制连接与数据连接
(四)电子邮件(E - mail)
        电子邮件系统的组成结构;电子邮件格式与 MIME;SMTP 与 POP3
(五)万维网(WWW)
        WWW 的概念与组成结构;HTTP

【复习提示】

本章内容既可按选择题的形式考查,又可结合其他章节的内容出综合题。因此,牢固掌握本章的几个典型应用层协议是关键。我们生活中的很多网络应用都是建立在这些协议的基础上的,因此在学习时要注意联系实际,提高学习的兴趣,才会获得更好的学习效果。

6.1 网络应用模型

6.1.1 客户 / 服务器模型

命题追踪 C/S 模型和 P2P 模型的特点(2019)
        在客户 / 服务器(Client/Server,C/S)模型中,有一个总是打开的主机称为服务器,它服务于许多来自其他称为客户机的主机请求。其工作流程如下:
1)服务器处于接收请求的状态。
2)客户机发出服务请求,并等待接收结果。
3)服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机。
        服务器上运行着专门用来提供某种服务的程序,可以同时处理多个远程或本地客户的请求。客户程序必须知道服务器程序的地址。服务器启动后就一直不断地运行着,被动等待并接收来自各地客户的请求。因此,服务器程序不需要知道客户程序的地址。
        客户 / 服务器模型最主要的特征是:客户是服务请求方,服务器是服务提供方。如 Web 应用程序,其中总是打开的 Web 服务器服务于运行在客户机上的浏览器的请求。当 Web 服务器接收到来自客户机对某对象的请求时,它向该客户机发送所请求的对象以做出响应。使用客户 / 服务器模型的常见应用包括 Web、文件传输协议(FTP)、远程登录和电子邮件等。
客户 / 服务器模型的主要特点还有:
1)网络中各计算机的地位不平等,服务器可通过对用户权限的限制来达到管理客户机的目的。整个网络的管理工作由少数服务器负责,因此网络的管理非常集中和方便。
2)客户机相互之间不直接通信。例如,在 Web 应用中两个浏览器并不直接通信。
3)可扩展性不佳。受服务器硬件和网络带宽的限制,服务器支持的客户机数量有限。

6.1.2 P2P 模型

        在 C/S 模型中(图 6.1),服务器性能的好坏决定了整个系统的性能,当大量用户请求服务时,服务器就必然成为系统的瓶颈。P2P 模型(见图 6.2)的思想是整个网络中的传输内容不再被保存在中心服务器上,每个节点都同时具有下载、上传的功能,其权利和义务都是大体对等的。

        在 P2P 模型中,各计算机没有固定的客户和服务器划分。相反,任意一对计算机 —— 称为对等方(Peer),直接相互通信。实际上,P2P 模型从本质上来看仍然使用客户 / 服务器模型,每个节点既作为客户访问其他节点的资源,又作为服务器提供资源给其他节点访问。
与 C/S 模型相比,P2P 模型的优点主要体现如下:
1)减轻了服务器的计算压力,消除了对某个服务器的完全依赖,可以将任务分配到各个节点上,因此大大提高了系统效率和资源利用率。
2)多个客户机之间可以直接共享文档。
3)可扩展性好,传统服务器有响应和带宽的限制,因此只能接受一定数量的请求。
4)网络健壮性强,单个节点的失效不会影响其他部分的节点。
P2P 模型也有缺点。在获取服务的同时,还要给其他节点提供服务,因此会占用较多的内存,影响整机速度。例如,经常进行 P2P 下载还会对硬盘造成较大的损伤。据某互联网调研机构统计,某些年份 P2P 程序占了互联网 50% - 90% 的流量,使网络变得非常拥塞,因此各大 ISP(互联网服务提供商,如电信、网通等)通常都对 P2P 应用持反对态度。

6.1.3 本节习题精选

单项选择题
01. 在客户 / 服务器模型中,客户指的是( )。
A. 请求方
B. 响应方
C. 硬件
D. 软件

01. A
客户机既不是硬件,又不是软件,只是服务的请求方,服务器才是响应方。

02. 用户提出服务请求,网络将用户请求传送到服务器;服务器执行用户请求,完成所要求的操作并将结果送回用户,这种工作模型称为( )。
A. C/S 模型
B. P2P 模型
C. CSMA/CD 模型
D. 令牌环模型

02. A
用户提出服务请求,网络将用户请求传送到服务器;服务器执行用户请求,完成所要求的操作并将结果送回用户,这种工作模型称为客户 / 服务器模型,即 C/S 模型。

03. 下面关于客户 / 服务器模型的描述,( )存在错误。
I. 客户端必须提前知道服务器的地址,而服务器则不需要提前知道客户端的地址
II. 客户端主要实现如何显示信息与收集用户的输入,而服务器主要实现数据的处理
III. 浏览器显示的内容来自服务器
IV. 客户端是请求方,即使连接建立后,服务器也不能主动发送数据
A. I、IV
B. III、IV
C. 只有 IV
D. 只有 III

03. C
在连接未建立前,服务器在某一个端口上监听。客户端是连接的请求方,客户端必须事先知道服务器的地址才能发出连接请求,而服务器则从客户端发来的数据包中获取客户端的地址。一旦连接建立,服务器就能响应客户端请求的内容,服务器也能主动发送数据给客户端,用于一些消息的通知,如一些错误的通知。所以只有 IV 错误。

04. 下列关于客户 / 服务器模型的说法中,不正确的是( )。
A. 服务器专用于完成某些服务,而客户机则作为这些服务的使用者
B. 客户机通常位于前端,服务器通常位于后端
C. 客户机和服务器通过网络实现协同计算任务
D. 客户机是面向任务的,服务器是面向用户的

04. D
客户机的作用是根据用户需求向服务器发出服务请求,并将服务器返回的结果呈现给用户,因此客户机是面向用户的,服务器是面向任务的。

05. 以下关于 P2P 概念的描述中,错误的是( )。
A. P2P 是网络节点之间采取对等方式直接交换信息的工作模型
B. P2P 通信模式是指 P2P 网络中对等节点之间的直接通信能力
C. P2P 网络是指与互联网并行建设的、由对等节点组成的物理网络
D. P2P 实现技术是指为实现对等节点之间直接通信的功能所需要设计的协议、软件等

05. C
P2P 可以理解为一种通信模型、一种逻辑网络模型。物理网络是指在网络中由各种设备(主机、交换机等)和介质(双绞线等)连接而形成的网络,它看得见摸得着。而这个网络中所使用的协议,或网络结构,都是靠逻辑网络来划分的。P2P 网络是一个构建在 IP 网络上的覆盖网络,是一种动态的逻辑网络。对等节点之间具有直接通信的能力是 P2P 的显著特点。

06.【2019 统考真题】下列关于网络应用模型的叙述中,错误的是( )。
A. 在 P2P 模型中,节点之间具有对等关系
B. 在客户 / 服务器(C/S)模型中,客户与客户之间可以直接通信
C. 在 C/S 模型中,主动发起通信的是客户,被动通信的是服务器
D. 在向多用户分发一个文件时,P2P 模型通常比 C/S 模型所需的时间短

06. B
在 P2P 模型中,每个节点的权利和义务是对等的。在 C/S 模型中,客户是服务发起方,服务器被动接受各地客户的请求,但客户之间不能直接通信,例如 Web 应用中两个浏览器之间不能直接通信。P2P 模型减轻了对服务器的计算压力,当向多用户分发一个文件时,可将任务分配给多个节点,用户可从速度最快的多个节点并行下载该文件,因此需要的时间更短。

6.2 域名系统

命题追踪 DNS 向下依次使用的协议(2018、2021)
        域名系统(Domain Name System,DNS)是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名(如www.cskaoyan.com)转换为便于机器处理的 IP 地址。相对于 IP 地址,人们更喜欢使用具有特定含义的字符串来标识因特网上的计算机。DNS 系统采用客户 / 服务器模型,其协议运行在 UDP 之上,使用 53 号端口。
从概念上可将 DNS 分为三部分:层次域名空间、域名服务器和解析器。

6.2.1 层次域名空间

        因特网采用层次树状结构的命名方法。采用这种命名方法,任何一个连接到因特网的主机或路由器,都有一个唯一的层次结构名称,即域名(Domain Name)。域(Domain)是名字空间中一个可被管理的划分。域可以划分为子域,而子域还可以继续划分为子域的子域,这样就形成了顶级域、二级域、三级域等。每个域名都由标号序列组成,而各标号之间用点(“.”)隔开。一个典型的例子如图 6.3 所示,它是王道论坛用于提供 WWW 服务的服务器的域名,它由三个标号组成,其中标号 com 是顶级域名,标号 cskaoyan 是二级域名,标号 www 是三级域名。

关于域名中的标号有以下几点需要注意:
1)标号中的英文不区分大小写。
2)标号中除连字符(-)外不能使用其他的标点符号。
3)每个标号不超过 63 个字符,多标号组成的完整域名最长不超过 255 个字符。
4)级别最低的域名写在最左边,级别最高的顶级域名写在最右边。
顶级域名(Top Level Domain,TLD)分为如下三大类:
1)国家(地区)顶级域名(nTLD)。国家和某些地区的域名,如 “.cn” 表示中国,“.us” 表示美国,“.uk” 表示英国。
2)通用顶级域名(gTLD)。常见的有 “.com”(公司)、“.net”(网络服务机构)、“.org”(非营利性组织)、“.edu”(教育机构)、和 “.gov”(国家或政府部门)等。
3)基础结构域名(arpa)。用于反向域名解析,即 IP 地址反向解析为域名。

图 6.4 展示了域名空间的树状结构。

        在域名系统中,各级域名由其上一级的域名管理机构管理,顶级域名由因特网名称与数字地址分配机构(ICANN)管理。国家顶级域名下注册的二级域名均由该国家自行确定,每个组织都可以将它的域再分成一定数量的子域,并将这些子域委托给其他组织去管理。例如,管理 cn 域的中国将edu.cn子域授权给中国教育和科研计算机网(CERNET)来管理。

6.2.2 域名服务器

        域名到 IP 地址的解析是由运行在域名服务器上的程序完成的,一个服务器所负责管辖的(或有权限的)范围称为区(小于或等于域),一个区中的所有节点必须是能够连通的,每个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到 IP 地址的映射。每个域名服务器不但能够进行一些域名到 IP 地址的解析,而且必须具有连向其他域名服务器的信息。当自己不能进行域名到 IP 地址的转换时,能够知道到什么地方去找其他域名服务器。
        DNS 使用了大量的域名服务器,它们按层次方式组织。没有一台域名服务器具有因特网上所有主机的映射,相反该映射分布在所有的域名服务器上。有 4 种类型的域名服务器。

1.根域名服务器
        根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。根域名服务器是最重要的域名服务器,不管是哪个本地域名服务器,要对因特网上任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器。因特网上有 13 个根域名服务器,尽管我们将这 13 个根域名服务器中的每一个都视为单个服务器,但每个 “服务器” 实际上是冗余服务器的集群,以提供安全性和可靠性。需要注意的是,根域名服务器用来管辖顶级域(如.com),通常它并不直接将待查询的域名直接转换成 IP 地址,而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行查询。

2.顶级域名服务器
        这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当查找的域名服务器的 IP 地址)。

3.权限域名服务器(授权域名服务器)
        每台主机都必须在权限域名服务器处登记。为了更加可靠地工作,一台主机最好至少有两个权限域名服务器。实际上,许多域名服务器都同时充当本地域名服务器和权限域名服务器。权限域名服务器总能将其管辖的主机名转换为该主机的 IP 地址。

4.本地域名服务器
        本地域名服务器对域名系统非常重要。每个因特网服务提供者(ISP),或一所大学,甚至一所大学中的各个系,都可以拥有一个本地域名服务器。当一台主机发出 DNS 查询请求时,这个查询请求报文就发送给该主机的本地域名服务器。事实上,我们在 Windows 系统中配置 “本地连接” 时,就需要填写 DNS 地址,这个地址就是本地 DNS(域名服务器)的地址。
DNS 的层次结构如图 6.5 所示。

6.2.3 域名解析过程

命题追踪 DNS 协议的作用(2021)
        域名解析是指把域名转化为 IP 地址的过程。当客户端需要域名解析时,通过本机的 DNS 客户端构造一个 DNS 请求报文,以 UDP 数据报方式发往本地域名服务器。
域名解析有两种方式:递归查询和迭代查询。
(1)主机向本地域名服务器的查询都采用递归查询
递归查询是指若主机所询问的本地域名服务器不知道被查询域名的 IP 地址,则本地域名服务器就以 DNS 客户的身份,向根域名服务器继续发出查询请求报文(替该主机继续查询),而不是让该主机自己进行下一步的查询。两种查询方式的这一步是相同的。
(2)本地域名服务器向其他域名服务器采用递归查询或迭代查询
命题追踪 递归查询 DNS 的工作原理(2010)
        递归查询的过程如图 6.6 (a) 所示,本地域名服务器只需向根域名服务器查询一次,后面的几次查询都是递归地在其他几个域名服务器之间进行的 [步骤③~⑥]。在步骤⑦中,本地域名服务器从根域名服务器得到了所需的 IP 地址,最后在步骤⑧中,本地域名服务器把查询结果告诉发起查询的主机。因为该方法给根域名服务器造成的负载过大,所以实际中几乎不使用。
命题追踪 迭代查询 DNS 的工作原理(2016、2020)
        本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪个顶级域名服务器进行查询”。然后让本地域名服务器进行后续的查询(而不替本地域名服务器进行后续的查询),如图 6.6 (b) 所示。同样,顶级域名服务器收到查询报文后,要么给出所要查询的 IP 地址,要么告诉本地域名服务器下一步应当向哪个权限域名服务器查询。最后,知道了所要解析的域名的 IP 地址后,把这个结果返回给发起查询的主机。

下面举例说明域名解析的过程。假定某客户机想获知域名为y.abc.com主机的 IP 地址,域名解析的过程(最多需要使用 8 个 UDP 报文:4 个查询报文和 4 个回答报文)如下:
① 客户机向其本地域名服务器发出 DNS 请求报文(递归查询)。
② 本地域名服务器收到请求后,查询本地缓存,若没有该记录,则以 DNS 客户的身份向根域名服务器发出解析请求报文(迭代查询)。
③ 根域名服务器收到请求后,判断该域名属于.com 域,将对应的顶级域名服务器dns.com的 IP 地址返回给本地域名服务器。
④ 本地域名服务器向顶级域名服务器dns.com发出解析请求报文(迭代查询)。
⑤ 顶级域名服务器dns.com收到请求后,判断该域名属于abc.com域,因此将对应的权限域名服务器dns.abc.com的 IP 地址返回给本地域名服务器。
⑥ 本地域名服务器向权限域名服务器dns.abc.com发起解析请求报文(迭代查询)。
⑦ 权限域名服务器dns.abc.com收到请求后,将查询结果返回给本地域名服务器。
⑧ 本地域名服务器将查询结果保存到本地缓存,同时返回给客户机。
        为了提高 DNS 的查询效率,并减少因特网上的 DNS 查询报文数量,在域名服务器中广泛地使用了高速缓存,用来缓存最近查询过的域名的相关映射信息。这样,当另一个相同的域名查询到达该 DNS 服务器时,该服务器就能直接提供所要求的 IP 地址。因为主机名和 IP 地址之间的映射不是永久的,所以 DNS 服务器将在一段时间后丢弃高速缓存中的信息。在主机中同样也很需要高速缓存,许多主机启动时从本地域名服务器下载域名和地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才使用域名服务器。

6.2.4 本节习题精选

一、单项选择题
01. 域名与( )具有一一对应的关系。
A. IP 地址
B. MAC 地址
C. 主机
D. 以上都不是

01. D
        若一台主机通过两块网卡连接到两个网络(如服务器双线接入),则就具有两个 IP 地址,每个网卡对应一个 MAC 地址,显然这两个 IP 地址可以映射到同一个域名上。此外,多台主机也可以映射到同一个域名上(如负载均衡),一台主机也可以映射到多个域名上(如虚拟主机)。因此,A、B 和 C 和域名均不具有一一对应的关系。

02. 下列说法错误的是( )。
A. Internet 上提供客户访问的主机一定要有域名
B. 同一域名在不同时间可能解析出不同的 IP 地址
C. 多个域名可以指向同一台主机 IP 地址
D. IP 子网中的主机可以由不同的域名服务器来维护其映射

02. A
        Internet 上提供访问的主机一定要有 IP 地址,而不一定要有域名,A 错误。域名在不同的时间可以解析出不同的 IP 地址,因此可以用多台服务器来分担负载,B 正确。可以把多个域名指向同一台主机 IP 地址,C 正确。IP 子网中主机也可以由不同的域名服务器来维护其映射,D 正确。

03. DNS 是基于( )模型的分布式系统。
A. C/S
B. B/S
C. P2P
D. 以上均不正确

03. A
DNS 是一个基于 C/S 模型的分布式数据库系统,主要用于域名和 IP 地址的映射。

04. 域名系统(DNS)的组成不包括( )。
A. 域名空间
B. 分布式数据库
C. 域名服务器
D. 从内部 IP 地址到外部 IP 地址的翻译程序

04. D
        DNS 提供从域名到 IP 地址或从 IP 地址到域名的映射服务。它被设计成为一个联机分布式数据库系统,并采用客户 / 服务器模式。域名的解析是由若干域名服务器程序完成的。从内部 IP 地址到外部 IP 地址的映射是由 NAT 实现的,用于缓解 IPv4 地址紧缺的问题,与域名系统无关。

05. 互联网中域名解析依赖于由域名服务器组成的逻辑树。在域名解析过程中,主机上请求域名解析的软件不需要知道( )信息。
I. 本地域名服务器的 IP
II. 本地域名服务器父节点的 IP
III. 域名服务器树根节点的 IP
A. I 和 II
B. I 和 III
C. II 和 III
D. I、II 和 III

5.C
正常情况下,客户机只需把域名解析请求发往本地域名服务器,其他事情都由本地域名服务器完成,并把最后结果返回给客户机。所以主机只需要知道本地域名服务器的 IP。

06. 在 DNS 的递归查询中,由( )给客户端返回地址。
A. 最开始连接的服务器
B. 最后连接的服务器
C. 目的地址所在服务器
D. 不确定

6.A
在递归查询中,每台不包含被请求信息的服务器都转到其他地方去查找,然后它再往回发送结果,所以客户端最开始连接的服务器最终将返回正确的信息。

07. 当本地域名服务器向根域名服务器查询一个域名时,根域名服务器返回一个负责该域名的顶级域名服务器的 IP 地址,让本地域名服务器再向该域名服务器查询,这种查询方式称为( )。
A. 递归查询
B. 迭代查询
C. 重定向查询
D. 广播查询

7.B
迭代查询是指当一个域名服务器收到本地域名服务器发出的查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地服务器:“你下一步应当向哪个 DNS 服务器进行查询。” 然后让本地域名服务器进行后续的查询(而不替本地域名服务器进行后续的查询)。

08. 一台主机要解析www.cskaoyan.com的 IP 地址,若这台主机配置的域名服务器为 202.120.66.68,因特网顶级域名服务器为 11.2.8.6,而存储www.cskaoyan.com的 IP 地址对应关系的域名服务器为 202.113.16.10,则这台主机解析该域名通常首先查询( )。
A. 202.120.66.68 域名服务器
B. 11.2.8.6 域名服务器
C. 202.113.16.10 域名服务器
D. 可以从这 3 个域名服务器中任选一个

8.A
当这台主机发出对www.cskaoyan.com的 DNS 查询报文时,这个查询报文首先被送往该主机的本地域名服务器 202.120.66.68。本地域名服务器不能立即回答该查询时,就以 DNS 客户的身份向某一根域名服务器查询。但不管采用何种查询方式,首先都要查询本地域名服务器。

09.( )可以将其管辖的主机名转换为主机的 IP 地址。
A. 本地域名服务器
B. 根域名服务器
C. 权限域名服务器
D. 代理域名服务器

9.C
每台主机都必须在权限域名服务器处注册登记,权限域名服务器一定能够将其管辖的主机名转换为该主机的 IP 地址。

10. 若本地域名服务器无缓存,用户主机采用递归查询向本地域名服务器查询另一网络某主机域名对应的 IP 地址,而本地域名服务器采用迭代查询向其他域名服务器进行查询,则用户主机和本地域名服务器发送的域名请求条数分别为( )。
A. 1 条,1 条
B. 1 条,多条
C. 多条,1 条
D. 多条,多条

10.B
用户主机向本地域名服务器采用递归查询,只需发送 1 条查询请求。本地域名服务器无缓存,因此还要进行后续的查询。本地域名服务器向其他域名服务器采用迭代查询,本地域名服务器分别向根域名服务器、顶级域名服务器、权限域名服务器发送多条查询请求。

11.【2010 统考真题】若本地域名服务器无缓存,则在采用递归方法解析另一网络某主机域名时,用户主机和本地域名服务器发送的域名请求条数分别为( )。
A. 1 条,1 条
B. 1 条,多条
C. 多条,1 条
D. 多条,多条

11.A
用户主机向本地域名服务器采用递归查询,只需发送 1 条查询请求。本地域名服务器无缓存,因此还要进行后续的查询。本地域名服务器向其他域名服务器采用递归查询,本地域名服务器只需向根域名服务器发送 1 条查询请求,后面的几次查询都是递归地在其他几个域名服务器之间进行的。因此,用户主机和本地域名服务器发送的域名请求条数均为 1 条。

12.【2016 统考真题】假设所有域名服务器均采用迭代查询方式进行域名解析。当主机访问规范域名为www.abc.xyz.com的网站时,本地域名服务器在完成该域名解析的过程中,可能发出 DNS 查询的最少和最多次数分别是( )。
A. 0,3
B. 1,3
C. 0,4
D. 1,4

12.C
最少情况:当本地域名服务器中有该域名的 DNS 信息时,不需要查询任何其他域名服务器,最少发出 0 次 DNS 查询。最多情况:因为均采用迭代查询方式,在最坏情况下,本地域名服务器需要依次迭代地向根域名服务器、顶级域名服务器(.com)、权限域名服务器(xyz.com)、权限域名服务器(abc.xyz.com)发出 DNS 查询请求,因此最多发出 4 次 DNS 查询。

13.【2018 统考真题】下列 TCP/IP 应用层协议中,可以使用传输层无连接服务的是( )。
A. FTP
B. DNS
C. SMTP
D. HTTP

13.B
FTP 用来传输文件,SMTP 用来发送电子邮件,HTTP 用来传输网页文件,都对可靠性的要求较高,因此在传输层都采用有连接的 TCP 服务。无连接的 UDP 服务效率更高、开销小,DNS 在传输层采用无连接的 UDP 服务。

14.【2020 统考真题】假设下图所示网络中的本地域名服务器只提供递归查询服务,其他域名服务器均只提供迭代查询服务;局域网内主机访问 Internet 上各服务器的往返时间(RTT)均为 10ms,忽略其他各种时延。若主机 H 通过超链接http://www.abc.com/index.html请求浏览纯文本 Web 页 index.html,则从单击超链接开始到浏览器接收到 index.html 页面为止,所需的最短时间与最长时间分别是( )。

A. 10ms,40ms
B. 10ms,50ms
C. 20ms,40ms
D. 20ms,50ms

14.D
题中 RTT 均为局域网内主机(主机 H、本地域名服务器)访问 Internet 上各服务器的往返时间,且忽略其他时延,因此 H 向本地域名服务器的查询时延忽略不计。最短时间:H 有该域名到 IP 地址映射的记录,因此没有 DNS 查询时延,直接和www.abc.com服务器建立 TCP 连接再进行资源访问,TCP 连接建立的三次握手需要 1.5RTT,并在第 3 次握手报文中捎带了对资源的请求,然后服务器返回所请求的资源需要 0.5RTT,共 2RTT,即 20ms。最长时间:H 递归查询本地域名服务器(时延忽略),本地域名服务器依次迭代查询根域名服务器、com 顶级域名服务器、abc.com域名服务器,共 3RTT,查询到 IP 地址后,返回给主机,H 和www.abc.com服务器建立 TCP 连接再进行资源访问,共 2RTT,合计 3 + 2 = 5RTT,即 50ms。

二、综合应用题
01. DNS 使用 UDP 而非 TCP,若一个 DNS 分组丢失,没有自动恢复,则这会引起问题吗?若会,则应如何解决?

01.【解答】
DNS 使用传输层的 UDP 而非 TCP,因为它不需要使用 TCP 在发生传输错误时执行的自动重传功能。实际上,对于 DNS 服务器的访问,多次 DNS 请求都返回相同的结果,即做多次和做一次的效果一样。因此 DNS 操作可以重复执行。当一个进程做一次 DNS 请求时,它启动一个定时器。若定时器计满而未收到回复,则它就再请求一次,这样做不会有害处。

02. 为何要引入域名的概念?举例说明域名转换过程。域名服务器中的高速缓存有何作用?

02.【解答】
IP 地址很难记忆,引入域名是为了便于人们记忆和识别。
域名解析可以把域名转换成 IP 地址。域名转换过程是向本地域名服务器申请解析,若本地域名服务器查不到,则向根域名服务器进行查询。若根域名服务器中也查不到,则向根域名服务器中保存的顶级域名服务器和相应权限域名服务器进行查询,一定可以查找到。
域名服务器中高速缓存的作用:将近期访问过的域名信息保存在高速缓存,再次访问时会从缓存中读取,不需要重新解析,这样就可以加快域名解析的响应速度。

6.3 文件传输协议

6.3.1 FTP 的工作原理

        文件传输协议(File Transfer Protocol,FTP)是因特网上使用得最广泛的文件传输协议。FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。它屏蔽了各计算机系统的细节,因而适合于在异构网络中的任意计算机之间传送文件。
FTP 提供以下功能:
① 提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力。
② 以用户权限管理的方式提供用户对远程 FTP 服务器上的文件管理能力。
③ 以匿名 FTP 的方式提供公用文件共享的能力。
命题追踪 FTP 在传输层所使用的协议(2009、2018)
        FTP 采用客户 / 服务器的工作方式,使用 TCP 可靠的传输服务。一个 FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成:一个主进程,负责接收新的请求;另外有若干从属进程,负责处理单个请求。其工作步骤如下:
① 打开熟知端口 21(控制端口),使客户进程能够连接上。
② 等待客户进程发连接请求。
③ 启动从属进程处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止。
④ 回到等待状态,继续接收其他客户进程的请求。主进程与从属进程是并发执行的。
        FTP 服务器必须在整个会话期间保留用户的状态信息。特别是服务器必须把指定的用户账户与控制连接联系起来,服务器必须追踪用户在远程目录树上的当前位置。

6.3.2 控制连接与数据连接

命题追踪 控制连接和数据连接的特点(2017、2023)
FTP 在工作时使用两个并行的 TCP 连接(见图 6.7):一个是控制连接(服务器端口号 21),一个是数据连接(服务器端口号 20)。使用两个不同的端口号可以使协议更容易实现。

1.控制连接
命题追踪 控制连接的作用(2009)
        服务器监听 21 号端口,等待客户连接,建立在这个端口上的连接称为控制连接,用来传输控制信息(如连接请求、传送请求等)。FTP 客户发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。在传输文件时还可以使用控制连接(如客户在传输中途发一个中止传输的命令),因此控制连接在整个会话期间一直保持打开状态。

2.数据连接
        服务器端的控制进程在接收到 FTP 客户发送来的文件传输请求后,就创建 “数据传送进程” 和 “数据连接”。数据连接用来连接客户端和服务器端的数据传送进程,数据传送进程实际完成文件的传送,在传送完毕后关闭 “数据传送连接” 并结束运行。
        数据连接有两种传输模式:主动模式 PORT 和被动模式 PASV。PORT 模式的工作原理:客户端连接到服务器的 21 端口,登录成功后要读取数据时,客户端随机开放一个端口,并发送命令告知服务器,服务器收到 PORT 命令和端口号后,通过 20 端口和客户端开放的端口连接,发送数据。PASV 模式的不同点是,客户端要读取数据时,发送 PASV 命令到服务器,服务器在本地随机开放一个端口,并告知客户端,客户端再连接到服务器开放的端口进行数据传输。可见,是用 PORT 模式还是 PASV 模式,选择权在客户端。简单概括为,主动模式传送数据是 “服务器” 连接到 “客户端” 的端口;被动模式传送数据是 “客户端” 连接到 “服务器” 的端口。

注意:
        很多教材并未介绍这两种模式,若无特别说明,则可默认为采用主动模式。
        因为 FTP 使用了一个分离的控制连接,所以也称 FTP 的控制信息是带外(Out-of-band)传送的。使用 FTP 时,要修改服务器上的文件,就需要先将此文件传送到本地主机,然后将修改后的文件副本传送到原服务器,来回传送耗费很多时间。网络文件系统(NFS)采用另一种思路,它允许进程打开一个远程文件,并能在该文件的某个特定位置开始读写数据。这样,NFS 可使用户只复制一个大文件中的一个很小的片段,而不需要复制整个大文件。

6.3.3 本节习题精选

一、单项选择题
01. 文件传输协议(FTP)的一个主要特征是( )。
A. 允许客户指明文件的类型但不允许指明文件的格式
B. 不允许客户指明文件的类型但允许指明文件的格式
C. 允许客户指明文件的类型与格式
D. 不允许客户指明文件的类型与格式

01. C
FTP 提供交互式访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。

02. 以下关于 FTP 工作模型的描述中,错误的是( )。
A. FTP 使用控制连接、数据连接来完成文件的传输
B. 用于控制连接的 TCP 连接在服务器端使用的熟知端口号为 21
C. 用于控制连接的 TCP 连接在客户端使用的端口号为 20
D. 服务器端由控制进程、数据进程两部分组成

02. C
在服务器端,控制连接使用 TCP 的 21 号端口,数据连接使用 TCP 的 20 号端口;而在客户端,控制连接和数据连接的 TCP 端口号都是由客户端系统自动分配的。需要注意的是,当我们说 FTP 使用 20、21 号端口,HTTP 使用 80 号端口,SMTP 使用 25 号端口时,都是指相应协议的服务器端所使用的端口号,而客户端使用系统自动分配的端口号向这些服务的熟知端口发起连接。

03. 控制信息是带外传送的协议是( )。
A. HTTP
B. SMTP
C. FTP
D. POP

03. C
带外传送是指控制信息与数据信息通过不同的逻辑信道传送。例如,FTP 使用一个单独的控制连接来传输控制信息,而数据连接用于传送文件。带内传送是指控制信息与数据信息通过同一个逻辑信道传送。例如,HTTP 的请求和响应报文都是在同一个 TCP 连接上进行的。

04. 下列关于 FTP 连接的叙述中,正确的是( )。
A. 控制连接先于数据连接被建立,并先于数据连接被释放
B. 数据连接先于控制连接被建立,并先于控制连接被释放
C. 控制连接先于数据连接被建立,并晚于数据连接被释放
D. 数据连接先于控制连接被建立,并晚于控制连接被释放

04. C
FTP 客户首先连接服务器的 21 号端口,建立控制连接(控制连接在整个会话期间一直保持打开),然后建立数据连接,在数据传送完毕后,数据连接最先释放,控制连接最后释放。

05. FTP 客户发起对 FTP 服务器连接的第一阶段是建立( )。
A. 传输连接
B. 数据连接
C. 会话连接
D. 控制连接

05. D
FTP 工作时使用两个连接:控制连接和数据连接。FTP 客户对 FTP 服务器发起连接时,首先建立控制连接,即向服务器的 21 号 TCP 端口发起连接;然后建立数据连接(20 号 TCP 端口)。FTP 并没有传输连接和会话连接的说法。

06. FTP 中作为服务器一方的进程,通过监听( )端口得知有无服务请求。
A. 53
B. 80
C. 20
D. 21

06. D
FTP 服务器通过监听熟知端口 21(控制端口)得知有无服务请求。

07. 下列关于 FTP 的叙述中,错误的是( )。
A. FTP 可以实现异构网络中计算机之间的文件传送
B. 在进行文件传输时,FTP 客户端和服务器之间需建立两个连接
C. FTP 服务器主进程在 20 端口上监听客户端的连接请求
D. FTP 使用 TCP 进行可靠传输

07. C
因为 FTP 屏蔽了各计算机系统的细节,所以 FTP 适用于异构网络中计算机之间的文件传送。当进行文件传输时,FTP 客户端和服务器之间需建立两个并行的控制连接和数据连接。FTP 服务器主进程在熟知端口 21 上监听客户端的服务请求。FTP 在传输层使用 TCP 进行可靠传输。

08. 一个 FTP 用户发送了一个 LIST 命令来获取服务器的文件列表,这时服务器应通过( )端口来传输该列表。
A. 21
B. 20
C. 22
D. 19

08. B
FTP 中数据连接的端口是 20,而文件的列表是通过数据连接来传输的。

09. 下列关于 FTP 的叙述中,错误的是( )。
A. FTP 可以在不同类型的操作系统之间传送文件
B. FTP 并不适合用在两个计算机之间共享读写文件
C. 控制连接在整个 FTP 会话期间一直保持
D. 客户端默认使用端口 20 与服务器建立数据传输连接

09. D
控制连接建立后,服务器进程用自己传送数据的熟知端口 20 与客户进程所提供的端口号建立数据传输连接(默认为 PORT 模式),即客户进程的端口号是客户进程自己提供的。

10. 当一台计算机从 FTP 服务器下载文件时,在该 FTP 服务器上对数据进行封装的 5 个转换步骤是( )。
A. 比特,数据帧,数据报,数据段,数据
B. 数据,数据段,数据报,数据帧,比特

C. 数据报,数据段,数据,比特,数据帧
D. 数据段,数据报,数据帧,比特,数据

10. B
FTP 服务器的数据要经过应用层、传输层、网络层、数据链路层及物理层。因此,对应的封装是数据、数据段、数据报、数据帧,最后是比特。

11. FTP 支持两种方式的传输:ASCII 方式和 Binary(二进制)方式。通常文本文件的传输采用( )方式,而图像、声音等非文本文件采用( )方式传输。
A. ASCII, Binary
B. Binary, ASCII
C. ASCII, ASCII
D. Binary, Binary

11. A
FTP 支持 ASCII 和 Binary 两种方式的传输,通常非加密文本文件采用 ASCII 方式传输,而图像、声音等非文本文件采用 Binary 方式传输。本题可能有所超纲,了解即可。

12. 直接封装 FTP、DNS、DHCP 报文的协议分别是( )。
A. TCP、UDP、UDP
B. UDP、TCP、TCP
C. TCP、UDP、IP
D. UDP、UDP、UDP

12. A
FTP 需要保证数据传输的可靠性,因此采用 TCP 作为传输层协议。在 DHCP 的应用中,客户在分配到 IP 地址前无法使用 TCP 建立连接,因此只能利用 UDP 进行无连接的交互。UDP 具有简化通信、更高效、低延迟的特性,能满足 DNS 查询对快速响应和高并发的需求。

13.【2009 统考真题】FTP 客户和服务器间传递 FTP 命令时,使用的连接是( )。
A. 建立在 TCP 之上的控制连接
B. 建立在 TCP 之上的数据连接
C. 建立在 UDP 之上的控制连接
D. 建立在 UDP 之上的数据连接

13. A
对于 FTP 文件传输,为了保证可靠性,选择 TCP,排除 C 和 D。FTP 的控制信息是带外传送的,即 FTP 使用了一个分离的控制连接来传送命令,因此答案为 A。

14.【2017 统考真题】下列关于 FTP 的叙述中,错误的是( )。
A. 数据连接在每次数据传输完毕后就关闭
B. 控制连接在整个会话期间保持打开状态
C. 服务器与客户端的 TCP 20 端口建立数据连接
D. 客户端与服务器的 TCP 21 端口建立控制连接

14. C
FTP 使用控制连接和数据连接,控制连接存在于整个 FTP 会话过程中,数据连接在每次文件传输时才建立,传输结束就关闭,A 和 B 正确。默认情况(PORT 模式)下 FTP 服务器使用 TCP 20 端口进行数据连接,使用 TCP 21 端口进行控制连接,这里的端口号是指 FTP 服务器的端口号,因此 C 错误、D 正确。此外还需要注意的是,FTP 服务器是否使用 TCP 20 端口建立数据连接与传输模式有关,PORT 模式使用 TCP 20 端口,PASV 模式由服务器随机选定。

二、综合应用题
01. 文件传输协议的主要工作过程是怎样的?主进程和从属进程各起什么作用?

01.【解答】
FTP 的主要工作过程如下:在进行文件传输时,FTP 客户所发出的传送请求通过控制连接发送给服务器端的控制进程,并在整个会话期间一直保持打开,但控制连接不用来传送文件。服务器端的控制进程在接收到 FTP 客户发来的文件传输请求后,就创建数据传送进程和数据连接,数据连接用来连接客户端和服务器端的数据传输进程,数据传送进程实际完成对文件的传送,在传送完毕后关闭 “数据传送连接”,并结束运行。
FTP 的服务器进程由两大部分组成:一个主进程,负责接收新的请求;若干从属进程,负责处理单个请求。

02. 为什么 FTP 要使用两个独立的连接,即控制连接和数据连接?

02.【解答】
在 FTP 的实现中,客户与服务器之间采用了两条传输连接,其中控制连接用于传输各种 FTP 命令,而数据连接用于文件的传送。之所以这样设计,是因为使用两条独立的连接可使 FTP 变得更加简单、更容易实现、更有效率。同时在文件传输过程中,还可以利用控制连接控制传输过程,如客户可以请求终止、暂停传输等。

03. 主机 A 想下载文件ftp://ftp.abc.edu.cn/file,大致描述下载过程中主机和服务器的交互过程。

03.【解答】
大致过程如下:
① 建立一个 TCP 连接到服务器ftp.abc.edu.cn的 21 号端口,然后发送登录账号和密码。
② 服务器返回登录成功信息后,主机 A 打开一个随机端口,并将该端口号发送给服务器。
③ 主机 A 发送读取文件命令,内容为 get file,服务器使用 20 号端口建立一个 TCP 连接到主机 A 的随机打开的端口。
④ 服务器把文件内容通过第二个连接发送给主机 A,传输完毕后连接关闭。

04.【2023 统考真题】某网络拓扑如题 04 图所示,主机 H 登录 FTP 服务器后,向服务器上传一个大小为 18000B 的文件 F。假设 H 为传输 F 建立数据连接时,选择的初始序号为 100,MSS = 1000B,拥塞控制初始阈值为 4MSS,RTT = 10ms,忽略 TCP 段的传输时延;在 F 的传输过程中,H 均以 MSS 段向服务器发送数据,且未发生差错、丢包和乱序现象。

请回答下列问题。
1)FTP 的控制连接是持久的还是非持久的?FTP 的数据连接是持久的还是非持久的?当 H 登录 FTP 服务器时,建立的 TCP 连接是控制连接还是数据连接?
2)当 H 通过数据连接发送 F 时,F 的第一个字节的序号是多少?在断开数据连接过程中,FTP 服务器发送的第二次挥手 ACK 段的确认序号是多少?
3)在 H 通过数据连接发送 F 的过程中,当 H 收到确认序号为 2101 的确认段时,H 的拥塞窗口调整为多少?收到确认序号为 7101 的确认段时,H 的拥塞窗口调整为多少?
4)H 从请求建立数据连接开始,到确认 F 已被服务器全部接收为止,至少需要多长时间?期间应用层数据平均发送速率是多少?

04.【解答】
1)在 FTP 会话期间,控制连接一直处于保持状态,是持久的。当每次需要传输文件时,FTP 客户和服务器之间会建立一个临时的数据连接,用于传输文件数据,是非持久的。控制连接用于传输命令和控制信息,登录操作涉及身份验证、发送命令等控制信息,因此 H 登录 FTP 服务器时建立的 TCP 连接是控制连接。
2)建立连接时,FTP 客户发送的第一次握手 SYN 段要消耗一个序号,选择的初始序号为 100,因此发送文件 F 时,第一个字节的序号为 101。文件 F 共有 18000 个字节,需占用 18000 个序号,释放连接时,FTP 客户发送的第一次挥手 FIN 段也要消耗一个序号,所以该 FIN 段的序号为 18101,因此 TCP 服务器发送的第二次挥手 ACK 段的确认序号是 18102。
3)拥塞窗口在每个传输轮次后的变化如下表所示。前两个传输轮次,拥塞窗口小于阈值,拥塞窗口按指数增长;第 2 个传输轮次结束后,拥塞窗口增长到 4MSS,此后每经过一个传输轮次,拥塞窗口增加 1MSS。当 H 收到确认序号为 2101 的确认段时,表示服务器已收到 2000B 数据,即 2 个报文段,此时还处在第 2 个传输轮次(慢开始阶段),拥塞窗口还未达到阈值,发送方每收到一个确认,拥塞窗口就加 1,所以此时拥塞窗口为 2 + 1 = 3MSS。当 H 收到确认序号为 7101 的确认段时,表示服务器已收到 7 个报文段,第 3 轮传输结束后,发送方共发送了 1 + 2 + 4 = 7MSS 数据,所以拥塞窗口大小为 5MSS。

N 个传输轮次后

初始时

N = 1

N = 2

N = 3

拥塞窗口大小

1MSS

2MSS

4MSS

5MSS

4)每个传输轮次传输的数据量如下表所示,文件 F 的大小 18000B = 18MSS,则发送完 F 要经过 5RTT,此外还要 1 个额外的 RTT 用来建立 TCP 连接。因此,H 从请求建立数据连接开始,到确认 F 已被服务器全部接收为止,至少需要 6RTT = 6×10ms = 60ms;期间应用层数据平均发送速率是 18000B÷60ms = 300×10³B/s = 0.3MB/s = 2.4Mb/s。

k

k = 1

k = 2

k = 3

k = 4

k = 5

第 k 轮最大数据传输量

1MSS

2MSS

4MSS

5MSS

6MSS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/78492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣hot100_子串_python版本

一、560. 和为 K 的子数组 思路&#xff1a;这就是一道典型的前缀和的题代码: class Solution:def subarraySum(self, nums: List[int], k: int) -> int:presum [0] * (len(nums) 1)for i, x in enumerate(nums):presum[i 1] presum[i] x # 前缀和序列需要n1个ans 0…

猿人学web端爬虫攻防大赛赛题第15题——备周则意怠-常见则不疑

解题步骤 1、观察抓的包 2、有个m参数&#xff0c;一看就是经过处理的&#xff0c;我们得知道m是如何组成的。看Initiator模块。 3、还是看request函数&#xff0c;往上一看就看到了m的赋值操作。 打断点&#xff0c;触发。 4、看下window.m()的定义 5、比较好理解的&#x…

rag增强检索-基于关键词检索的混合检索模式

1. 为什么在 RAG 里要用关键词检索? 向量检索(embedding-based retrieval)是找语义相近的内容,但有时候不够准确。比如用户问了具体人名、产品型号、年份,这类关键词强指向性的信息,用向量检索可能匹配不到最相关内容。**关键词检索(keyword-based retrieval)**可以直接…

纯真社区IP库离线版发布更新

纯真社区IP库离线版发布更新 发布者&#xff1a;技术分享 2005年&#xff0c;随着中国互联网的蓬勃发展&#xff0c;纯真IP库诞生了。作为全球网络空间地理测绘技术的领先者&#xff0c;纯真开源项目为中国互联网行业提供了高质量的网络空间IP库数据。纯真IP库目前已经覆盖超…

GitOps进化:深入探讨 Argo CD 及其对持续部署的影响

什么是 GitOps&#xff1f; 虽然软件开发生命周期的大部分已经实现自动化&#xff0c;但基础设施仍然在很大程度上依赖于人工&#xff0c;需要专业团队的参与。随着当今基础设施需求的不断增长&#xff0c;实施基础设施自动化变得越来越重要。现代基础设施需要具备弹性&#x…

通过示例学习:连续 XOR

通过示例学习&#xff1a;连续 XOR 如果我们想在 PyTorch 中构建神经网络&#xff0c;可以使用 &#xff08;with&#xff09; 指定所有参数&#xff08;权重矩阵、偏差向量&#xff09;&#xff0c;让 PyTorch 计算梯度&#xff0c;然后调整参数。但是&#xff0c;如果我们有很…

百度Create大会深度解读:AI Agent与多模态模型如何重塑未来?

目录 百度Create大会亮点全解析&#xff1a;从数字人到Agent生态布局 数字人商业化&#xff1a;从"拟人"到"高说服力"的进化 Agent生态&#xff1a;从"心响"App看百度的Agent战略布局 "心响"App的技术架构与创新点 多模态大模型&a…

django filter 日期大于当前日期的

在Django中&#xff0c;如果你想要过滤出日期大于当前日期的记录&#xff0c;你可以使用Django的QuerySet API中的__gt&#xff08;大于&#xff09;操作符。这里是如何做到这一点的步骤&#xff1a; 确定你的模型&#xff1a;首先&#xff0c;确保你有一个模型&#xff08;Mo…

C#本地使用离线ocr库识别图片中文本,工具包PaddleOCRSharp

C#本地使用离线ocr库识别图片文本&#xff0c;工具包PaddleOCRSharp PaddleOCRSharp介绍 项目地址&#xff1a;https://github.com/raoyutian/PaddleOCRSharp PaddleOCRSharp 是一个.NET版本OCR可离线使用类库。项目核心组件PaddleOCR.dll目前已经支持C\C、.NET、Python、Go…

缺省处理、容错处理

布尔判定 假&#xff1a;false 0 null undefined NaN 可选符.?和&#xff1f;&#xff1f; let obj {name: jim,data: {money: 0,age: 18,fn(a){return a}} }1、如果左侧的值为null或者undefined&#xff0c;则使用右侧值。需要使用"??" obj?.data?.a…

【Java面试题系列02】Java 集合常见面试题

文章目录 一、前言&#x1f680;&#x1f680;&#x1f680;二、Java 基础面试题&#xff1a;☀️☀️☀️1、说说 Java 中 HashMap 的原理&#xff1f;2、HashMap 的扩容机制&#xff1f;3、为什么 Java 中 HashMap 的默认负载因子是 0.75?4、JDK 1.8 对 HashMap 除了红黑树还…

如何创建并使用极狐GitLab 部署令牌?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 部署令牌 (BASIC ALL) 您可以使用部署令牌来启用部署任务的身份验证&#xff0c;而与用户账户无关。在大多数情况下&#xf…

OpenGl ES 3.0 笔记一:初步概念

&#x1f3af; 整体比喻&#xff1a;开一场 3D 打印画展&#xff01; 想象你在做一件事情&#xff1a;「拿设计图&#xff0c;把它画在一张纸上」。 这整个流程就好像 GPU 在渲染一幅画。 而下面这几个阶段&#xff0c;就是这场「画展」里每个具体的人或机器要做的事情&#x…

人类社会的第四阶段

本书的主旨是探讨一场新的权力革命&#xff0c;它将以20世纪民族国家的毁灭为代价&#xff0c; 解放出个体。创新&#xff0c;以前所未有的方式改变了暴力的逻辑&#xff0c;并且正在革新未来的 边界。如果我们的推论是正确的&#xff0c;你们正站在一场有史以来最宏大的革命的…

位置差在坐标系间的相互转换

1 NED转经纬高 &#xff08;n 系下的北向、东向和垂向位置差异&#xff08;单位 m&#xff09;转化为纬度、经度和高程分量的差异&#xff09; 2 基站坐标转换 纬度、经度、高程 到 ECEF %纬度、经度、高程 到 ECEF clc; clear; glvs; addpath(genpath(E:\GNSSINS\ACES)…

WPF定义扩展属性和依赖属性

WPF扩展属性与依赖属性详解 一、依赖属性(Dependency Property)详解 1. 什么是依赖属性? 依赖属性是WPF框架的核心特性之一,它允许属性值依赖于: 父元素的属性值(继承)样式和模板动画数据绑定资源查找2. 依赖属性的特点 ​​属性值继承​​:子元素可以继承父元素的属性…

边缘函数:全栈开发的最后1毫秒性能革命

一、边缘计算的时空折叠术 1. 传统CDN vs. 智能边缘网络 全球电商平台实测数据&#xff1a; 场景云端处理延迟边缘处理延迟转化率提升搜索建议320ms8ms18%个性化推荐450ms12ms27%实时库存检查680ms9ms42%欺诈检测920ms15ms63% 二、边缘全栈架构的量子纠缠 1. 代码的时空分布…

Codeforces Round 1021 (Div. 2) D. Baggage Claim(建图)

每周五篇博客&#xff1a;&#xff08;4/5&#xff09; https://codeforces.com/contest/2098/problem/D 题意 每个机场都有一个行李索赔区&#xff0c;巴尔贝索沃机场也不例外。在某个时候&#xff0c;Sheremetyevo的一位管理员提出了一个不寻常的想法&#xff1a;将行李索…

LLM(大语言模型)技术的最新进展可总结

截至2025年4月26日&#xff0c;LLM&#xff08;大语言模型&#xff09;技术的最新进展可总结为以下关键方向&#xff1a; 1. 架构创新与性能突破 多模态能力深化&#xff1a;GPT-4o等模型通过统一架构支持文本、图像、音频和视频的跨模态推理&#xff0c;显著提升复杂场景下的…

黑马点评redis改 part 6

GEO数据结构 GEO就是Geolocation的简写形式&#xff0c;代表地理坐标。Redis在3.2版本中加入了对GEO的支持&#xff0c;允许存储地理坐标信息&#xff0c;帮助我们根据经纬度来检索数据。常见的命令有&#xff1a; GEOADD&#xff1a;添加一个地理空间信息&#xff0c;包含&a…