网络层
408计算机网络

网络层

网络层提供的两种服务争论:网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”),实质是在计算机通信中,可靠交付应当由网络还是端系统负责电信网(电话服务)的成功经验:网络用面向连接的通信方式负...

花野猫

花野猫

更新于 2024-04-26

7134

网络层提供的两种服务

争论:网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”),实质是在计算机通信中,可靠交付应当由网络还是端系统负责

  • 电信网(电话服务)的成功经验:网络用面向连接的通信方式负责可靠交付。因电话机没有差错处理能力。因此电信网必须使用昂贵的程控交换机(其软件也非常复杂)负责将话音信号可靠地传送到对方的电话机,
  • 互联网的设计思路:计算机网络的端系统有很强的差错处理能力。网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。“数据报”(datagram)是互联网的设计者最初使用的名词,其实数据报(或 IP 数据报)就是“分组”。

网络在发送分组时不需要先建立连接。每一个分组独立发送,与其前后的分组无关(不进行编号)。网络层不提供服务质量的承诺,所传送的分组可能出错、丢失、重复和失序,也不保证分组交付的时限。这就使网络中的路由器比较简单,且价格低廉 (与电信网的交换机相比较)。如果主机中的进程之间的通信需要是可靠的, 就由网络的主机中的运输层负责(包括差错处理、流量控制等)。好处是:网络造价大大降低,运行方式灵活,能够适应多种应用。

OSI 体系的支持者曾极力主张在网络层使用可靠传输的虚电路服务,也曾推出过虚电路服务的标准—ITU-T 的 X.25 建议书。但现在 X.25 早已成为历史了。

对比的方面虚电路服务数据报服务
思路可靠通信应当由网络来保证可靠通信应当由用户主机来保证
连接的建立必须有不需要
终点地址仅在连接建立阶段使用,每个分组使用短的虚电路号每个分组都有终点的完整地址
分组的转发属于同一条虚电路的分组均按照同一路由进行转发每个分组独立选择路由进行转发
当结点出故障时所有通过出故障的结点的虚电路均不能工作出故障的结点可能会丢失分组, 一些路由可能会发生变化
分组的顺序总是按发送顺序到达终点到达终点的时间不一定按发送顺序
端到端的差错处理和流量控制可以由网络负责,也可以由用户主机负责由用户主机负责

网际协议 IP

网际协议 IP 又称为 Kahn-Cerf 协议,因为是 Robert Kahn 和 Vint Cerf 二人共同研发的。严格来说,这里所讲的是 IP 的第 4 个版本, 应记为 IPv4。(版本 1 ~ 3 和版本 5 都未曾使用过)。

由于网际协议 IP 是用来使互连起来的许多计算机网络能够进行通信的,因此 TCP/IP 体系中的网络层常常被称为网际层(internet layer), 或 IP 层。

与 IP 协议配套使用的还有三个协议:

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

虚拟互连网络

让大家都使用相同的网络是不现实的。没有单一的网络能够适应所有用户的需求。网络技术不断发展,制造厂家也要经常推出新的网络,因此在市场上总是有很多种不同性能、不同网络协议的网络。

四种网络中间设备:

层级设备描述
物理层转发器(repeater)又被称为中继器或放大器,执行物理层协议,负责物理层的数据中继,实现电气信号的“再生”。用于互连两个相同类型的网段,主要功能是延伸网段和改变传输媒体,从而实现信息位的转发。它本身不执行信号的过滤功能。集线器是一种特殊的转发器。它作用可以将一些机器连接起来组成一个局域网。它不具有智能处理能力,处理的数据只是电流而已,它采用共享带宽的工作方式,附接端口的所有计算机采用CSMA/CD方式竞争带宽的使用,任一时刻只能由两台计算机之间进行通信。 不具有类似于交换机的"记忆"和"学习"能力。它发送数据时采用广播方式发送,把数据包发送到与集线器相连的所有节点。
数据链路层网桥或桥接器(bridge)仅是把一个网络扩大了,而从网络层的角度看, 这仍然是一个网络。网桥互连两个独立的、仅在低两层实现上有差异的子网。 将两个局域网(LAN)连起来,根据MAC地址(物理地址)来转发帧,可以看作一个“低层的路由器”。它可以有效地联接两个LAN,使本地通信限制在本网段内,并转发相应的信号至另一网段,网桥通常用于联接数量不多的、同一类型的网段。网桥的存储和转发功能与中继器相比,优点是:使用网桥进行互连克服了物理限制,这意味着构成lan的数据站总数和网段数很容易扩充。网桥纳入存储和转发功能可使其适应于连接使用不同mac协议的两个lan。因而构成一个不同lan混连在一起的混合网络环境。网桥的中继功能仅仅依赖于mac帧的地址,因而对高层协议完全透明。网桥将一个较大的lan分成段,有利于改善可靠性、可用性和安全性。网桥的主要缺点是:由于网桥在执行转发前先接收帧并进行缓冲,会引入更多时延。由于网桥不提供流控功能,因此在流量较大时有可能使其过载,从而造成帧的丢失。
网络层路由器(router)讨论网络互连时,都是指用路由器进行网络互连和路由选择
网络层以上网关(gateway)用网关连接两个不兼容的系统需要在高层进行协议的转换,由于比较复杂,目前使用得较少

路由器其实就是一台专用计算机,用来在互联网中进行路由选择。由于历史的原因,许多有关 TCP/IP 的文献曾经把网络层使用的路由器称为网关。

许多计算机网络通过一些路由器进行互连。由于参加互连的计算机网络都使用相同的网际协议 IP,可以把互连以后的计算机网络看成一个虚拟互连网络(internet)。各种物理网络的异构性本来是客观存在的,但利用 IP 协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。这种使用 IP 协议的虚拟互连网络可简称为 IP 网。当 IP 网上的主机进行通信时,它们看不见互连的各网络的具体异构细节(如具体的编址方案、路由选择协议,等等)。如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网(Internet)。

分类的 IP 地址

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

IP 地址及其表示方法

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

IP 地址的编址方法共经过了三个历史阶段。

编址方法文档备注
分类的 IP 地址1981 年通过了相应的标准协议。最基本的编址方法
子网的划分1985 年,RFC 950对最基本的编址方法的改进。
构成超网1993 年比较新的无分类编址方法。1提出后很快就得到推广应用。

所谓“分类的 IP 地址”就是将 IP 地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成。可以记为:IP 地址 ::= { <网络号>, <主机号>}

  • 第一个字段是网络号(net-id),它标志主机(或路由器)所连接到的网络。一个网络号在整个互联网范围内必须是唯一的。
  • 第二个字段是主机号(host-id),它标志该主机(或路由器)。一台主机号在它的网络范围内必须是唯一的。
ClassLeading bitsSize of network number bit fieldNumber of networksTotal addresses in classStart addressEnd addressDefault subnet mask
Class A08128 (27)2310.0.0.0127.255.255.255/8
Class B101616,384 (214)230128.0.0.0191.255.255.255/16
Class C110242,097,152 (221)229192.0.0.0223.255.255.255/24
Class D
(multicast)
1110not definednot defined228224.0.0.0239.255.255.255not defined
Class E
(reserved)
1111not definednot defined228240.0.0.0255.255.255.255not defined

最长前缀匹配

在使用 CIDR 时,由于采用了网络前缀这种记法,路由表中每个项目由“网络前缀”和“下一跳地址”组成。但是在查找路由表时可能会得到不止一个匹配结果。此时应当从匹配结果中选择具有最长网络前缀的路由。这叫做最长前缀匹配(longest-prefix matching),这是因为网络前缀越长,其地址块就越小,因而路由就越具体(more specific)。最长前缀匹配又称为最长匹配或最佳匹配。


47 .( 9 分)假设 lnternet 的两个自治系统构成的网络如题 47 图所示,自治系统 AS1 由路由器R1 连接两个子网构成;自治系统 AS2 由路由器 R2 、 R3 互联并连接 3 个子网构成。各子网地址、 R2 的接口名、 R1 与 R3 的部分接口 IP 地址如题 47 图所示。

2013-47
2013-47

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

目的网络下一跳接口

194.17.20.128/25 和 194.17.21.0/24 的最大共同前缀为:11000010.00010001.0001010 ,即 194.17.20.0/23

十进制二进制
194.17.20.128/2511000010.00010001.00010100.10000000
194.17.21.0/2411000010.00010001.00010101.00000000

(2)若 R2 收到一个目的 IP 地址为 194.17.20.200 的 IP 分组, R2 会通过哪个接口转发该 IP分组?

IP 地址与硬件地址

主机的 IP 地址与硬件地址的区别:从层次的角度看,物理地址是数据链路层和物理层使用的地址,而 IP 地址是网络层和以上各层使用的地址,是一种逻辑地址(称 IP 地址为逻辑 地址是因为 IP 地址是用软件实现的)。

在局域网中,由于硬件地址已固化在网卡上的 ROM 中,因此常常将硬件地址称为物理地址。因为在局域网的 MAC 帧中的源地址和目的地址都是硬件地址,因此硬件地址又称为 MAC 地址。

MAC 帧在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在 MAC 帧的首部中。 连接在通信链路上的设备(主机或路由器)在收到 MAC 帧时,根据 MAC 帧首部中的硬件地址决定收下或丢弃。只有在剥去 MAC 帧的首部和尾部后把 MAC 层的数据上交给网络层后,网络层才能在 IP 数据报的首部中找到源 IP 地址和目的 IP 地址。

几个要点:

  1. 在 IP 层抽象的互联网上只能看到 IP 数据报。虽然 IP 数据报经过路由器转发时,首部中的源地址和目的地址始终不变。数据报中间经过的路由器的 IP 地址并不出现在 IP 数据报的首部中。
  2. 虽然在 IP 数据报首部有源站 IP 地址,但路由器只根据目的站的 IP 地址的网络号进行路由选择。
  3. 在局域网的链路层,只能看见 MAC 帧。IP 数据报被封装在 MAC 帧中。MAC 帧 在不同网络上传送时,其 MAC 帧首部中的源地址和目的地址要发生变化。路由器收到MAC 帧后,在数据链路层,要丢弃原来的 MAC 帧的首部和尾部。在转发时,要重新添加上 MAC 帧的首部和尾部。这时首部中的源地址和目的地址分别 便成为 HA4 和 HA5。MAC 帧的首部的这种变化,在上面的 IP 层上是 看不见的。
  4. 尽管互连在一起的网络的硬件地址体系各不相同,但 IP 层抽象的互联网却屏蔽了下层这些很复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的 IP 地 址研究主机和主机或路由器之间的通信。

地址解析协议 ARP

地址解析协议 ARP 用来根据机器的 IP 地址找出其相应的硬件地址。

网络层使用的是 IP 地址,但在实际网络的链路上传送数据帧时,最终还是必须使用该网络的硬件地址。但 IP 地址和硬件地址之间由于格式不同而不存在简单的映射关系。网络上会需要新增或撤走主机,网络适配器也会使主机的硬件地址改变。

使用抽象的 IP 地址,而不直接使用硬件地址进行通信的意义:虽然在网络链路上传送的帧最终是按照硬件地址找到目的主机的,但由于全世界各式各样的网络使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,由用户或用户主机来完成这项工作几乎是不可能的事。但 IP 编址把这个复杂问题解决了。连接到互联网的主机只需各自拥有一个唯一的 IP 地址,相互的通信就像连接在同一个网络上那样简单方便,在虚拟的 IP 网络上用 IP 地址进行通信给广大的计算机用户带来很大的方便。

每一台主机都设有一个 ARP 高速缓存(ARP cache),里面有本局域网上的各主机和路由器的 IP 地址到硬件地址的映射表,这个映射表还经常动态更新。 当主机 A 要向本局域网上的某台主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就将其对应的硬件地址写入 MAC 帧,然后通过局域网把该 MAC 帧发往此硬件地址。 若无,原因可能是主机 B 才入网,或是主机 A 刚刚加电,其高速缓存还是空的,则主机 A 就自动运行 ARP, 找出主机 B 的硬件地址 :

  1. 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 响应分组的主要内容是:“我的 IP 地址是 209.0.0.6,我的硬件地址是 08-00-2B-00-EE-0A。”,同时主机 B 还将把主机 A 的这一地址映射写入自己的 ARP 高速缓存中。 虽然 ARP 请求分组是广播发送的,但 ARP 响应分组是普通的单播,即从一个源地址发送到一个目的地址 .其余所有主机不理睬这个 ARP 请求分组。
  4. 主机 A 收到主机 B 的 ARP 响应分组后,就在其 ARP 高速缓存中写入主机 B 的 IP 地址到硬件地址的映射。

ARP 对保存在高速缓存中的每一个映射地址项目都设置生存时间(例如,10 ~ 20 分钟)。凡超过生存时间的项目就从高速缓存中删除掉。设想 A 的 ARP 高速缓存里保存有 B 的硬件地址。但 B 的网络适配器坏了,更换了一块,因此硬件地址就改变了。A 在其 ARP 高速缓存中查找到 B 原先的硬件地址,向 B 发送数据帧,由于该硬件地址已经失效了,因此 A 无法找到主机 B。但是过了一段不长的生存时间,A 的 ARP 高速缓存中已经删除了 B 原先的硬件地址,于是 A 重新广播发送 ARP 请求分组,又找到了 B 。

注意:ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,就无法解析出硬件地址。实际上主机 H1 也不需要知道远程主机 H2 的硬件地址:IP 数据报首先需要通过同一个局域网上的路由器 R1 转发。因此 H1 需要把 R1 的 IP 地址解析为硬件地址,R1从转发表找出了下一跳路由器 R2, 同时使用 ARP 解析出 R2的 硬件地址,于是 IP 数据报按照该硬件地址转发到路由器 R2。R2 用类似方法解析出目的主机 H2 的硬件地址,使 IP 数据报最终交付主机 H2。

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

使用 ARP 的四种典型情况 :

  1. 主机把 IP 数据报发送到同一个网络上的另一台主机。此时 H1 发送 ARP 请求分组,找到目的主机 H2的硬件地址。

  2. 主机要把 IP 数据报发送到另一个网络上的一台主机。此时 H1 发送 ARP 请求分组,找到网 1 上的一个路由器 R1 的硬件地址。剩下的工作由路由器 R1 来完成。

  3. 路由器,要把 IP 数据报转发到同一个网络上 的主机。这时 R1 发送 ARP 请求分组,找到目的主机 H3的硬件地址。

  4. 发送方是路由器,要把 IP 数据报转发到网 3 上的一台主机。H4与 R1 不是连接在同一个网络上。这时 R1 发送 ARP 请求分组,找到连接在网 2 上的一个路由器 R2 的硬件地址。剩下的工作由这个路由器 R2 来完成

(3) R1 与 R2 之间利用哪个路由协议交换路由信息?该路由协议的报文被封装到哪个协议的分组中进行传输?