本章重点
1、虚拟互联网的概念
2、IP地址与物理地址的关系
3、传统的分类的 IP地址(包括子网掩码)和无分类域间路由选择 CIDR
4、路由选择协议的工作原理
一、网络层提供的两种服务
在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论
争论的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?
二、网际协议IP
网际协议IP是TCP/IP体系中两个最主要的协议之一
ARP在最下面,因为IP经常使用该协议;ICMP和 IGMP在这一层的上部,因为它们经常使用 IP协议
网际协议 IP使互连起来的许多计算机网络能够进行通信,因此 TCP/IP体系中的网络层常称为网际层或 IP层
2.1虚拟互联网络
将网络互相连接起来要使用一些中间设备
物理层中继系统:转发器 (repeater)
数据链路层中继系统:网桥 或 桥接器 (bridge)
网络层中继系统:路由器 (router)
网桥和路由器的混合物:桥路器 (brouter)
网络层以上的中继系统:网关 (gateway)
当中继系统是转发器或网桥时,仅仅是把一个网络扩大了,仍然是一个网络
许多计算机网络通过一些路由器进行互联,由于参加互连的计算机网络使用相同的网际协议 IP,因此可以把互连以后的计算机网络看成一个虚拟互连网络。各物理网络的异构性依旧存在,但在网络层看就像一个统一的网络
互联网可以由多种异构网络互连组成
2.2分类的IP地址
2.2.1 IP地址及其表示
IP地址就是给互联网上的每一台主机或路由器的每一个接口分配一个全世界唯一的32位标识符
IP地址编址方式的三个阶段
- 分类的 IP地址
- 子网的划分
- 构成超网
“分类的 IP地址”就是将 IP地址划分为若干个类,每类地址由两个固定的字段组成,第一个是网络号(标志主机或路由器连接到的网络),第二个是主机号(标志该主机或路由器)
2.2.2常用的三类 IP地址
重要特点
1、IP 地址是一种分等级的地址结构。分两个等级的好处是
- IP 地址管理机构分配 IP地址时只分配网络号,主机号由得到该网络号的单位自行分配。方便了 IP 地址的管理
- 路由器仅根据目的主机所连接的网络号来转发分组,使路由表中的项目数大幅度减少,减小了路由表所占的存储空间
2、IP 地址是标志一个主机(或路由器)和一条链路的接口
当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号必须不同,称为多归属主机
一个路由器至少应当连接到两个网络,因此一个路由器至少应当有两个不同的 IP 地址
3、一个网络指具有相同网络号的主机的集合,用转发器或网桥连接起来的若干个局域网仍为一个网络
具有不同网络号的局域网必须用路由器互连
4、所有分配到网络号的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的
2.3 IP地址与硬件地址
从层次的角度看
硬件地址(或物理地址)是数据链路层和物理层使用的地址
IP地址是网络层和以上各层使用的地址,是一种逻辑地址
使用 IP地址的IP数据报一旦交给数据链路层就被封装成 MAC帧,MAC帧传送时使用的源地址和目的地址是硬件地址,写在 MAC帧的首部
强调
- 在 IP层抽象的互联网上只能看到 IP数据报
- 录取只根据目的站的 IP地址的网络号进行路由选择
- 局域网的链路层只能看到 MAC帧。MAC帧在不同网络传送时,其首部的源地址和目的地址要发生变化
- IP层抽象的互联网屏蔽了下层复杂的细节
2.4地址解析协议ARP
要点:在主机 ARP高速缓存中存放一个从 IP地址到硬件地址的映射表,且该表经常动态更新(新增或超时删除)
每个主机设有一个 ARP高速缓存,里面有所在局域网上的各主机和路由器的 IP地址到硬件地址的映射表,存储该主机目前知道的地址
当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址
- 如果有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址
- 如果没有, ARP 进程在本局域网上广播发送一个 ARP 请求分组。收到 ARP 响应分组后,将得到的 IP
地址到硬件地址的映射写入 ARP 高速缓存
ARP高速缓存的作用:存放最近获得的 IP 地址到 MAC 地址的绑定,以减少 ARP 广播的数量
ARP对保存在高速缓存中的每个映射地址项目都设置生存时间,超过生存时间的项目从高速缓存中删掉
ARP是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题
从 IP地址到硬件地址的解析自动进行,主机的用户对这种地址解析过程是不知道的
使用 ARP 的四种典型情况
- 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址
- 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成
- 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址
- 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成
2.5 IP数据报的格式
2.6 IP层分组转发的流程
路由表中,每一条路由最主要的是两个信息:(目的网络地址,下一跳地址)
互联网中所有的分组转发都基于目的主机所在的网络
当路由器收到一个待转发的数据报,从路由表得出下一跳路由器的 IP地址,送交数据链路层的网络接口软件转换成硬件地址,并放在链路层的 MAC帧的首部,最后根据该硬件地址找到下一个路由器
分组转发算法
- 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N
- 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行 (3)
- 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行 (4)
- 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行 (5)
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行 (6)
- 报告转发分组出错
路由表指出,到某个网络应当先到某个路由器,到达下一跳路由器后,再继续查找其他路由表,知道再下一步应当到哪一个路由器
三、划分子网和构造超网
3.1划分子网
3.1.1基本思路
1、划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
2、从主机号借用若干个位作为子网号,而主机号也就相应减少了若干个位
3、凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号,先找到连接在本单位网络上的路由器。然后此路由器在收到 IP 数据报后,再按目的网络号和子网号找到目的子网。最后将 IP 数据报直接交付目的主机
3.1.2子网掩码
好处:不管网络是否划分子网,只要把子网掩码和 IP地址逐位“与”运算就立即得出网络地址
规定:所有网络必须使用子网掩码,路由器的路由表中也必须有子网掩码一栏。若一个网络不划分子网,该网络的子网掩码就使用默认子网掩码
A类地址的默认子网掩码是255.0.0.0,或0xFF000000
B类地址的默认子网掩码是255..255.0.0,或0xFFFF0000
C类地址的默认子网掩码是255..255.255.0,或0xFFFFFF00
子网掩码是一个网络或一个子网的重要属性
- 路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器
- 路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码
- 若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码
例题
同样的 IP地址和不同的子网掩码可以得出相同的网络地址
3.2使用子网时分组的转发
使用子网划分后,路由表必须包含三项内容:目的网络地址,子网掩码,下一跳地址
划分子网时路由器转发分组的算法
- 从收到的分组的首部提取目的 IP 地址 D
- 先用各网络的子网掩码和 D 逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行 (3)
- 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行 (4)
- 对路由表中的每一行,将子网掩码和 D 逐位相“与”。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行 (5)
- 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行 (6)
- 报告转发分组出错
3.3无分类编址
3.3.1网络前缀
CIDR主要特点
- 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念
- 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”
CIDR使用各种长度的“网络前缀”代替分类地址中的网络号和子网号
CIDR 使用“斜线记法”,在 IP 地址面加上一个斜线" / ",然后写上网络前缀所占的位数(对应于三级编址中子网掩码中 1 的个数)。例如: 220.78.168.0 / 24
只要知道 CIDR地址块中的任一地址,就能知道该地址块的起始地址(最小地址),最大地址以及块中的地址数
一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合(也称构成超网 ),它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由
路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能
CIDR 虽然不使用子网,但仍然使用“掩码”这一名词(但不叫子网掩码)
3.3.2最长前缀匹配
路由表中的项目由网络前缀和下一跳地址组成,但在查找路由表时可能会得到不止一个匹配结果,从结果中选择具有最长网络前缀的路由,即选择更具体的一个
网络前缀越长,其地址块就越小,因而路由就越具体
3.3.3. 使用二叉线索查找路由表
IP 地址中从左到右的比特值决定了从根结点逐层向下层延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址
四、网际控制报文协议 ICMP
更有效地转发 IP 数据报和提高交付成功的机会
ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告
ICMP 不是高层协议(看起来好像是高层协议,因为 ICMP 报文是装在 IP 数据报中,作为其中的数据部分),而是 IP 层的协议
ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文
ICMP 差错报告报文共有 4 种:终点不可达,时间超过,参数问题,改变路由(重定向)
ICMP 询问报文有两种:回送请求和回答报文,时间戳请求和回答报文
五、互联网的路由选择协议
5.1有关路由选择协议的基本概念
5.1.1理想的路由算法
所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已
从路由算法的自适应性考虑
- 静态路由选择策略——即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化
- 动态路由选择策略——即自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大
5.1.2分层次的路由选择协议
把整个互联网划分为许多较小的自治系统,记为 AS
自治系统 AS是在单一技术管理下的一组路由器,这些路由器使用一种自治系统内部的路由选择协议和共同的度量
一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略
互联网把路由选择协议分为两大类
1、内部网关协议 IGP
- 在一个自治系统内部使用的路由选择协议
- 目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议
2、外部网关协议 EGP
- 若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP
- 在外部网关协议中目前使用最多的是 BGP-4
每个自治系统都有一个或多个路由器除运行本系统的内部路由选择协议外,还要运行自治系统间的路由选择协议
5.2内部网关协议 RIP
5.2.1工作原理
RIP是一种分布式的基于距离向量的路由选择协议
RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录
“距离”的定义
- 从一个路由器到直接连接的网络的距离定义为 1
- 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1
- RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1
- 这里的“距离”实际上指的是“最短距离”
RIP 允许一条路径最多只能包含 15 个路由器。“距离”的最大值为 16 时即相当于不可达
RIP 不能在两个网络之间同时使用多条路由。它只选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由
RIP协议特点
- 仅和相邻路由器交换信息
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表
- 按固定的时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息
路由表的建立
- 路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为 1)。它的路由表是空的
- 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息
- 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址
- RIP 协议的收敛过程较快。“收敛”就是在自治系统中所有的结点都得到正确的路由选择信息的过程
5.2.2 RIP协议的报文格式
报文中的路由部分由若干个路由信息组成,每个路由信息需要用20个字节。一个 RIP报文最多可包括25个路由,最大长度是4+20 * 25=504字节
报文具有简单的鉴别功能,使用鉴别功能时,将原来写入第一个路由信息的位置用作鉴别,这时最多只能再放入 24 个路由信息
RIP的问题:当网络出现故障时,要经过较长的时间才能将此信息传送到所有的路由器,即好消息传播得快,坏消息传播得慢
RIP 协议的优缺点
优点:实现简单,开销较小。
缺点:
- RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
- 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
- “坏消息传播得慢”,使更新过程的收敛时间过长。
5.3 内部网关协议 OSPF
5.3.1 OSPF协议的基本特点
OSPF的要点
- 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法
- 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。“链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”
- 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息
由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个全网的拓扑结构图,它在全网范围内是一致的。OSPF 的更新过程收敛得快是其重要优点
划分区域
为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫做区域。每一个区域都有一个 32 位的区域标识符。一个区域内的路由器最好不超过 200 个
划分区域的好处是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,减少了整个网络的通信量
在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况
OSPF 使用层次结构的区域划分。在上层的区域叫做主干区域,用来连通其他在下层的区域
OSPF 不用 UDP 而是直接用 IP 数据报传送
OSPF 的其他特点
- OSPF 对不同的链路可根据 IP 分组的不同服务类型 TOS 而设置成不同的代价。因此,OSPF 对于不同类型的业务可计算出不同的路由
- 如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这叫做多路径间的负载平衡
- 所有在 OSPF 路由器之间交换的分组都具有鉴别的功能
- 支持可变长度的子网划分和无分类编址 CIDR
- 每一个链路状态都带上一个 32 位的序号,序号越大状态就越新
5.3.2 OSPF 的五种分组类型
类型1,问候 (Hello) 分组
类型2,数据库描述 (Database Description) 分组
类型3,链路状态请求 (Link State Request) 分组
类型4,链路状态更新 (Link State Update) 分组,用洪泛法对全网更新链路状态
类型5,链路状态确认 (Link State Acknowledgment)分组
OSPF的其他特点
- 为了确保链路连接状态与全网的状态保持一致,OSPF 还规定每隔一段时间,要刷新一次数据库中的链路状态
- 一个路由器的链路状态只涉及到与相邻路由器的连通状态,与整个互联网的规模无直接关系。因此当互联网规模很大时,OSPF协议比距离向量协议 RIP好得多
- OSPF没有“坏消息传播得慢”的问题,据统计,其响应网络变化的时间小于 100 ms
5.4外部网关协议 BGP
边界网关协议 BGP 只是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由
每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人” ,往往是 BGP边界路由器,也可以不是
一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,然后在此连接上交换 BGP 报文以建立 BGP 会话,利用 BGP 会话交换路由信息。使用 TCP 连接交换路由信息的两个 BGP 发言人,彼此成为对方的邻站或对等站
BGP 协议的特点
- BGP 协议交换路由信息的结点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多
- BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列
- 在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表,以后只需在发生变化时更新有变化的部分
BGP-4的四种报文
- 打开 (OPEN) 报文,用来与相邻的另一个BGP发言人建立关系
- 更新 (UPDATE) 报文,用来发送某一路由的信息,以及列出要撤消的多条路由
- 保活 (KEEPALIVE) 报文,用来确认打开报文和周期性地证实邻站关系
- 通知 (NOTIFICATION) 报文,用来发送检测到的差错
更新报文是 BQP协议的核心内容,撤销路由可以一次撤销多条,增加新路由时每个更新报文只能增加一条
5.5路由器的构成
5.5.1路由器的结构
从路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络)把该分组从路由器的某个合适的输出端口转发给下一跳路由器。下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。 路由器的转发分组正是网络层的主要工作
整个的路由器结构可划分为两大部分
- 路由选择部分(也称控制部分)
- 核心构件是路由选择处理机
- 路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表
- 分组转发部分由三部分组成:
- 交换结构:又称为交换组织,其作用是根据转发表对分组进行处理
- 一组输入端口
- 一组输出端口(这里的端口就是硬件接口)
“转发”和“路由选择”的区别
- “转发”就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去
- “路由选择”则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由
- 路由表是根据路由选择算法得出的,一般包含从目的网络到下一跳的映射,需要对网络拓扑变化的计算最优化,总用软件实现
- 转发表从路由表得出,必须包含从要到达的目的网络到输出端口和某些 MAC地址信息的映射,使查找过程最优化,可用特殊硬件实现
路由器的输入端口里面装有物理层、数据链路层和网络层的处理模块。数据链路层剥去帧首部和尾部后,将分组送到网络层的队列中排队等待处理。这会产生一定的时延
输入端口中的查找和转发功能在路由器的交换功能中是最重要的
输出端口里面装有物理层、数据链路层和网络层的处理模块。输出端口从交换结构接收分组,然后把它们发送到路由器外面的线路上
在网络层的处理模块中设有一个缓冲区(队列)。当交换结构传送过来的分组的速率超过输出链路的发送速率时,来不及发送的分组就必须暂时存放在这个队列中
数据链路层处理模块将分组加上链路层的首部和尾部,交给物理层后发送到外部线路
路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因
5.5.2交换结构
交换结构是路由器的关键构件。正是交换结构把分组从一个输入端口转移到某个合适的输出端口
常用交换方法有三种
- 通过存储器
- 通过总线
- 通过纵横交换结构