【计算机网络 (谢希仁) 习题题解】第4章 网络层 (1)


本章最重要的内容是:

  • 虚拟互连网络的概念。
  • IP 地址与物理地址的关系。
  • 传统的分类的 IP 地址 (包括子网掩码) 和无分类域间路由选择 CIDR。
  • 路由选择协议的工作原理。

ARP 协议

网络层使用的是 IP 地址,但在实际网络的链路上传送数据帧时,最终还是必须使用该网络的硬件地址。但 IP 地址和下面的网络的硬件地址之间由于格式不同而不存在简单的映射关系。ARP 解决这个问题的方法是在主机 ARP 高速缓存中存放一个从 IP 地址到硬件地址的映射表,并且这个映射表还经常动态更新。

每一台主机都设有一个 ARP 高速缓存 (ARP cache),里面有本局域网上的各主机和路由器的 IP 地址到硬件地址的映射表,这些都是该主机目前知道的一些地址。主机怎样知道这些地址呢?

  • 当主机 A 要向本局域网上的某台主机 B 发送 IP 数据报时,先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就在 ARP 高速缓存中查出其对应的硬件地址,再把这个硬件地址写入 MAC 帧,然后通过局域网把该 MAC 帧发往此硬件地址。
  • 也有可能查不到主机 B 的 IP 地址的项目。在这种情况下,主机 A 就自动运行 ARP,然后按以下步骤找出主机 B 的硬件地址。
    (1) ARP 进程在本局域网上广播发送一个 ARP 请求分组。ARP 请求分组的主要内容是:“我的 IP 地址是 209.0.0.5,硬件地址是 00-00-C0-15-AD-18。我想知道 IP 地址为 209.0.0.6 的主机的硬件地址。”
    (2) 在本局域网上的所有主机运行的 ARP 进程都收到此 ARP 请求分组。
    (3) 主机 B 的 IP 地址与 ARP 请求分组要查询的 IP 地址一致,就收下这个 ARP 请求分组,并向主机 A 发送 ARP 响应分组 (单播),同时在这个 ARP 响应分组中写入自己的硬件地址。其他主机不理睬这个 ARP 请求分组。响应分组的主要内容是:“我的 IP 地址是 209.0.0.6,我的硬件地址是 08-00-2B-00-EE-0A。”
    (4) 主机 A 收到主机 B 的 ARP 响应分组后,就在其 ARP 高速缓存中写入主机 B 的 IP 地址到硬件地址的映射。
  • 为了减少网络上的通信量,当主机 B 收到 A 的 ARP 请求分组时,就把主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。

ARP 对保存在高速缓存中的每一个映射地址项目都设置生存时间 (如 10 ~ 20 分钟)。凡超过生存时间的项目就从高速缓存中删除掉。

注意:ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。

从 IP 地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。只要主机或路由器要和本网络中的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地把这个 IP 地址解析为链路层所需要的硬件地址。

既然在网络链路上传送的帧最终是按照硬件地址找到目的主机的,那么为什么还要使用抽象的 IP 地址,而不直接使用硬件地址进行通信?

  • 由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此由用户或用户主机来完成这项工作几乎是不可能的事。但 IP 编址把这个复杂问题解决了。连接到互联网的主机只需各自拥有一个唯一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为上述的调用 ARP 的复杂过程都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。

IP 数据报格式

【计算机网络 (谢希仁) 习题题解】第4章 网络层 (1)_第1张图片

  • 版本:指 IP 协议的版本。目前广泛使用的 IP 协议版本号为 4 (即 IPv4)。
  • 首部长度:单位是 32 位字 (即 4 字节)。最小值是 5,最大值是 15 (即 60 字节)。当 IP 分组的首部长度不是 4 字节的整数倍时,必须利用最后的填充字段加以填充。
  • 区分服务:只有在使用区分服务 DS (Differentiated) 时,这个字段才起作用。
  • 总长度:首部和数据之和的长度,单位为字节。数据报最大长度为 2 16 − 1 = 65525 2^{16}-1 = 65525 2161=65525 字节。
  • 标识 (identification):IP 软件在存储器中维持一个计数器,每产生一个数据报,计数器就加 1,并将此值赋给标识字段。当数据报由于长度超过网络的 MTU 而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
  • 标志 (flag):占 3 位,目前只有两位有意义。
    标志字段中的最低位记为 MF (More Fragment)。MF = 1 表示后面“还有分片”的数据报。MF = 0 表示这已是若干数据报片中的最后一个。
    标志字段中间的一位记为 DF (Don’t Fragment)。意思是“不能分片”。只有当 DF = 0 时才允许分片。
  • 片偏移:较长的分组在分片后,某片在原分组中的相对位置。即,相对于用户数据字段的起点。片偏移以 8 个字节为偏移单位。
    【计算机网络 (谢希仁) 习题题解】第4章 网络层 (1)_第2张图片
  • 生存时间 TTL (Time To Live):表明这是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在互联网中兜圈子。
    现在 TTL 的单位是跳数。TTL 的意义是指明数据报在互联网中至多可经过多少个路由器。最大数值是 255。
    若把 TTL 的初始值设置为 1,就表示这个数据报只能在本局域网中传送。因为这个数据报一传送到局域网上的某个路由器,在被转发之前 TTL 值就减小到零,被这个路由器丢弃。
  • 协议:指出此数据报携带的数据是使用何种协议,以便使目的主机的 IP 层知道应将数据部分上交给哪个协议处理。
协议名 ICMP IGMP IP TCP EGP IGP UDP IPv6 ESP OSPF
协议字段值 1 2 4 6 8 9 17 41 50 89
  • 首部检验和:只检验数据报的首部,但不包括数据部分。IP 首部的检验和不采用复杂的 CRC 检验码而采用下面的简单计算方法:
    【计算机网络 (谢希仁) 习题题解】第4章 网络层 (1)_第3张图片
    二进制反码求和运算:从低位到高位逐列进行计算。0 + 0 = 0;0 + 1 = 1;1 + 1 = 0,产生一个进位 1,加到下一列。若最高位相加后产生进位,则最后得到的结果要加 1。

IP 层转发分组的流程

在互联网上转发分组时,是从一个路由器转发到下一个路由器
路由器是怎样转发分组的?
路由表指出到某个网络应如何转发,每个路由器中的路由表中的每一行对应于一个网络
在路由表中,对每一条路由最主要的是两个信息:
目的网络地址下一跳地址

互联网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下允许有特例,即对特定的目的主机指明一个路由。这种路由叫做特定主机路由

路由器还可采用默认路由 (default route) 以减小路由表所占用的空间何搜索路由表所用的时间。
【计算机网络 (谢希仁) 习题题解】第4章 网络层 (1)_第4张图片
在 IP 数据报的首部写上的 IP 地址是源 IP 地址何目的 IP 地址,没有中间经过的路由器的 IP 地址。那么待转发的数据报怎样能够找到下一跳路由器呢?
当路由器收到一个待转发的数据报,在从路由表得出下一跳路由器的 IP 地址后,把这个地址送交数据链路层的网络接口软件。网络接口软件负责把下一跳路由器的 IP 地址转换成硬件地址 (使用 ARP),将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器。

分组转发算法

  • (1) 从数据报的首部提取目的主机的 IP 地址 D,得出目的网络地址为 N。
  • (2) 若 N 就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,直接把数据报交付目的主机 (包括把 D 转换为具体的硬件地址,把数据报封装为 MAC 帧,再发送此帧);否则就是间接交付,执行 (3)。
  • (3) 若路由器有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行 (4)。
  • (4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表中所指明的下一跳路由器;否则执行 (5)。
  • (5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则执行 (6)。
  • (6) 报告转发分组出错。

4-01 网络层向上提供的服务有哪两种?试比较其优缺点。

对比的方面 虚电路服务 数据报服务
思路 可靠通信应当由网络来保证 可靠通信应当由用户主机来保证
连接的建立 必须有 不需要
终点地址 仅在连接建立阶段使用,每个分组使用短的虚电路号 每个分组都有终点的完整地址
分组的转发 属于同一条虚电路的分组均按照同一路由进行转发 每个分组独立选择路由进行转发
当结点出故障时 所有通过出故障的结点的虚电路均不能工作 出故障的结点可能会丢失分组,一些路由可能会发生变化
分组的顺序 总是按发送顺序到达终点 到达终点的时间不一定按发送顺序
端到端的差错处理和流量控制 可以由网络负责,也可以由用户主机负责 由用户主机负责
  • 若使用面向连接的通信方式,应先建立一条虚电路 VC (Virtual Circuit),以预留双方通信所需的一切网络资源。
    优点:这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点,不丢失、不重复。
    缺点:网络造价高。
  • 互联网采用的设计思路:网络层向上只提供简单灵活的、无连接的、尽最大努力交付 (best effort delivery) 的数据报服务
    优点:网络造价大大降低,运行方式灵活,能够适应多种应用。
    缺点:网络层不提供服务质量的承诺。所传送的分组可能出错、丢失、重复和失序,不保证分组交付的时限。

4-02 网络互连有何实际意义?进行网络互连时,有哪些共同的问题需要解决?

由于参加互连的计算机网络都使用相同的网际协议 IP,因此可以把互连以后的计算机网络看成一个虚拟互连网络
所谓虚拟互连网络也就是逻辑互连网络,它的意思是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用 IP 协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。这种使用 IP 协议的虚拟互连网络可简称为 IP 网 (IP 网是虚拟的)。

使用 IP 网的好处是:当 IP 网上的主机进行通信时,就好像在一个单个网络上通信一样,它们看不见互连的各网络的具体异构细节 (如具体的编址方案、路由选择协议等)。
如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网 (Internet)。互联网可以由多种异构网络互连组成

有关 IP 最重要的文档是互联网的正式标准 RFC 791。


4-03 作为中间设备,转发器、网桥、路由器和网关有何区别?

  • 物理层使用的中间设备叫做转发器 (repeater)。
  • 数据链路层使用的中间设备叫做网桥桥接器 (bridge)。
  • 网络层使用的中间设备叫做路由器 (router)。
  • 在网络层以上使用的中间设备叫做网关 (gateway)。用网关连接两个不兼容的系统需要在高层进行协议的转换。

当中间设备是转发器或网桥时,这仅仅是把一个网络扩大了,而从网络层的角度看,这仍然是一个网络,一般并不称之为网络互连。
网关由于比较复杂,目前使用得较少。
现在讨论网络互连时,都是指用路由器进行网络互连和路由选择。路由器其实就是一台专用计算机,用来在互联网中进行路由选择。


4-04 试简单说明下列协议的作用:IP,ARP,RARP 何 ICMP。
【计算机网络 (谢希仁) 习题题解】第4章 网络层 (1)_第5张图片

  • 网际协议 IP (Internet Protocol):使性能各异的网络在网络层上看起来好像是一个统一的网络。
  • 地址解析协议 ARP (Address Resolution Protocol):从网络层使用的 IP 地址,解析出在数据链路层使用的硬件地址。
  • 逆地址解析协议 RARP (Reverse Address Resolution Protocol):与 ARP 协议配合使用,它的作用是使知道自己硬件地址的主机能够通过 RARP 协议找出其 IP 地址。现在的 DHCP 协议已经包含了 RARP 协议的功能。RARP 已被淘汰不使用了。
  • 网际控制报文协议 ICMP (Internet Control Message Protocol):允许主机或路由器报告差错情况和提供有关异常情况的报告。更有效地转发 IP 数据报和提高交付成功的机会。
  • 网际组管理协议 IGMP (Internet Group Management Protocol):使多播路由器知道多播组成员信息。IGMP 协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机参加或退出了某个多播组。

4-05 IP 地址分为几类?各如何表示?IP 地址的主要特点是什么?

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

IP 地址的编制方法:

  • 分类的 IP 地址。这是最基本的编址方法。
  • 子网的划分。这是堆最基本的编址方法的改进。
  • 构成超网。这是比较新的无分类编址方法。

“分类的 IP 地址”是将 IP 地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中第一个字段是网络号 (net-id),它标志主机 (或路由器) 所连接到的网络。第二个字段是主机号 (host-id),它标志该主机 (或路由器)。一个 IP 地址在整个互联网范围内是唯一的

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

【计算机网络 (谢希仁) 习题题解】第4章 网络层 (1)_第6张图片
A 类、B 类和 C 类地址都是单播地址 (一对一通信),是最常用的。

由于近年来已经广泛使用无分类 IP 地址进行路由选择,A 类、B 类和 C 类地址的区分已成为历史。

为了便于书写,可使用点分十进制记法 (dotted decimal notaion) 表示 IP 地址。
【计算机网络 (谢希仁) 习题题解】第4章 网络层 (1)_第7张图片

IP 地址具有一些重要特点:

  • 每一个 IP 地址都由网络号和主机号两部分组成。故,IP 地址是一种分等级的地址结构
    分等级的好处:
    ① IP 地址管理机构在分配 IP 地址时只分配网络号 (第一级),主机号 (第二级) 由得到该网络号的单位自行分配。这方便了 IP 地址的管理;
    ②路由器仅根据目的主机所连接的网络号来转发分组,这样可使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间以及查找路由表的时间
  • 实际上 IP 地址是标志一台主机 (或路由器) 和一条链路的接口。当一台主机同时连接到两个网络上时,该主机必须同时具有两个相应的 IP 地址,其网络号必须是不同的。这种主机称为多归属主机 (multihomed host)。一个路由器至少应当有两个不同的 IP 地址。
  • 按照互联网的观点,一个网络是指具有相同网络号 net-id 的主机的集合,因此,用转发器或网桥连接起来的若干个局域网仍为一个网络。具有不同网络号的局域网必须使用路由器进行互连。
  • 在 IP 地址中,所有分配到网络号的网络都是平等的。所谓平等,是指互联网同等对待每一个 IP 地址。

当两个路由器直接相连时 (例如通过一条租用线路),在连线两端的接口处,可以分配也可以不分配 IP 地址。如分配了 IP 地址,则这一段连线就构成了一种只包含一段线路的特殊“网络”。但为了节省 IP 地址资源,对于这种特殊“网络”,现在也常常不分配 IP 地址。通常把这样的特殊网络叫做无编号网络 (unnumbered network) 或无名网络 (anonymous network)。


4-06 试根据 IP 地址的规定,计算出表 4-2 中的各项数据。

表 4-2 IP 地址的指派范围

网络类别 最大可指派的网络数 第一个可指派的网络号 最后一个可指派的网络号 每个网络中的最大主机数
A 126 ( 2 7 − 2 ) (2^7-2) (272) 1 126 16777214 ( 2 24 − 2 2^{24}-2 2242)
B 16383 ( 2 14 − 1 ) (2^{14}-1) (2141) 128.1 191.255 65534 ( 2 14 − 1 2^{14}-1 2141)
C 2097151 ( 2 21 − 1 ) (2^{21}-1) (2211) 192.0.1 223.255.255 254 ( 2 8 − 2 2^8-2 282)

表 4-3 一般不使用的特殊 IP 地址

网络号 主机号 源地址使用 目的地址使用 代表的意思
0 0 × 在本网络上的本主机
0 host-id × 在本网络上的某台主机 host-id
全 1 全 1 × 只在本网络上进行广播 (各路由器均不转发)
net-id 全 1 × 对 net-id 上的所有主机进行广播
127 (即 01111111) 非全 0 或全 1 的任何数 用于本地软件环回测试 (loopback test)
  • A 类地址可指派的网络号个数是 2 7 − 2 2^7-2 272
    减 2 的原因是:①IP 地址中的全 0 表示“这个” (this);②网络号为 127 保留作为本地软件环回测试本主机进程之间的通信之用。
    若主机发送一个目的地址为环回地址 (如 127.0.0.1) 的 IP 数据报,则本主机中的协议软件就处理数据报中的数据,不会把数据报发送到任何网络。网络号为 127 的地址根本不是一个网络地址。
    A 类网络中的最大主机数是 2 24 − 2 2^{24}-2 2242
    减 2 的原因是:①全 0 的主机号字段表示该 IP 地址是“本主机”所连接到的单个网络地址 (例,IP 地址为 5.6.7.8 的主机所在的网络地址是 5.0.0.0);②全 1 表示“所有的” (all),因此全 1 的主机号字段表示该网络上的所有主机。
  • B 类地址可指派的网络号个数是 2 14 − 1 2^{14}-1 2141
    因为不可能出现全 0 或全 1 的网络号,故不存在减 2 问题。但实际上 B 类网络地址 128.0.0.0 是不指派的。
    B 类地址的每一个网络上的最大主机数是 2 16 − 2 2^{16}-2 2162。这里减 2 是因为要扣除全 0 和 全 1 的主机号。
  • C 类网络地址 192.0.0.0 是不指派的。

4-07 试说明 IP 地址与硬件地址的区别。为什么要使用这两种不同的地址?
【计算机网络 (谢希仁) 习题题解】第4章 网络层 (1)_第8张图片
从层次的角度看,物理地址是数据链路层和物理层使用的地址,而IP 地址是网络层和以上各层使用的地址,是一种逻辑地址 (称 IP 地址为逻辑地址是因为 IP 地址是用软件实现的)。
IP 地址放在 IP 数据报的首部,硬件地址放在 MAC 帧的首部。
【计算机网络 (谢希仁) 习题题解】第4章 网络层 (1)_第9张图片
尽管互连在一起的网络的硬件地址体系各不相同,但IP 层抽象的互联网却屏蔽了下层这些很复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的 IP 地址研究主机和主机或路由器之间的通信


4-08 IP 地址方案与我国的电话号码体制的主要不同点是什么?

IP 地址分为网络号和主机号,它不反映有关主机地理位置的信息。而电话号码反映有关电话的地理位置的信息。
我国电话号码体制是按照行政区域划分的层次结构,同一地域的电话号码有相同的若干位前缀。


4-09 (1) 子网掩码为 255.255.255.0 代表什么意思?
(2) 一个网络的现在掩码为 255.255.255.248,问该网络能够连接多少台主机?
(3) 一个 A 类网络何一个 B 类网络的子网号 subnet-id 分别为 16 个 1 和 8 个 1,问这两个网络的子网掩码有何不同?
(4) 一个 B 类地址的子网掩码是 255.255.240.0。试问在其中每一个子网上的主机数最多是多少?
(5) 一个 A 类网络的子网掩码 255.255.0.255,它是否为有效的子网掩码?
(6) 某个 IP 地址到达十六进制表示是 C2.2F.14.81,试将其转换为点十进制的形式。这个地址是哪一类 IP 地址?
(7) C 类网络使用子网掩码有无实际意义?为什么?

:(1) C 类地址对应的子网掩码默认值。也可以是 A 类或 B 类地址的掩码,即主机号由最后 8 位决定,而路由器寻找网络由前 24 位决定。

(2) 248 的二进制为 1111 1000。主机号由最后 3 位决定。
连接主机台数为 2 3 − 2 = 6 2^3-2 = 6 232=6 台。

(3) 子网掩码一样,但子网数目不同。子网掩码均为 255.255.255.0。
子网数目分别为 2 16 − 2 = 65534 2^{16}-2 = 65534 2162=65534 个, 2 8 − 2 = 254 2^8-2 = 254 282=254 个。除去全 1 和全 0 两种情况。

(4) 240 的二进制为 1111 0000。主机号由最后 12 位决定。
每个子网的主机数最多是 2 12 − 2 = 4094 2^{12}-2 = 4094 2122=4094 个。

(5) 有效,但不推荐这样使用。

(6) 点十进制形式:194.47.20.129。这是 C 类 IP 地址。

(7) 有。对于小网络这样做还可进一步简化路由表。


4-10 试辨认以下 IP 地址的网络类别:
(1) 128.36.199.3
(2) 21.12.240.17
(3) 183.194.76.253
(4) 192.12.69.248
(5) 89.3.0.1
(6) 200.3.6.2

:(2) 和 (5) 是 A 类地址。(1) 和 (3) 是 B 类地址。(4) 和 (6) 是 C 类地址。

IP 地址类型 范围
A 0.0.0.0 ~ 127.255.255.255
B 128.0.0.0 ~ 191.255.255.255
C 192.0.0.0 ~ 223.255.255.255
D 224.0.0.0 ~ 239.255.255.255
E 240.0.0.0 ~ 247.255.255.255

4-11 IP 数据报中的首部检验何并不检验数据报中数据。这样做的最大好处是什么?坏处是什么?

好处:转发分组更快。

缺点:数据部分出现差错时不能及早发现。


4-12 当某个路由器发现一 IP 数据报的检验和有差错时,为什么采取丢弃的办法而不是要求源站重传此数据报?计算首部检验和为什么不采用 CRC 检验码?

IP 首部中的源地址也可能变成错误的,请错误的源地址重传数据报是没有意义的。

不使用 CRC 可减少路由器进行检验的时间。


4-13 设 IP 数据报使用固定首部,其各字段的具体数值如图 4-65 所示 (除 IP 地址外,均为十进制表示)。试用二进制运算方法计算应当写入到首部检验和字段中的数值 (用二进制表示)。
【计算机网络 (谢希仁) 习题题解】第4章 网络层 (1)_第10张图片

	01000101 00000000
	00000000 00011100
	00000000 00000001
	00000000 00000000
	00000100 00010001
	00001010 00001100	# 10.12
	00001110 00000101	# 14.5
	00001100 00000110	# 12.6
	00000111 00001001	# 7.9
——————————————————————
	01110100 01001110	# 反码运算求和
——————————————————————
	10001011 10110001	# 取反码

写入到首部检验和字段中的数值为 10001011 10110001


4-14 重新计算上题,但使用十六进制运算方法 (每 16 位二进制数字转换为 4 个十六进制数字,再按十六进制加法规则计算)。比较这两种方法。

	45 00
	00 1C
	00 01
	00 00
	04 11
	0A 0C	# 10.12
	0E 05	# 14.5
	0C 06	# 12.6
	07 09	# 7.9
——————————————————————
	74 4E	# 反码运算求和
	01110100 01001110	# 转换为二进制
——————————————————————
	10001011 10110001	# 取反码
	8B B1	# 转换为十六进制

4-15 什么是最大传送单元 MTU?它和 IP 数据报首部中的哪个字段有关系?

在 IP 层下面的每一种数据链路层协议都规定了一个数据帧中的数据字段的最大长度,这称为最大传送单元 MTU (Maximum Transfer Unit)。例如,最常用的以太网就规定其 MTU 值是 1500 字节。
当一个 IP 数据报封装成链路层的帧时,此数据报的总长度一定不能超过下面的数据链路层所规定的 MTU 值。
若传送的数据报长度超过数据链路层的 MTU 值,就必须把过长的数据报进行分片处理。

在进行分片时 (见“片偏移”字段),数据报首部中的“总长度”字段是指分片后的每一个分片的首部长度与该分片的数据长度的总和。


4-16 在互联网中将 IP 数据报分片传送的数据报在最后的目的主机进行组装。还可以有另一种做法,即数据报片通过一个网络就进行一次组装。试比较这两种方法的优劣。

在目的站而不是在中间的路由器进行组装是由于:

  • 路由器处理数据报更简单些;
  • 并非所有的数据报片都经过同样的路由器,因此在每一个中间的路由器进行组装可能总会缺少几个数据报片;
  • 也许分组后面还要经过一个网络,它还要给这些数据报片划分成更小的片。如果在中间的路由器进行组装就可能会组装多次。

4-17 一个 3200 位长的 TCP 报文传到 IP 层,加上 160 位的首部后成为数据报。下面的互联网由两个局域网通过路由器连接起来,但第二个局域网所能传送的最长数据帧中的数据部分只有 1200 位,因此数据报在路由器必须进行分片。试问第二个局域网向其上层要传送多少比特的数据 (这里的“数据”当然指的是局域网看见的数据)?

:IP 数据报片的数据部分的长度最长为 1040 位,故要分成 4 个数据报片,即要加上 4 个首部。
所以第二个局域网向其上层传送的数据是 3200 + 160 × 4 = 3840 比特。


4-18 (1) 有人认为:“ARP 协议向网络层提供了转换地址的服务,因此 ARP 应当属于数据链路层。”这种说法为什么是错误的?
(2) 试解释为什么 ARP 高速缓存每存入一个项目就要设置 10 ~ 20 分钟的超时计时器。这个时间设置得太大或太小会出现什么问题?
(3) 举出至少两种不需要发送 ARP 请求分组的情况 (即不需要请求将某个目的 IP 地址解析为相应的硬件地址)。

:(1) 不能说“ARP 向网络层提供了服务”,因为 ARP 本身是网络层的一部分 (但 IP 使用 ARP)。数据链路层使用硬件地址而不使用 IP 地址,因此 ARP 不在数据链路层。

(2) 当网络中某个 IP 地址和硬件地址的映射发生变化时,ARP 高速缓存中的相应的项目就要改变。例如,更换以太网网卡就会发生这样的事件。10 ~ 20 分钟更换一块网卡是合理的。超时时间太短会使 ARP 请求和响应分组的通信量太频繁,而超时时间太长会使更换网卡后的主机迟迟无法和网络上的其他主机通信。

(3) 在源主机的 ARP 高速缓存中已经有了该目的 IP 地址的项目;源主机发送的是广播分组;源主机和目的主机使用点对点链路。


4-19 主机 A 发送 IP 数据报给主机 B,途中经过了 5 个路由器。试问在 IP 数据报的发送过程中总共使用了几次 ARP?

:6 次。主机用一次,每一个路由器各使用一次。


4-20 设某路由器建立了如下路由表:

目的网络 子网掩码 下一跳
128.96.39.0 255.255.255.128 接口 m0
128.96.39.128 255.255.255.128 接口 m1
128.96.40.0 255.255.255.128 R 2 R_2 R2
192.4.153.0 255.255.255.192 R 3 R_3 R3
* (默认) R 4 R_4 R4

现共收到 5 个分组,其目的地址分别为:
(1) 128.96.39.10
(2) 128.96.40.12
(3) 128.96.40.151
(4) 192.4.153.17
(5) 192.4.153.90
试分别计算其下一跳。

:(1) 128.96.39.10 AND 255.255.255.128 = 128.96.39.0,与第一行的目的网络一致,故下一跳是接口 m0。

(2) 128.96.40.12 AND 255.255.255.128 = 128.96.40.0,与第三行目的网络一致,故下一跳是 R 2 R_2 R2

(3) 将目的地址与路由表中每一行的子网掩码相“与”,得出的网络与路由表中的目的网络都不相等,故下一跳是 R 4 R_4 R4

(4) 192.4.153.17 AND 255.255.255.192 = 192.4.153.0,与第四行目的网络一致,故下一跳是 R 3 R_3 R3

(5) 将目的地址与路由表中每一行的子网掩码相“与”,得出的网络与路由表中的目的网络都不相等,故下一跳是 R 4 R_4 R4


4-21 某单位分配到一个 B 类 IP 地址,其 net-id 为 129.250.0.0。该单位有 4000 台机器,平均分布在 16 个不同的地点。如选用子网掩码为 255.255.255.0,试给每一个地点分配一个子网号码,并算出每个地点主机号码的最小值和最大值。

:4000 / 16 = 250,即每个地点平均有 250 台机器。
最多子网个数为 2 8 − 2 = 254 ≥ 16 2^8-2 = 254 \ge 16 282=25416,每个子网的主机数最多为 2 8 − 2 = 254 ≥ 250 2^8-2 = 254 \ge 250 282=254250,能满足实际需求。

地点 子网号码 主机号码的最小值 主机号码的最大值
1 129.250.1.0 129.250.1.1 129.250.1.254
2 129.250.2.0 129.250.2.1 129.250.2.254
3 129.250.3.0 129.250.3.1 129.250.3.254
4 129.250.4.0 129.250.4.1 129.250.4.254
5 129.250.5.0 129.250.5.1 129.250.5.254
6 129.250.6.0 129.250.6.1 129.250.6.254
7 129.250.7.0 129.250.7.1 129.250.7.254
8 129.250.8.0 129.250.8.1 129.250.8.254
9 129.250.9.0 129.250.9.1 129.250.9.254
10 129.250.10.0 129.250.10.1 129.250.10.254
11 129.250.11.0 129.250.11.1 129.250.11.254
12 129.250.12.0 129.250.12.1 129.250.12.254
13 129.250.13.0 129.250.13.1 129.250.13.254
14 129.250.14.0 129.250.14.1 129.250.14.254
15 129.250.15.0 129.250.15.1 129.250.15.254
16 129.250.16.0 129.250.16.1 129.250.16.254

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

:固定首部长度为 20 字节,故数据部分长度为 3980 字节,每个数据报片的数据部分长度不超过 1480 字节。应当划分为 3 个数据报片。

总长度 (字节) 数据字段长度 (字节) MF 片偏移
原始数据报 4000 3980 0 0
数据报片 1 1500 1480 1 0
数据报片 2 1500 1480 1 185 (2480/8)
数据报片 3 1040 1020 0 370 (2960/8)

4-46 试把下列 IPv4 地址从二进制记法转换为点分十进制记法。
(1) 10000001 00001011 00001011 11101111
(2) 11000001 10000011 00011011 11111111
(3) 11100111 11011011 10001011 01101111
(4) 11111001 10011011 11111011 00001111

:(1) 129.11.11.239
(2) 193.131.27.255
(3) 231.219.139.111
(4) 249.155.251.15


4-47 下列 IPv4 地址是否有错误?如有,请指出。
(1) 111.56.045.78
(2) 221.34.7.8.20
(3) 75.45.301.14
(4) 11100010.23.14.67

:(1) 在点分十进制记法中不应当有以 0 开头的数 (045)。
(2) IPv4 地址不能超过 4 个字节。
(3) 每个字节必须小于或等于 255,而 301 超过了这个范围。
(4) 二进制记法和点分十进制记法混合使用是不允许的。


4-48 假设一段地址的首地址为 146.102.29.0,末地址为 146.102.32.255,求这个地址段的地址数。

:146.102.29.0 ~ 146.102.29.0 范围内有 256 个地址。
这个地址段的地址数为 4 × 256 = 1024 4 \times 256 = 1024 4×256=1024 个。


4-49 求下列每个地址的类别。
(1) 00000001 00001011 00001011 11101111
(2) 11000001 10000011 00011011 11111111
(3) 10100111 11011011 10001011 01101111
(4) 11110011 10011011 11111011 00001111

:(1) A 类 (2) C 类 (3) B 类 (4) E 类


4-50 求下列每个地址的类别。
(1) 227.12.14.87
(2) 193.14.56.22
(3) 14.23.120.8
(4) 252.5.15.111

:(1) D 类 (2) C 类 (3) A 类 (4) E 类


【计算机网络 (谢希仁) 习题题解】目录

你可能感兴趣的:(计算机网络,网络,子网掩码,计算机网络)