004-计算机网络-网络层

一 网络层提供的两种服务

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

(一) 观点一:让网络负责可靠交付

这种观点认为,应借助于电信网的成功经验,让网络负责可靠交付,计算机网络应模仿电信网络,使用面向连接的通信方式

  • 通信之前先建立虚电路 (Virtual Circuit),以保证双方通信所需的一切网络资源
  • 如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点,不丢失、不重复

补充:

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

(二) 观点二:网络提供数据报服务

互联网的先驱者提出了一种崭新的网络设计思路

  • 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务
  • 网络在发送分组时不需要先建立连接
    • 每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)
  • 网络层不提供服务质量的承诺
    • 即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限

补充:

  • 由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)

  • 如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责可靠交付(包括差错处理、流量控制等)

采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用

二 网际协议 IP

(一) 几大协议

网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一

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

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

(二) 各层连接需要的中转设备

  • 物理层中继系统:转发器 (repeater)
  • 数据链路层中继系统:网桥 或 桥接器 (bridge)
  • 网络层中继系统:路由器 (router)
  • 网桥和路由器的混合物:桥路器 (brouter)
  • 网络层以上的中继系统:网关 (gateway)

(三) 分类的 IP 地址

在这一部分,IP 这个概念是十分重要的,下面我们重点来讲一下其定义和类型

(1) 定义和分类

定义:IP 地址就是给每个连接在互联网上的主机(或路由器)分配一个在全世界范围是唯一的 32 位的标识符

分类:

  • 将IP地址划分为若干个固定类

  • 每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)

  • 主机号在它前面的网络号所指明的网络范围内必须是唯一的

  • 由此可见,一个 IP 地址在整个互联网范围内是唯一的

(2) 各类 IP 地址的网络号字段和主机号字段

(3) 点分十进制记法

(4) IP 地址的指派范围

(5) IP 地址的一些重要特点

(1) IP 地址是一种分等级的地址结构。分两个等级的好处是:

  • 第一,IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理
  • 第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间

(2) 实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口

  • 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多归属主机 (multihomed host)
  • 由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。

(3) 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id

(4) 所有分配到网络号 net-id 的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的

(四) IP 地址与硬件地址

(五) 地址解析协议 ARP

(1) 什么是 ARP

通信时使用了两个地址:

  • IP 地址(网络层地址)
  • MAC 地址(数据链路层地址)

已经知道了一个机器(主机或路由器)的IP地址,如何找出其相应的硬件地址?

地址解析协议 ARP 就是用来解决这样的问题的:从网络层使用的IP地址,解析出在数据链路层使用的硬件地址

(2) 解析的过程

不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址
每一个主机都设有一个 ARP 高速缓存 (ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表

解析的过程:

  • 当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。

    • 如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。

    • 如没有, ARP 进程在本局域网上广播发送一个 ARP 请求分组。收到 ARP 响应分组后,将得到的 IP 地址到硬件地址的映射写入 ARP 高速缓存。

补充:

  • ARP请求分组:包含发送方硬件地址 / 发送方 IP 地址 / 目标方硬件地址(未知时填 0) / 目标方 IP 地址
  • 本地广播 ARP 请求(路由器不转发ARP请求)
  • ARP 响应分组:包含发送方硬件地址 / 发送方 IP地址 / 目标方硬件地址 / 目标方 IP 地址
  • ARP 分组封装在物理网络的帧中传输

(3) ARP 高速缓存的作用

存放最近获得的 IP 地址到 MAC 地址的绑定,以减少 ARP 广播的数量

  • 为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组
  • 当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了

(4) 应该注意的问题

  • ARP 用于解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题

  • 如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做

  • 从 IP 地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的

  • 只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址

(5) 使用 ARP 的四种典型情况

  • 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址
  • 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成
  • 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址
  • 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成

(6) 不直接使用硬件地址进行通信

  • 由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事

  • IP 编址把这个复杂问题解决了。连接到互联网的主机只需各自拥有一个唯一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为上述的调用 ARP 的复杂过程都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的

  • 因此,在虚拟的 IP 网络上用 IP 地址进行通信给广大的计算机用户带来了很大的方便

(六) IP 数据报的格式

一个 IP 数据报由首部和数据两部分组成

首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的

在首部的固定部分的后面是一些可选字段,其长度是可变的

下面解释一下这张图

(1) 固定部分

  • 首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的
  • 版本——占 4 位,指 IP 协议的版本。目前的 IP 协议版本号为 4 (即 IPv4)
  • 首部长度——占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的最大值是 60 字节
  • 总长度——占 16 位指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU。
  • 标志(flag) ——占 3 位,目前只有前两位有意义。标志字段的最低位是 MF (More Fragment)。MF = 1 表示后面“还有分片”。MF = 0 表示最后一个分片。标志字段中间的一位是 DF (Don’t Fragment) 。只有当 DF = 0 时才允许分片。
  • 片偏移—— 占13 位,指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。
  • 生存时间——占8 位,记为 TTL (Time To Live),指示数据报在网络中可通过的路由器数的最大值。
  • 协议——占8 位,指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给那个处理过程
  • 首部检验和——占16 位,只检验数据报的首部,不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。
  • 源地址和目的地址都各占 4 字节

(2) 可变部分

IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富

选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目增加首部的可变部分是为了增加

IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销

实际上这些选项很少被使用

(七) IP 层转发分组的流程

(1) 基本

  • IP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址
  • 当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件
  • 网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器

在路由表中,对每一条路由,最主要的是(目的网络地址,下一跳地址)

  • IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)
  • 只有到达最后一个路由器时,才试图向目的主机进行直接交付

虽然互联网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许有这样的特例,即为特定的目的主机指明一个路由
采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由

(2) 默认路由

  • 路由器还可采用默认路由减少路由表所占用的空间和搜索路由表所用的时间

  • 这种转发方式在一个网络只有很少的对外连接时是很有用的

  • 默认路由在主机发送 IP 数据报时往往更能显示出它的好处

  • 如果一个主机连接在一个小网络上,而这个网络只用一个路由器和互联网连接,那么在这种情况下使用默认路由是非常合适的

说明:只要目的网络不是 N1 和 N2,就一律选择默认路由,把数据报先间接交付路由器 R1,让 R1 再转发给下一个路由器

(3) 路由器分组转发算法

(1) 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N

(2) 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行(3)

(3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)

(4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)

(5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)

(6) 报告转发分组出错

三 划分子网和构造网

(一) 划分子网

在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址

划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络(是对内的,外界并不知道)

从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位

  • 当没有划分子网时,IP 地址是两级结构
  • 划分子网后 IP 地址就变成了三级结构
  • 划分子网只是把 IP 地址的主机号 host-id 这部分进行再划分,而不改变 IP 地址原来的网络号 net-id

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

  • 凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器
  • 然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网
  • 最后就将 IP 数据报直接交付目的主机。

一个未划分子网的 B 类网络145.13.0.0

划分为三个子网后对外仍是一个网络

**优点**
  • 减少了 IP 地址的浪费
  • 使网络的组织更加灵活
  • 更便于维护和管理

缺点

  • 减少了能够在网络上连接的主机数

(二) 子网掩码

从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分,使用子网掩码 (subnet mask) 可以找出 IP 地址中的子网部分

  • 所以要分辨该IP是否进行了子网划分,就可以通过子网掩码来进行分辨

规则:

  • 子网掩码长度 = 32 位
  • 子网掩码左边部分的一连串 1,对应于网络号和子网号
  • 子网掩码右边部分的一连串 0,对应于主机号

(IP 地址) AND (子网掩码) =网络地址

默认子网掩码

(三) 使用子网时分组的转发

在不划分子网的两级 IP 地址下,从 IP 地址得出网络地址是个很简单的事

但在划分子网的情况下,从 IP 地址却不能唯一地得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息

因此分组转发的算法也必须做相应的改动

(1) 从收到的分组的首部提取目的 IP 地址 D

(2) 先用各网络的子网掩码和 D 逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行 (3)

(3) 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行

(4) 对路由表中的每一行,将子网掩码和 D 逐位相“与”。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行 (5)

(5) 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行 (6)

(6) 报告转发分组出错

(四) 无分类编址 CIDR

(1) 基本

划分子网在一定程度上缓解了互联网在发展中遇到的困难。然而在 1992 年互联网仍然面临三个必须尽早解决的问题:

  • B 类地址在 1992 年已分配了近一半,眼看就要在 1994 年 3 月全部分配完毕
  • 互联网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个)
  • 整个 IPv4 的地址空间最终将全部耗尽

CIDR干了什么:

  • CIDR消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。
  • CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。
  • IP 地址从三级编址(使用子网掩码)又回到了两级编址。

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

CIDR 使用“斜线记法”(slash notation),它又称为 CIDR 记法,即在 IP 地址面加上一个斜线“/”,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。例如: 220.78.168.0/24

CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”。
128.14.32.0/20 表示的地址块共有 212 个地址(因为斜线后面的 20 是网络前缀的位数,所以这个地址的主机号是 12 位)

  • 这个地址块的起始地址是 128.14.32.0
  • 在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20 地址块”
  • 128.14.32.0/20 地址块的最小地址:128.14.32.0
  • 128.14.32.0/20 地址块的最大地址:128.14.47.255
  • 全 0 和全 1 的主机号地址一般不使用

(2) 路由聚合

  • 一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由
  • 路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能
  • 路由聚合也称为构成超网 (supernetting)
  • CIDR 虽然不使用子网了,但仍然使用“掩码”这一名词(但不叫子网掩码)
  • 对于 /20 地址块,它的掩码是 20 个连续的 1。 斜线记法中的数字就是掩码中1的个数。

(3) CIDR 记法的其他形式

10.0.0.0/10 可简写为 10/10,也就是把点分十进制中低位连续的 0 省略。
10.0.0.0/10 隐含地指出 IP 地址 10.0.0.0 的掩码是 255.192.0.0。此掩码可表示为:

网络前缀的后面加一个星号 * 的表示方法,如 00001010 00*,在星号 * 之前是网络前缀,而星号 * 表示 IP 地址中的主机号,可以是任意值。

(4) 最长前缀匹配

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

(4) 使用二叉线索查找路由表

  • 当路由表的项目数很大时,怎样设法减小路由表的查找时间就成为一个非常重要的问题
  • 为了进行更加有效的查找,通常是将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉线索 (binary trie)
  • IP 地址中从左到右的比特值决定了从根结点逐层向下层延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址
  • 为了提高二叉线索的查找速度,广泛使用了各种压缩技术

四 网际控制报文协议 ICMP

(一) ICMP 报文的种类

  • 为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)
  • ICMP 是互联网的标准协议
  • ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告但 ICMP 不是高层协议(看起来好像是高层
  • 协议,因为 ICMP 报文是装在 IP 数据报中,作为其中的数据部分),而是 IP 层的协议

(1) 格式

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

ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关

ICMP 差错报告报文共有 4 种

  • 终点不可达
  • 时间超过
  • 参数问题
  • 改变路由(重定向)(Redirect)

ICMP 询问报文有两种

  • 回送请求和回答报文
  • 时间戳请求和回答报文
  • 下面的几种 ICMP 报文不再使用:
    • 信息请求与回答报文
    • 掩码地址请求和回答报文
    • 路由器询问和通告报文
    • 源点抑制报文

(二) ICMP 的应用举例

PING (Packet InterNet Groper)

  • PING 用来测试两个主机之间的连通性
  • PING 使用了 ICMP 回送请求与回送回答报文
  • PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP

Traceroute 的应用举例

  • 在 Windows 操作系统中这个命令是 tracert
  • 用来跟踪一个分组从源点到终点的路径
  • 它利用 IP 数据报中的 TTL 字段和 ICMP 时间超过差错报告报文实现对从源点到终点的路径的跟踪

五 互连网的路由选择协议

(一) 内部网关协议 RIP

路由信息协议 RIP (Routing Information Protocol) 是内部网关协议 IGP 中最先得到广泛使用的协议

RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录

RIP 是一种分布式的、基于距离向量的路由选择协议。

RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1

  • 这里的“距离”实际上指的是“最短距离”

RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由

(1) RIP 协议的三个特点

  • 仅和相邻路由器交换信息**
  • 交换的信息是当前本路由器所知道的全部信息,即自己的路由表
  • 按固定的时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息

(2) 工作原理(路由表的建立)

路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为1)。它的路由表是空的

以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息

经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址

  • RIP 协议让互联网中的所有路由器都和自己的相邻路由器不断交换路由信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的(即跳数最少)
  • 虽然所有的路由器最终都拥有了整个自治系统的全局路由信息,但由于每一个路由器的位置不同,它们的路由表当然也应当是不同的

(3) 距离向量算法

路由器收到相邻路由器(其地址为 X)的一个 RIP 报文:
(1) 先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。
(2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤:
     若项目中的目的网络不在路由表中,则把该项目加到路由表中。
         否则
             若下一跳字段给出的路由器地址是同样的,则把收到的项目替换原路由表中的项目。
                否则 
                    若收到项目中的距离小于路由表中的距离,则进行更新,
         否则,什么也不做。
(3) 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为 16(表示不可达)。
(4) 返回。

(3) RIP 协议的优缺点

优点:

  • 实现简单,开销较小。

缺点:

  • RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)
  • 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
  • “坏消息传播得慢”,使更新过程的收敛时间过长

(二) 内部网关协议 OSPF

开放最短路径优先 OSPF (Open Shortest Path First)是为克服 RIP 的缺点在 1989 年开发出来的

OSPF 的原理很简单,但实现起来却较复杂

  • “开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。
  • “最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法 SPF
  • 采用分布式的链路状态协议 (link state protocol)。
  • 注意:OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。

(1) 三个要点

  • 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法
  • 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息
    • “链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)。 只有当链路状态发生变
  • 化时,路由器才用洪泛法向所有路由器发送此信息。

(2) 链路状态数据库

  • 由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库
  • 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)
  • OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表
  • OSPF 的更新过程收敛得快是其重要优点

(3) OSPF 的区域

  • 为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫做区域
  • 每一个区域都有一个 32 位的区域标识符(用点分十进制表示)
  • 区域也不能太大,在一个区域内的路由器最好不超过 200 个

(4) OSPF 直接用 IP 数据报传送

  • OSPF 不用 UDP 而是直接用 IP 数据报传送
  • OSPF 构成的数据报很短。这样做可减少路由信息的通信量
  • 数据报很短的另一好处是可以不必将长的数据报分片传送
  • 但分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传

(5) OSPF 的五种分组类型

  • 类型1,问候 (Hello) 分组
  • 类型2,数据库描述 (Database Description) 分组
  • 类型3,链路状态请求 (Link State Request) 分组
  • 类型4,链路状态更新 (Link State Update) 分组,用洪泛法对全网更新链路状态类型5,链路状态确认 (Link
  • State Acknowledgment)分组

(三) 外部网关协议 BGP

  • BGP 是不同自治系统的路由器之间交换路由信息的协议

  • BGP 较新版本是 2006 年 1 月发表的 BGP-4(BGP 第 4 个版本),即 RFC 4271 ~ 4278

  • 可以将 BGP-4 简写为 BGP

  • 互联网的规模太大,使得自治系统之间路由选择非常困难。对于自治系统之间的路由选择,要寻找最佳路由是很不现实的

    • 当一条路径通过几个不同 AS 时,要想对这样的路径计算出有意义的代价是不太可能的
    • 比较合理的做法是在 AS 之间交换“可达性”信息
  • 自治系统之间的路由选择必须考虑有关策略因此,边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。

(1) BGP 发言人

  • 每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人” (BGP speaker)

  • 一般说来,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往就是 BGP 边界路由器,但也可以不是 BGP 边界路由器。

(2) BGP 交换路由信息

  • 一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息

  • 使用 TCP 连接能提供可靠的服务,也简化了路由选择协议

  • 使用 TCP 连接交换路由信息的两个 BGP 发言人,彼此成为对方的邻站(neighbor)或对等站(peer)

(3) BGP-4 共使用四种报文

  • 打开 (OPEN) 报文,用来与相邻的另一个BGP发言人建立关系
  • 更新 (UPDATE) 报文,用来发送某一路由的信息,以及列出要撤消的多条路由\
  • 保活 (KEEPALIVE) 报文,用来确认打开报文和周期性地证实邻站关系
  • 通知 (NOTIFICATION) 报文,用来发送检测到的差错

六 IPv6

(一) 概念和组成

我国在2014-2015年也逐步停止了向新用户和应用分配 IPv4 地址

解决 IP 地址耗尽的根本措施就是采用具有更大地址空间的新版本的 IP,即 IPv6

所引进的主要变化如下:

  • 更大的地址空间。IPv6 将地址从 IPv4 的 32 位 增大到了 128 位。
  • 扩展的地址层次结构。
  • 灵活的首部格式。 IPv6 定义了许多可选的扩展首部。
  • 改进的选项。 IPv6 允许数据报包含有选项的控制信息,其选项放在有效载荷中。
  • 允许协议继续扩充。
  • 支持即插即用(即自动配置)。因此 IPv6 不需要使用 DHCP。
  • 支持资源的预分配。 IPv6 支持实时视像等要求,保证一定的带宽和时延的应用。
  • IPv6 首部改为 8 字节对齐。首部长度必须是 8 字节的整数倍。原来的 IPv4 首部是 4 字节对齐。

IPv6 数据报由两大部分组成:

  • 基本首部 (base header)
  • 有效载荷 (payload)。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部 (extension header),再后面是数据部分

(二) IPv4 转 IPv6

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

两种向 IPv6 过渡的策略:

  • 使用双协议栈
  • 使用隧道技术

(1) 双协议栈

双协议栈 (dual stack) 是指在完全过渡到 IPv6 之前,使一部分主机(或路由器)装有两个协议栈,一个 IPv4 和一个 IPv6。
双协议栈的主机(或路由器)记为 IPv6/IPv4,表明它同时具有两种 IP 地址:一个 IPv6 地址和一个 IPv4 地址
双协议栈主机在和 IPv6 主机通信时是采用 IPv6 地址,而和 IPv4 主机通信时就采用 IPv4 地址
根据 DNS 返回的地址类型可以确定使用 IPv4 地址还是 IPv6 地址

(2) 隧道技术

在 IPv6 数据报要进入 IPv4 网络时,把 IPv6 数据报封装成为 IPv4 数据报,整个的 IPv6 数据报变成了 IPv4 数据报的数据部分
当 IPv4 数据报离开 IPv4 网络中的隧道时,再把数据部分(即原来的 IPv6 数据报)交给主机的 IPv6 协议栈


   转载规则


《004-计算机网络-网络层》 BWH_Steven 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录