计算机网络 谢希仁
互联网的重要基本特点 什么样的网络是计算机网络 Internet 和小写的 internet 的区别 互联网的组成 互联网中核心部分中起特殊作用的是路由器 作用是分组转发 三种交换技术与特点
物理层
物理层的主要作用: 透明的传输比特流
确定与传输媒体接口有关的特性
计算机网络性能指标
速率
速率指的是本地机器端口能够发送数据的单位时间. 比如说 Mac 的雷电接口, 可以传输 30Gbps 的数据.
速率的单位是
带宽
带宽通常有两种意义
- 某个信号具有的频宽宽度. 信号的带宽是指信号所包含的各种不同的频率成分所占据的频率范围
- 表示网络中某通道传送数据的能力, 即表示单位时间内网络中某信道所能通过的 最高数据率
在计算机网络中指的带宽通常是指第二种, 单位是 bit/s 也就是 “比特每秒”
数字数据转数字信号称为编码 数字数据转为模拟信号称为调制
常用的编码方法
- 曼彻斯特编码计算方式: 标记
位中心的向上/向下曲线. 上 0 下 1 - 差分曼彻斯特编码计算方式: 标记
位开始边界的跳变, 有跳变表示 0, 无跳变表示 1.
基本的带通调制方法
- 将各种数字基带信号转换成适于信道传输的数子频带信号的过程称为调整 (modulation)
常用的信道复用技术
- 频分复用 (FDM): 所有用户在同样的时间占据不同的带宽资源
- 时分复用(TDM): 所有用户在不同时间占据同样的频带宽度(分时不分频)
- 统计时分复用 (Statistic TDM): 改进的时分复用, 能
网络层
4.6 互联网的路由选择协议
4.6.1 有关路由选择的几个概念
1. 理想的路由算法
路由选择协议的核心就是路由算法
理想的路由选择算法的特点:
- 算法必须是正确和完整的。正确: 沿着各路由表所指引的路由, 分组一定能够达到目的网络和目的主机。
- 算法在计算上简单。
- 算法能够自适应通信量和网络拓扑的变化。即自适应性, 在网络中的通信量发生变化时, 算法能够自适应的改变路由以实现各链路的负载均衡。
- 算法应具有稳定性。在网络通信量和网络拓扑逐渐稳定的情况下, 路由算法应收敛于一个可接受的解, 而不应使得路由不停地变化。
- 算法应该是公平的。即平等的处理每个分组 (除去少数优先级)
- 算法应该是最佳的。应当能够找出最好的路由, 使分组平均时延最小, 网络吞吐量最大。但相对于网络的可靠性来说, 往往应该舍去一定的性能而保持稳定。
从路由算法能否自适应来划分, 只有两大类。即 静态路由选择策略 与 动态路由选择策略。静态路由选择也叫 非自适应路由选择、动态路由选择也叫 自适应路由选择。
- 静态路由选择(对于简单的小网络, 完全可以采用静态路由, 用人工配置每一条)
- 优点: 简单和开销小
- 缺点: 不能及时适应网络的变化。
- 动态路由选择(适用于复杂的大网络)
- 优点: 能够较好的适应网络状态的变化
- 缺点: 配置较为复杂, 开销较大
2. 分层次的路由选择协议
互联网(Internet) 采用的路由选择协议主要是自适应的、分布式路由选择协议。由于以下两个原因, 互联网采用分层次的路由选择协议:
- 互联网的规模非常大。如果让所有的路由器知道所有的网络应该怎样到达, 则路由表将非常大。而路由之间交换信息的带宽就会让互联网的通信链路饱和。
- 许多单位不希望外界了解自己单位网络的布局袭击和本部门采用的路由选择协议。但同时希望连接到互联网上
为此, 可以把整个互联网划分为许多较小的自治系统 (autonomous system), 一般记为 AS
AS 是在单一技术管理下的许多网络、IP 地址以及路由器, 而这些路由器使用一种自治系统内部的路由选择协议。每一个 AS 对其他 AS 表现出的是一个单一和一致的路由选择协议策略。这样, 互联网就把路由选择协议分为两大类, 即:
- 内部网关协议 IGP(Interior gateway protocol), 即在一个自治系统内部使用的路由选择协议, 这与互联网中的其他自治系统选择什么路由选择协议无关, 目前这类路由选择协议使用的最多是是 RIP 和 OSRF协议(IS-IS 也有)。
- 外部网关协议 EGP(External Gateway Protocol), 若源主机和目的主机处在不同的 AS 中, 那么在不同自治系统 AS 之间的路由选择就需要使用外部网关协议 EGP, 目前使用最多的外部网关协议是 BGP 4 的版本。
两个自治系统之间的路由选择也叫做 域间路由选择(interdomain routing), 而在自治系统内部的路由选择叫做 域内路由选择(intradomain routing)

4.6.2 内部网关协议 RIP
1. RIP 协议的工作原理
RIP(Routing Information Protocol) 是内部网关协议 (IGP) 中最先得到广泛应用的协议, 中文译名是 路由信息协议。RIP 是一种分布式的 基于距离向量的路由选择协议, 最大的优点是简单。
RIP 协议要求网络中的每一个路由器都要维护从 它自己 到其他每一个目的网络的距离记录(距离向量)。定义如下:
从一路由器到直接连接的网络的距离为 1. 从一主机非直接连接的网络的距离定义为所经过的路由器数 +1 。 +1 是因为达到目的网络后就进行直接交付。而到直接连接的网络的距离已经定义为 1.
距离称为“跳数”(hop count), 每经过一个网络, 跳数就 +1, 显然, 一个分组经过的网络数越少, 那么这条路由就越好, 即越短越好。
RIP 允许一条路径最多只能包含 15 个网络, 因此, 当距离等于
16 时即相当于不可达。可见 RIP 只适用于小型互联网。
RIP 不能在两个网络之间同时使用多条路由。RIP 选择一条具有最少网络数的路由(即最短路由), 哪怕还存在另一条高速(低时延)但网络数较多的路由
RIP 协议与下一节的 OSPF 协议, 都是分布式路由协议。 他们的共同特点就是每一个路由器都要不断地和其他一些路由器交换路由信息。
我们一定要弄清以下三个要点:
- 和哪些路由器交换交换信息?
- 交换什么信息?
- 在什么时候交换信息
RIP 协议的特点是:
- 仅和相邻路由器交换信息。如果两个路由器之间通信不经过另一个路由器, 那么这两个路由器就是相邻的。RIP 协议不与不相邻的路由器交换信息。
- 路由器交换的信息是本路由器当前所知道的全部信息, 即自己现在的路由表。也就是说, 交换的信息是:“我到本自治系统中所有网络的(最短)距离, 以及到每个网络应经过的下一跳路由器”。
- 按固定的时间间隔交换路由信息, 例如, 每隔三十秒。然后路由器根据收到的路由信息更新路由表。当网络拓普发送变化时, 路由器也及时向相邻路由器通告变化后的路由信息。网络中的主机虽然也运行 RIP, 但只被动的接受路由器发来的路由信息。
在路由器刚刚开始工作时, 路由表是空的。然后路由器就检查各个端口, 得到直接相连的几个网络的距离(1). 接着, 每个路由器也只和数目有限(较少)的相邻路由器交换并更新路由信息。

看起来协议 RIP 有些奇怪,因为“我的路由表中的信息要依赖于你的,面你的信息又依赖于我的。”然而事实证明,通过这样的方式一一“我告诉别人些信息,而别人又告诉我一些信息。我再把我知道的更新后的信息告诉别人,别人也这样把更新后的信息再告诉我”,最后在自治系统中所有的节点都得到了正确的路由选择信息。在一般悄况下,协议 RTP 可以收敛,并且过程也较快。“收敛”就是在自治系统中所有的节点都得到正确的路由选择信息的过程
路由表中最主要的信息就是: 本路由器到某个网络的最短距离, 以及应经过的下一条的地址。路由表更新的原则就是找出每个目的网络的最短距离。这种更新算法又称为 距离向量算法。下面是 RIP 使用的距离向量算法定义:
2. 距离向量算法
对 每一个相邻路由器发送过来的 RIP 报文, 执行以下步骤
- 将地址为
X的相邻路由器发来的 RIP 报文, 修改此报文中的所有项目:把 '下一跳'字段中的地址都改为 X,并把所有距离字段+1。每个项目都有三个关键数据, 即: 目的网络 Net, 距离d, 下一跳路由器X. - 对修改后的 RIP 报文中的每一个项目, 进行
- 若 3 分钟还没有收到相邻路由器的更新路由表, 则把此相邻路由器标记为不可达路由, 即把距离设置为 16
- 返回。
RIP 协议让一个自治系统中的所有路由器和自己相邻的路由器定期交换信息, 并不断更新路由表。使得 每一个路由器到每一个目的网络的路由都是最短的。

RIP 报文由首部和路由部分组成。在路由部分要填入 自治系统号 ASN(Autonomous System Number), 这是使 RIP 有可能收到本自治系统外的路由选择信息。还要指出目的网络地址(包括子网掩码)、下一跳路由器地址以及到此网络的距离。一个 RIP 报文最多有 25 个路由, 如超过, 必须再用一个 RIP 报文来传送。
3. 坏消息传播的慢
RIP 存在的一个问题是当网络出现故障时, 要经过较长的时间才能将此信息传送到所有的路由器。你来我往, 直到 16
4.6.3 内网网关协议 OSPF
1. OSPF 协议的基本特点
OSPF (Open Shortest Path First), 开放最短路径优先, 它是为了克服 RIP 的缺点而在 1989 年提出来的。OSPF 的原理很简单, 但实现较为复杂。
Open 表示 OSPF 不受某一厂家限制, 而是公开发表的。“最短路径优先”是因为使用 Dijkstra 提出的最短路径算法 SPF。现在使用的 OSPF 协议是第二个版本
OSPF 最主要的特征就是使用了 链路状态协议(link state protocol), OSPF 的特点是:
- 向本自治系统中的所有路由器发送信息。这里使用的是 泛洪法 (向所有相邻的路由器发送信息, 收到消息的相邻路由器又给自己的相邻路由器发送此信息(但不发给刚刚发来信息的路由器))(一传十, 十传百)。这样整个区域内所有路由器都得到了这个信息的副本。
- 发送的信息是与本路由器 相邻的所有路由器的链路状态, 但是这只是路由器所知道的 部分信息。所谓的 “链路状态” 就是说明本路由器都和那些路由器相邻, 以及该链路的 “度量”(metric)。 OSPF 将这个度量用来表示费用、距离、时延、带宽, 等等。这些都由网络管理人员来决定, 因此较为灵活。有时为了方便就称这个度量为 “代价”。应当注意, 对于 RIP 协议, 发送的信息是 “到所有网络的距离和下一跳路由器”。
- 当链路状态发送变化或每隔一段时间(如 30 分钟), 路由器向所有路由器用
泛洪法发送链路状态信息。
由于各路由器之间频繁的交换链路状态信息, 因此所有的路由器最终都能建立一个链路状态数据库(link-state database), 这个数据库实际上就是 全网的拓扑结构图(有点像数据结构中图的二维数组表示法)。这个拓扑结构图在全网范围内是一致的(这也称为 链路状态数据库的同步)。因此, 每一个路由器都知道全网共有多少个路由器, 以及哪些路由器是相连的, 其代价是多少, 等等。每个路由器使用链路状态数据库中的数据, 构造出自己的路由表(比如 Dijkstra 的最短路径算法)。相反的, RIP 协议虽然知道所有的网络的距离以及下一条路由器, 但却 不知道全网的拓扑结构(只有到了下一个路由器, 才能知道怎么走)。
OSPF 的链路状态数据库能够较快地进行更新。OSPF 的更新过程收敛得块是其中药有点
- 泛洪法:保证链路状态广告在全网几乎同步地传播,是 OSPF 快速更新的核心。
- 触发式增量更新:仅在链路变化时立刻泛洪最新 LSA,避免周期性的全量刷新。
- 序列号/寿命/校验:确保只保留最新、正确的信息,防止冗余与冲突。
- 分层(Area):限制泛洪范围,进一步提升更新效率。
- 可靠的传输与抑制机制:防止广播风暴,同时保证每台路由器都能收到最新 LSA。
为了使 OSPF 能够用于规模很大的网络, OSPF 将一个自治系统再划分为若干个更小的范围, 叫做 区域(area)。每一个区域都有一个 32 位的区域标识符(点分十进制)。一个区域的路由器最好不要超过 200 个

划分区域的好处:
- 泛洪法交换链路状态信息的范围局限于每一个区域, 减少通信量
- 对区域进行封装, 每一个区域内部的路由器都只知道本区域的完整网络拓扑, 而不必知道其他区域的网络拓扑情况, 而交由其中一个连接另一个区域的路由器来处理。
- OSPF 采用 层次结构的区域划分, 在上层的区域叫做 主干区域(backbone area)。主干区域的标识符规定为
0.0.0.0。主干区域的作用是用来连通下层的区域。 - 从其他区域来的信息都由 区域边界路由器(area border router) 进行概括。
在上图中, 路由器 R3,4,7 都是区域边界路由器, 显然, 每一个区域都应当至少有一个 区域边界路由器。
在主干区域的路由器叫做 主干路由器(backbone router), 如 R3,4,5,6,7. 一个主干路由器可以同时是区域边界路由器, 如 R3,4,7。在主干区域内还要有一个路由器专门和本自治系统外的其他自治洗头交换路由信息。这样路由器叫做 自治系统边界路由器, 如 R6.
除了以上几个基本特点以外, OSPF 还具有下列的一些特点:
- OSPF 允许管理员给每条路由指派不同的代价。例如, 高带宽的卫星链路可以设置为较低的代价, 但对于时延敏感的业务就可以设置为非常高的代价。因此, OSPF 对于不同类型的业务可计算出不同的路由。
- 若同一个目的网络有多条相同代价的路径, 那么可以将通信量分配给这几条路由。这叫做多路径间的负载均衡 (load balancing)

2. OSPF 的五种分组类型
OSPF 共有以下