欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

计算机网络 4 - 网络层

最编程 2024-04-29 07:40:42
...

欢迎大家关注 github.com/hsfxuebao ,希望对大家有所帮助,要是觉得可以的话麻烦给点一下Star哈

1. 网络层概述

1.1 简介

  • 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输

image.png

这些异构型网络N1~N7如果只是需要各自内部通信,他们只要实现各自的物理层和数据链路层即可

但是如果要将这些异构型网络互连起来,形成一个更大的互联网,就需要实现网络层设备路由器

有时为了简单起见,可以不用画出这些网络,图中N1~N7,而将他们看做是一条链路即可

  • 要实现网络层任务,需要解决一下主要问题:

    • 网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输”)

    在数据链路层那课讲过的可靠传输,详情可以看那边的笔记:网络层对以下的分组丢失分组失序分组重复的传输错误采取措施,使得接收方能正确接受发送方发送的数据,就是可靠传输,反之,如果什么措施也不采取,则是不可靠传输

    • 网络层寻址问题

    image.png

    • 路由选择问题

    image.png

    路由器收到数据后,是依据什么来决定将数据包从自己的哪个接口转发出去?

    依据数据包的目的地址和路由器中的路由表

    image.png

    但在实际当中,路由器是怎样知道这些路由记录?

    • 由用户或网络管理员进行人工配置,这种方法只适用于规模较小且网络拓扑不改变的小型互联网
    • 另一种是实现各种路由选择协议,由路由器执行路由选择协议中所规定的路由选择算法,而自动得出路由表中的路有记录,这种方法更适合规模较大且网络拓扑经常改变的大型互联网

image.png

补充 网络层(网际层)除了 IP协议外,还有之前介绍过的地址解析协议ARP,还有网际控制报文协议ICMP网际组管理协议IGMP

1.2 总结

  • 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。

  • 要实现网络层任务,需要解决以下主要问题:

    • 网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输”)
    • 网络层寻址问题
    • 路由选择问题
  • 因特网(Internet)是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈

  • 由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议.因此在TCP/IP协议栈中网络层常称为网际层。

  • 综上所述,我们通过学习TCP/IP协议栈的网际层来学习网络层的理论知识和实践技术。

2. 网络层提供的两种服务

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

2.1 面向连接的虚电路服务

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

  • 这种观点认为,应借助于电信网的成功经验,让网络负责可靠交付,计算机网络应模仿电信网络,使用面向连接的通信方式。
  • 通信之前先建立虚电路 (Virtual Circuit),以保证双方通信所需的一切网络资源。
  • 如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点,不丢失、不重复。

image.png

发送方 发送给 接收方 的所有分组都沿着同一条虚电路传送

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

2.2 无连接的数据报服务

另一种观点:网络提供数据报服务

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

image.png

发送方 发送给 接收方 的分组可能沿着不同路径传送

尽最大努力交付

  • 如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责可靠交付(包括差错处理、流量控制等)
  • 采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用。
  • 互连网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性。

2.3 虚电路服务与数据报服务的对比

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

3. IPv4

3.1 概述

在TCP/IP体系中,IP地址是一个最基本的概念,我们必须把它弄清楚。IPv4地址就是给因特网(Internet)上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符

IP地址由因特网名字和数字分配机构ICANN(Internet Corporation for Assigned Names and Numbers)进行分配。我国用户可向亚太网络信息中心APNIC(Asia Pacific Network Information Center)申请IP地址,需要缴费。2011年2月3日,互联网号码分配管理局IANA(由ICANN行使职能)宣布,IPV4地址已经分配完毕。我国在2014至2015年也逐步停止了向新用户和应用分配IPV4地址。同时全面开展商用部署IPV6。

IPV4地址的编址方法经历了如下三个历史阶段: image.png

image.png

3.2 分类编制的IPv4地址

3.2.1 简介

image.png

  • 每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)。
  • 主机号在它前面的网络号所指明的网络范围内必须是唯一的。
  • 由此可见,一个 IP 地址在整个互联网范围内是唯一的

A类地址

image.png

B类地址

image.png

C类地址

image.png

练习

image.png

3.2.2 总结

IP 地址的指派范围

image.png

一般不使用的特殊的 IP 地址

image.png

IP 地址的一些重要特点

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

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

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

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

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

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

3.3 划分子网的IPv4地址

3.3.1 为什么要划分子网

在 ARPANET 的早期,IP 地址的设计确实不够合理:

  • IP 地址空间的利用率有时很低。
  • 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
  • 两级的 IP 地址不够灵活。

image.png

如果想要将原来的网络划分成三个独立的网路

image.png 所以是否可以从主机号部分借用一部分作为子网号

image.png

但是如果未在图中标记子网号部分,那么我们和计算机又如何知道分类地址中主机号有多少比特被用作子网号了呢?

所以就有了划分子网的工具:子网掩码

  • 从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址
  • 这种做法叫做划分子网 (subnetting) 。
  • 划分子网已成为互联网的正式标准协议。

3.3.2 如何划分子网

基本思路

  • 划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
  • 从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。

image.png

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

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

image.png

  • 优点

    1. 减少了 IP 地址的浪费
    2. 使网络的组织更加灵活
    3. 更便于维护和管理
  • 划分子网纯属一个单位内部的事情,对外部网络透明,对外仍然表现为没有划分子网的一个网络。

3.3.3 子网掩码

32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号

  • 子网掩码使用连续的比特1来对应网络号和子网号
  • 子网掩码使用连续的比特0来对应主机号
  • 将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算就可得到IPV4地址所在子网的网络地址

image.png

(IP 地址) AND (子网掩码) = 网络地址 重要,下面很多相关知识都会用到

举例

例子1

image.png

例子2

image.png

默认子网掩码

image.png

3.3.4 总结

image.png

  • 子网掩码是一个网络或一个子网的重要属性。
  • 路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。
  • 路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。
  • 若一个路由器连接在两个子网上,就拥有两个网络地址和两个子网掩码。

3.4 无分类编址的IPv4地址

3.4.1 为什么使用无分类编址

无分类域间路由选择 CIDR (Classless Inter-Domain Routing)。

  • 划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网因为其地址空间太小并没有得到充分使用,而因特网的1P地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁。
  • 为此,因特网工程任务组IETF又提出了采用无分类编址的方法来解决IP地址紧张的问题,同时还专门成立Pv6工作组负责研究新版本IP以彻底解决IP地址耗尽问题。
  • 1993年,IETF发布了无分类域间路由选择CIDR(Classless Inter-Domain Routing)的RFC 文档:RFC1517~1519和1520。
    • CIDR消除了传统的A类、B类和C类地址,以及划分子网的概念
    • CIDR可以更加有效地分配PV4的地址空间,并且可以在新的IPv6使用之前允许因特网的规模继续增长。

CIDR 最主要的特点

  • CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。
  • IP 地址从三级编址(使用子网掩码)又回到了两级编址

3.4.2 如何使用无分类编址

image.png

举例

image.png

3.4.3 路由聚合(构造超网)

image.png

3.4.4 总结

image.png

3.5 IPv4地址的应用规划

给定一个IPv4地址快,如何将其划分成几个更小的地址块,并将这些地址块分配给互联网中不同网络,进而可以给各网络中的主机和路由器接口分配IPv4地址

3.5.1 定长的子网掩码FLSM(Fixed Length Subnet Mask)

  • 使用同一个子网掩码来划分子网
  • 子网划分方式不灵活:只能划分出2^n 个子网(是从主机号部分借用的用来作为子网号的比特数量)
  • 每个子网所分配的1P地址数量相同,容易造成P地址浪费,

划分子网的IPv4就是定长的子网掩码

举例

image.png

image.png

image.png

通过上面步骤分析,就可以从子网1~~ 8中任选5个分配给左图中的N1~~ N5

采用定长的子网掩码划分,只能划分出2^n个子网,其中n是从主机号部分借用的用来作为子网号的比特数量,每个子网所分配的IP地址数量相同

但是也因为每个子网所分配的IP地址数量相同,不够灵活,容易造成IP地址的浪费

3.5.2 变长的子网掩码VLSM(Variable Length Subnet Mask)

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

无分类编址的IPv4就是变长的子网掩码

举例

image.png

image.png

4. IP数据报的发送和转发过程

IP数据报的发送和转发过程包含以下两部分:

  • 主机发送IP数据报
  • 路由器转发P数据报 为了将重点放在TCP/IP协议栈的网际层发送和转发IP数据报的过程上,在之后的举例中,我们忽略使用ARP协议来获取目的主机或路由器接口的MAC地址的过程以及以太网交换机自学习和转发帧的过程。

举例

image.png

image.png

源主机如何知道目的主机是否与自己在同一个网络中,是直接交付,还是间接交付?

image.png

可以通过目的地址IP源地址的子网掩码进行逻辑与运算得到目的网络地址

  • 如果目的网络地址源网络地址 相同,就是在同一个网络中,属于直接交付
  • 如果目的网络地址源网络地址 不相同,就不在同一个网络中,属于间接交付,传输给主机所在网络的默认网关(路由器——下图会讲解),由默认网关帮忙转发

主机C如何知道路由器R的存在?

image.png

用户为了让本网络中的主机能和其他网络中的主机进行通信,就必须给其指定本网络的一个路由器的接口,由该路由器帮忙进行转发,所指定的路由器,也被称为默认网关

例如。路由器的接口0的IP地址192.168.0.128做为左边网络的默认网关

image.png

主机A会将该IP数据报传输给自己的默认网关,也就是图中所示的路由器接口0

路由器收到IP数据报后如何转发?

  • 检查IP数据报首部是否出错:

    • 若出错,则直接丢弃该IP数据报并通告源主机
    • 若没有出错,则进行转发
  • 根据IP数据报的目的地址在路由表中查找匹配的条目:

    • 若找到匹配的条目,则转发给条目中指示的下一跳
    • 若找不到,则丢弃该数据报并通告源主机

假设IP数据报首部没有出错,路由器取出IP数据报首部各地址字段的值

image.png

接下来路由器对该IP数据报进行查表转发

image.png

逐条检查路由条目,将目的地址与路由条目中的地址掩码进行逻辑与运算得到目的网络地址,然后与路由条目中的目的网络进行比较,如果相同,则这条路由条目就是匹配的路由条目,按照它的下一条指示,图中所示的也就是接口1转发该IP数据报

image.png

路由器是隔离广播域的

image.png

5. 静态路由配置及其可能产生的路由环路问题

5.1 概念

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

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

使用静态路由配置可能出现以下导致产生路由环路的错误

  • 配置错误
  • 聚合了不存在的网络
  • 网络故障

5.2 多种情况举例

静态路由配置

举例

image.png

默认路由:默认路由可以被所有网络匹配,但路由匹配有优先级,默认路由是优先级最低的

image.png

特定主机路由 有时候,我们可以给路由器添加针对某个主机的特定主机路由条目。一般用于网络管理人员对网络的管理和测试

image.png

多条路由可选,匹配路由最具体的

静态路由配置错误导致路由环路

举例 image.png

假设将R2的路由表中第三条目录配置错了下一跳,这导致R2和R3之间产生了路由环路

image.png

聚合了不存在的网络而导致路由环路

举例

正常情况

image.png

image.png

错误情况

image.png

解决方法

image.png

image.png

黑洞路由的下一跳为null0,这是路由器内部的虚拟接口,IP数据报进入它后就被丢弃

网络故障而导致路由环路

举例

image.png

image.png

解决方法

添加故障的网络为黑洞路由

image.png

image.png

假设。一段时间后故障网络恢复了

R1又自动地得出了其接口0的直连网络的路由条目

针对该网络的黑洞网络会自动失效

image.png

如果又故障

则生效该网络的黑洞网络

image.png

5.3 总结

  • 静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表
    • 这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化。
    • 一般只在小规模网络中采用。
  • 使用静态路由配置可能出现以下导致产生路由环路的错误
    • 配置错误
    • 聚合了不存在的网络
    • 网络故障
  • 路由条目的类型
    • 直连网络
    • 静态路由(人工配置)
    • 动态路由(路由选择协议)
  • 特殊的静态路由条目
    • 默认路由(目的网络为0.0.0.0,地址掩码为0.0.0.0)
    • 特定主机路由(目的网络为特定主机的1P地址,地址掩码为255.255.255.255)
    • 黑洞路由(下一跳为nuIO)

6. 路由选择协议

6.1 概述

静态路由选择:

  • 人工配置的网络路由、默认路由、特定主机路由、黑洞路由等都属于静态路由。
  • 这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化
  • 一般只在小规模网络中采用。

动态路由选择:

  • 路由器通过路由选择协议自动获取路由信息

  • 比较复杂、开销比较大。能较好地适应网络状态的变化

  • 适用于大规模网络

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

  • 自适应:动态路由选择,能较好地适应网络状态的变化
  • 分布式:路由器之间交换路由信息
  • 分层次:将整个因特网划分为许多较小的自治系统AS(Autonomous System)

因特网采用分层次的路由选择协议

  • 自治系统 AS:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。

image.png

自治系统之间的路由选择简称为域间路由选择,自治系统内部的路由选择简称为域内路由选择

image.png

域间路由选择使用外部网关协议EGP这个类别的路由选择协议

域内路由选择使用内部网关协议IGP这个类别的路由选择协议

网关协议的名称可称为路由协议

常见的路由选择协议

image.png

路由器的基本结构

路由器是一种具有多个输入端口,和输出端口的专用计算机,其任务是转发分组

image.png

路由器结构可划分为两大部分:

1、分组转发部分

由三部分构成

  • 交换结构

  • 一组输入端口:

    • 信号从某个输入端口进入路由器

    • 物理层将信号转换成比特流,送交数据链路层处理

    • 数据链路层识别从比特流中识别出帧,去掉帧头和帧尾后,送交网络层处理

    • 如果送交网络层的分组是普通待转发的数据分组

    • 则根据分组首部中的目的地址进行查表转发

    • 若找不到匹配的转发条目,则丢弃该分组,否则,按照匹配条目中所指示的端口进行转发

  • 一组输出端口

    • 网络层更新数据分组首部中某些字段的值,例如将数据分组的生存时间减1,然后送交数据链路层进行封装

    • 数据链路层将数据分组封装成帧,交给物理层处理

    • 物理层将帧看成比特流将其变换成相应的电信号进行发送

路由器的各端口还会有输入缓冲区和输出缓冲区

  • 输入缓冲区用来暂存新进入路由器但还来不及处理的分组
  • 输出缓冲区用来暂存已经处理完毕但还来不及发送的分组

image.png

路由器的端口一般都具有输入和输出功能,这些实例分出了输入端口和输出端口是更好演示路由基本工作过程

2、路由选择部分

路由选择部分的核心构件是路由选择处理机,它的任务是根据所使用的路由选择协议。周期性地与其他路由器 进行路由信息的交互,来更新路由表

如果送交给输入端口的网络层的分组是路由器之间交换路由信息的路由报文,则把这种分组送交给路由选择处理机

路由选择处理机根据分组的内容来更新自己的路由表

image.png

路由选择处理机还会周期性地给其他路由器发送自己所知道的路由信息

image.png

6.2 路由信息协议RIP

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

image.png

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

image.png RIP认为R1到R5的好路由是:R1-> R4 -> R5

当到达同一目的网络有多条“距离相等”的路由时,可以进行等价负载均衡

image.png

  • RIP包含以下三个要点:
    • 和谁交换信息:仅和相邻路由器交换信息
    • 交换什么信息:自己的路由表
    • 何时交换信息:周期性交换(例如每30秒)

image.png

RIP的基本工作过程 image.png

RIP的路由条目的更新规则

举例1

image.png

路由器C的表到达各目的网络的下一条都记为问号,可以理解为路由器D并不需要关心路由器C的这些内容

假设路由器C的RIP更新报文发送周期到了,则路由器C将自己路由表中的相关路由信息封装到RIP更新报文中发送给路由器D

image.png

路由器C能到达这些网络,说明路由器C的相邻路由器也能到达,只是比路由器C的距离大1,于是根据距离的对比,路由器D更新自己的路由表

image.png

举例2

image.png

RIP存在“坏消息传播得慢”的问题

image.png

image.png

解决方法

  • RIP存在“坏消息传播得慢”的问题
  • “坏消息传播得慢”又称为路由环路或距离无穷计数问题,这是距离向量算法的一个固有问题。可以采取多种措施减少出现该问题的概率或减小该问题带来的危害。
    • 限制最大路径距离为15(16表示不可达)
    • 当路由表发生变化时就立即发送更新报文(即“触发更新”),而不仅是周期性发送
    • 让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送(即“水平分割”)

image.png

但是,这些方法也不能完全解决“坏消息传播得慢”的问题,这是距离向量的本质决定

总结

image.png

RIP 协议的优缺点

优点:

  1. 实现简单,开销较小。

缺点:

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

6.3 开放最短路径优先OSPF

开放最短路径优先 OSPF (Open Shortest Path First)

注意:OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。

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

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

image.png

问候(Hello)分组

  • OSPF相邻路由器之间通过交互问候(Helo)分组建立和维护邻居关系
    • Helo分组封装在IP数据报中,发往组播地址224.0.0.5:
      image.png

    • 发送周期为10秒

    • 40秒未收到来自邻居路由器的Hlo分组,则认为该邻居路由器不可达。

image.png

IP数据报首部中协议号字段的取值应为89,来表明IP数据报的数据载荷为OSPF分组

发送链路状态通告LSA

  • 使用OSPF的每个路由器都会产生链路状态通告LSA(Link State Advertisement)。LSA中包含以下内容:
    • 直连网络的链路状态信息
    • 邻居路由器的链路状态信息
  • LSA被封装在链路状态更新分组LSU中,采用洪泛法发送

image.png

洪泛法有点类似于广播,就是从一个接口进来,从其他剩余所有接口出去

链路状态数据库同步

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

image.png

使用SPF算法计算出各自路由器到达其他路由器的最短路径

  • 使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表。 image.png

OSPF五种分组类型

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

  • 类型2,数据库描述(Database Description)分组: 向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息

  • 类型3,链路状态请求(Link State Request)分组: 向邻居路由器请求发送某些链路状态项目的详细信息。

  • 类型4,链路状态更新(Link State Update)分组: 路由器使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态。

  • 类型5,链路状态确认(Link State Acknowledgment)分组: 这是对链路状态更新分组的确认分组。

OSPF的基本工作过程

image.png

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

如果不采用其他机制,将会产生大量的多播分组

image.png

若DR出现问题,则由BDR顶替DR

为了使OSPF能够用于规模很大的网络,OSPF把一个自治系统再划分为若干个更小的范围,叫做区域(Area)

  • 在该自治系统内,所有路由器都使用OSPF协议,OSPF将该自治系统再划分成4个更小的区域
  • 每个区域都有一个32比特的区域标识符
  • 主干区域的区域标识符必须为0,主干区域用于连通其他区域
  • 其他区域的区域标识符不能为0且不相同
  • 每个区域一般不应包含路由器超过200个
  • 划分区域的好处就是,利用洪泛法交换链路状态信息局限于每一个区域而不是自治系统,这样减少整个网络上的通信量

image.png总结

image.png

6.4 边界网关协议BGP

BGP(Border Gateway Protocol) 是不同自治系统的路由器之间交换路由信息的协议

  • 因特网采用分层次的路由选择协议 image.png

  • 内部网关协议IGP(例如路由信息协议RIP或开放最短路径优先OSPF)

    • 设法使分组在一个自治系统内尽可能有效地从源网络传输到目的网络
    • 无需考虑自治系统外部其他方面的策略
  • 外部网关协议EGP(例如边界网关协议BGP)

    • 在不同自治系统内,度量路由的”代价”(距离,带宽,费用等)可能不同。因此,对于自治系统之间的路由选择,使用“代价”作为度量来寻找最佳路由是不行的。

    image.png

    • 自治系统之间的路由选择必须考虑相关策略(政治,经济,安全等)
    • BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由

    image.png

  • 在配置BGP时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人

  • 不同自治系统的BGP发言人要交换路由信息,首先必须建立TCP连接,端口号为179

    • 在此TCP连接上交换BGP报文以建立BGP会话
    • 利用BGP会话交换路由信息(例如,增加新的路由,或撤销过时的路由,以及报告出错的情况等)
    • 使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站(neighbor)或对等站(peer)
  • BGP发言人除了运行BGP外,还必须运行自己所在自治系统所使用的内部网关协议IGP,例如OSPF或RIP。

image.png

  • BGP发言人交换网络可达性的信息(要到达某个网络所要经过的一系列自治系统)
  • 当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好的路由。也就是构造出树形结构、不存在回路的自治系统连通图

image.png

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

image.png

  • BGP-4有以下四种报文
    • OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,使通信初始化。

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

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

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

6.5 直接封装RIP、OSPF和BGP报文的协议

image.png

7. IPv4数据报的首部格式

7.1 各字段的作用