第四章网络层
目录
- 第四章网络层
- 4.1网络层提供的两种服务
- 4.2网际协议IP
- 虚拟互连网络
- 虚拟互连网络的意义
- IP地址
- IP 地址的编址方法
- 1.点分十进制记法举例
- 2.常用的三种类别的 IP 地址
- IP地址特点
- IP地址与硬件地址
- 地址解析协议ARP
- ARP作用
- ARP 要点
- ARP高速缓存的作用
- IP数据报格式
- 标志(flag)
- IP数据报分片
- IP 数据报首部检验和
- 查找路由表
- 路由器分组转发算法
- 4.3划分子网和构造超网
- 划分子网
- 从两级 IP 地址到三级 IP 地址
- 优点
- 基本思路
- 子网掩码(subnet mask)
- 规则
- 子网划分方法
- 经典例题
- 在划分子网情况下路由器转发分组的算法
- 解题步骤
- 无分类编址 CIDR
- CIDR 地址块
- 路由聚合
- CIDR 记法
- 构成超网
- CIDR 地址块划分
- 最长前缀匹配
- 使用二叉线索查找路由表
- 4.4 网际控制报文协议 ICMP
- ICMP 报文的种类
- ICMP 的应用举例
- 4.5 互联网的路由选择协议
- 路由选择协议的基本概念
- 关于“最佳路由”
- 分层次的路由选择协议
- 自治系统 AS
- 互联网两大类路由选择协议
- 内部网关协议 RIP
- 工作原理
- RIP协议特点
- 路由表的建立
- 路由表更新(距离向量算法)
- RIP2 协议的报文格式
- 内部网关协议OSPF
- 三个要点
- 链路状态数据库
- 划分区域
- OSPF特点
- OSPF分组
- 外部网关协议 BGP
- 基本概念
- BGP 协议的特点
- BGP-4 共使用四种报文
- 路由器的构成
- 典型的路由器的结构
- 分组丢弃
- 交换结构
- 4.6 IPV6
- IPv6 的基本首部
- IPv6 数据报的一般形式
- 六种扩展首部
- IPv6 的地址
- 冒号十六进制记法
- 点分十进制记法的后缀
- IPv6 地址分类
- 从 IPv4 向 IPv6 过渡
- ICMPv6
- 4.7 IP多播
- 基本概念
- 多播 IP 地址
- 多播数据报
- IP 多播需要两种协议
- 多播路由选择
- 4.8 虚拟专用网VPN和网络地址转换 NAT
- 虚拟专用网 VPN
- 基本概念
- 网络地址转换 NAT
- 多协议标记交换MPLS
- 工作原理
- MPLS的首部格式
4.1网络层提供的两种服务
网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。
争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?
- 让网络负责可靠交付
- 使用面向连接发通信方式,通信前先建立虚电路
- 如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点,不丢失、不重复。
虚电路只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。
电路交换的电话通信是先建立了一条真正的连接。
二者类似但不完全相同
- 网络提供数据报服务
- 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
- 发送分组时不需要先建立连接。每一个分组(即 IP 数据报)独立发送,无需编号
- 网络层不提供服务质量的承诺,从而网络造价降低,路由器制作变简
- 如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责可靠交付(包括差错处理、流量控制等) 。
4.2网际协议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网。
- 使用虚拟互连网络的好处是:不用关注异构性,所有主机就好像在一个网络上通信
- 如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网 (Internet)。
IP地址
IP 地址就是给每个连接在互联网上的主机(或路由器)分配一个在全世界范围是唯一的32位标识符
IP 地址现在由互联网名字和数字分配机构ICANN进行分配
IP 地址的编址方法
- 分类IP地址
- 每一类地址都由两个固定长度的字段组成
- 网络号net-id+主机号host-id
- 主机号在它前面的网络号所指明的网络范围内必须是唯一的。
- 子网的划分
- 构成超网
1.点分十进制记法举例
32 位二进制数 | 等价的点分十进制数 |
10000001 00110100 00000110 00000000 | 129.52.6.0 |
11000000 00000101 00110000 00000011 | 192.5.48.3 |
10000000 10000000 11111111 00000000 | 128.128.255.0 |
2.常用的三种类别的 IP 地址
IP地址特点
- IP 地址是一种分等级的地址结构。
- 实际上,IP地址是标志一个主机和一条链路的接口
- 一个路由器至少应当连接到两个网络,所以至少应当有两个不同的 IP 地址。
- 用转发器或网桥连接起来的若干局域网仍为一个网络,具有同样的网络号
- 所有分配到网络号net-id的网络,无论范围大小,都是平等的
- IP 编址解决了"异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作"这个复杂问题。
IP地址与硬件地址
- 从层次的角度看
- 硬件地址(或物理地址)是数据链路层和物理层使用的地址。
- IP 地址是网络层和以上各层使用的地址,是一种逻辑地址。
地址解析协议ARP
ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题
如果不在同一局域网,先找本局域网某个路由器硬件地址,把分组发送给路由器,路由器转发给下个网络,并把工作交给它
从 IP 地址到硬件地址的解析是自动进行的
ARP作用
- 通信时使用了两个地址:
- IP 地址(网络层地址)
- MAC 地址(数据链路层地址)
- 已经知道一个机器的IP地址,如何找到其相应的硬件地址?使用地址解析协议ARP
ARP 要点
- 每一个主机都设有一个 ARP 高速缓存 (ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。
< IP address;MAC address;TTL >
TTL (Time To Live):地址映射有效时间 。
- 同一个局域网中,主机A向主机B发送IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。
- 如有,就可查出其对应的硬件地址并写入 MAC 帧
- 如没有,ARP进程在本局域网广播发送一个ARP请求分组,收到ARP响应分组后,将得到的IP地址到硬件地址的映射写入ARP高速缓存
ARP请求分组/响应分组:包含 发送方硬件地址 / 发送方 IP 地址 / 目标方硬件地址(未知时填 0) / 目标方 IP 地址。
ARP 分组封装在物理网络的帧中传输。
ARP高速缓存的作用
存放最近获得的IP地址到MAC地址的绑定,以减少ARP广播的数量
IP数据报格式
- IP数据报=首部+数据
- 首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
- 首部的固定部分的后面是一些可选字段,其长度是可变的。
标志(flag)
- 占 3 位,目前只有前两位有意义。
- 标志字段的最低位是 MF (More Fragment)。MF =1 表示后面“还有分片”。MF = 0 表示最后一个分片。
- 标志字段中间的一位是 DF (Don't Fragment) 。只有当 DF= 0 时才允许分片。
IP数据报分片
- 片偏移占13 位,指出:较长的分组在分片后某片在原分组中的相对位置。
- 片偏移以 8 个字节为偏移单位。
- 分片例子
- 一数据报的总长度为 3820 字节,其数据部分的长度为 3800 字节(使用固定首部),需要分片为长度不超过 1420 字节的数据报片。
- 因固定首部长度为 20 字节,因此每个数据报片的数据部分长度不能超过 1400 字节。
- 于是分为 3 个数据报片,其数据部分的长度分别为 1400、1400 和 1000 字节。
- 原始数据报首部被复制为各数据报片的首部,但必须修改有关字段的值。
IP 数据报首部检验和
计算采用 16 位二进制反码求和算法
IP数据报首部没有下一跳路由器的IP地址!!!
当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件
网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器。
查找路由表
- 在路由表中,对每一条路由,最主要的是:目的网络地址+下一跳地址
- 经过多次间接交付,只有到达最后一个路由器时,才试图向目的主机进行直接交付。
路由器分组转发算法
- 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N
- 网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行 (3)
- 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行 (4)
- 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行 (5)。
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行 (6)。
- 报告转发分组出错。
路由表指出,到某个网络应当先到某个路由器(即下一跳路由器)。
4.3划分子网和构造超网
划分子网
从两级 IP 地址到三级 IP 地址
从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址,这种做法叫做划分子网
优点
- 减少了 IP 地址的浪费
- 使网络的组织更加灵活
- 更便于维护和管理
基本思路
- 划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
- 从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位,不改变 IP 地址原来的网络号 net-id
子网掩码(subnet mask)
子网掩码是一个网络或一个子网的重要属性,使用子网掩码可以找出 IP 地址中的子网部分
数据报的首部并没有提供子网掩码的信息!
规则
- 子网掩码长度 = 32 位
- 某位 = 1:IP地址中的对应位为网络号和子网号
- 某位 = 0:IP地址中的对应位为主机号
(IP 地址) AND (子网掩码) =网络地址
子网划分方法
- 有固定长度子网和变长子网两种子网划分方法。
- 在采用固定长度子网时,所划分的所有子网的子网掩码都是相同的。
- 划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。
经典例题
已知IP地址和子网掩码,试求网络地址
- 将IP地址第三个字节二进制
- 将子网掩码二进制
- 二者相与再化成点分十进制,则为网络地址
不同的子网掩码得出相同的网络地址,但不同的掩码的效果是不同的。
在划分子网情况下路由器转发分组的算法
- 从收到的分组的首部提取目的 IP 地址 D。
- 先用各网络的子网掩码和 D 逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行 (3)。
- 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行 (4)。
- 对路由表中的每一行,将子网掩码和 D 逐位相“与”。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行 (5)。
- 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行 (6)。
- 报告转发分组出错。
解题步骤
- 提取发送的分组的目的 IP 地址:128.30.33.138
- H1 首先检查主机 128.30.33.138 是否连接在本网络上
如果是,则直接交付;
否则,就送交路由器 R1,并逐项查找路由表。 - 主机 H1 首先将本子网的子网掩码 255.255.255.128与分组的 IP 地址 128.30.33.138 逐比特相“与”(AND 操作),由于不等于H1网络地址,因此 H1 必须把分组传送到路由器 R1然后逐项查找路由表
- R1 收到分组后就把分组的 IP 地址 128.30.33.138 与路由表目的网络地址的子网掩码逐一AND操作,看结果是否等于目的网络地址
- 255.255.255.128 AND 128.30.33.138 = 128.30.33.128
不匹配! - 255.255.255.128 AND 128.30.33.138 = 128.30.33.128
匹配! - 表明子网 2 就是收到的分组所要寻找的目的网络。
无分类编址 CIDR
起因:B 类地址即将分配完毕,整个 IPv4 的地址空间最终将全部耗尽
因此提出了使用变长子网掩码 VLSM提高 IP 地址资源的利用率,在 VLSM 的基础上又研究出无分类域间路由选择 CIDR
- CIDR使用各种长度的网络前缀来代替分类地址中的网络号和子网号。
- CIDR 使用“斜线记法”(slash notation),它又称为 CIDR 记法,即在 IP 地址面加上一个斜线“/”,然后写上网络前缀所占的位数,例如: 192.168.1.0/24
CIDR 地址块
- CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”
- 128.14.32.0/20 表示的地址块共有 2^12 个地址(因为斜线后面的 20 是网络前缀的位数,而总共32位,所以这个地址的主机号是 12 位)
- 128.14.32.0/20 地址块的最小地址:128.14.32.0
128.14.32.0/20 地址块的最大地址:128.14.47.255
最小到最大,12位主机号从全0递增到全1,全 0 和全 1 的主机号地址一般不使用
路由聚合
- 一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合
- 路由聚合也称为构成超网
- CIDR 虽然不使用子网了,但仍然使用“掩码”这一名词(但不叫子网掩码)。
- 对于 /20 地址块,它的掩码是 20 个连续的 1。 斜线记法中的数字就是掩码中1的个数
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 地址中的主机号,可以是任意值。
构成超网
- 前缀长度不超过 23 位的 CIDR 地址块都包含了多个 C 类地址。
这些 C 类地址合起来就构成了超网。 - CIDR 地址块中的地址数一定是 2 的整数次幂。
CIDR 地址块划分
- 地址数=2^(主机位数),主机位数32-斜线后面标记的网络位数,如大学地址数1024 = 2^(32-22)
- 为了使1,2,3,4系区分,在新增位加了1
- 广播地址是主机号全为1
最长前缀匹配
- 在查找路由表时可能会得到不止一个匹配结果。
- 当不同掩码都匹配时,用最长前缀匹配机制找匹配更多的,更具体
- 最长前缀匹配又称为最长匹配或最佳匹配
- 选择两个匹配的地址中更具体的一个,即选择最长前缀的地址,第二个项目。
使用二叉线索查找路由表
- 为了进行更加有效的查找,通常是将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉线索 (binary trie)。
- 每次检查IP地址左边的第一位,如为 0,则第一层的节点就在根节点的左下方;如为 1,则在右下方。然后再检查地址的第二位,构造出第二层的节点。依此类推,直到唯一前缀的最后一位。
- 查找路由表如何加快速度:二叉线索,自上而下
4.4 网际控制报文协议 ICMP
为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP
ICMP 报文的种类
- 有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
- ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和
- ICMP差错报告报文
- 终点不可达
- 时间超过
- 参数问题
- 改变路由(重定向)(Redirect)
- ICMP 询问报文
- 回送请求和回答报文
- 时间戳请求和回答报文
ICMP 的应用举例
- PING,用来测试两个主机之间的连通性,使用了 ICMP 回送请求与回送回答报文
- 可打开命令行尝试:ping mail.sina.com.cn
- Traceroute,在 Windows 操作系统中这个命令是 tracert。用来跟踪一个分组从源点到终点的路径。
- 可打开命令行尝试:tracert mail.sina.com.cn
4.5 互联网的路由选择协议
路由选择协议的基本概念
关于“最佳路由”
- 所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。
- 路由选择是个非常复杂的问题
- 它是网络中的所有结点共同协调工作的结果。
- 路由选择的环境往往是不断变化的,具有不可预知性
- 静态路由选择策略——即非自适应路由选择
- 简单和开销较小,但不能及时适应网络状态的变化。
- 动态路由选择策略——即自适应路由选择
- 能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。
分层次的路由选择协议
- 互联网采用分层次的路由选择协议,原因
- 互联网的规模非常大
- 许多单位希望保密本单位网络布局
自治系统 AS
- 自治系统 AS 的定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。
- 一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。
互联网两大类路由选择协议
- 内部网关协议 IGP (Interior Gateway Protocol)
- 在一个自治系统内部使用的路由选择协议
- 目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。
- 外部网关协议 EGP (External Gateway Protocol)
- 若源站和目的站处在不同的自治系统中,使用协议将路由选择信息传递到另一个自治系统中
- 目前使用的协议就是 BGP
内部网关协议 RIP
工作原理
- RIP 是一种分布式的、基于距离向量的路由选择协议。
- RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录
- 距离又称跳数,指的是最短距离
- 一个路由器到直接连接的网络的距离= 1。
一个路由器到非直接连接的网络的距离=所经过的路由器数+ 1。 - RIP 允许一条路径最多只能包含 15 个路由器,“距离”的最大值为 16 时即相当于不可达。
RIP协议特点
- 仅与相邻路由器交换信息
- 交换的信息是当前本路由器所知全部信息,即是自己的路由表
- 按固定时间间隔交换路由信息
好消息传得快,坏消息传得慢
因为坏消息会以为可达,回传产生循环直到x次最后双方都到达16才发现无法实现,水平分割可以防止坏消息回传
路由表的建立
- 路由器在刚刚开始工作时,路由表是空的
- 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。
路由表更新(距离向量算法)
- 将收到的路由表的跳数都+1,下一跳都变成X (从X收到的路由表)
- 分情况更新
- 若有新信息(目的网络不在表中),直接加
- 若信息相同(目的网络+下一跳),更新为收到的信息
- 若目的网络相同,下一跳不同,择跳数小为优进行更新
- 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为 16(表示不可达)
- 生成新路由表
RIP2 协议的报文格式
- 一个 RIP 报文最多可包括 25 个路由,因而 RIP 报文的最大长度是 4 + 20 x 25 = 504 字节。如超过,必须再用一个 RIP 报文来传送。
- RIP2 具有简单的鉴别功能。
内部网关协议OSPF
开放,最短路径优先OSPF,采用分布式链路状态协议
三个要点
- 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法
- 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
- 只有当链路状态发生变化时,才向本自治系统中所有路由器发送信息
链路状态数据库
- 由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。
- 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的,能较快地进行更新
划分区域
- 在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况,减少整个网络上的通信量
- OSPF 使用层次结构的区域划分。在上层的区域叫做主干区域
- 主干区域的标识符规定为0.0.0.0。主干区域的作用是用来连通其他在下层的区域。
OSPF特点
- OSPF 不用 UDP 而是直接用 IP 数据报传送
- OSPF 构成的数据报很短,可以不必将长的数据报分片传送。但分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传
- OSPF 对于不同类型的业务可计算出不同的路由。
- 如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这叫做多路径间的负载平衡
- 所有在 OSPF 路由器之间交换的分组都具有鉴别的功能。
- 支持可变长度的子网划分和无分类编址 CIDR
- 当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多
- OSPF 没有“坏消息传播得慢”的问题
OSPF分组
- 问候 (Hello) 分组。
- 数据库描述 (Database Description) 分组。
- 链路状态请求 (Link State Request) 分组。
- 链路状态更新 (Link State Update) 分组,用洪泛法对全网更新链路状态。
- 链路状态确认 (Link State Acknowledgment) 分组。
多点接入的局域网采用了指定的路由器 (designated router) 的方法,使广播的信息量大大减少。
外部网关协议 BGP
BGP 是不同自治系统的路由器之间交换路由信息的协议
基本概念
- 互联网的规模太大,边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。
- 每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人”,往往就是 BGP 边界路由器
- 一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,如下步骤
- 先建立 TCP 连接
- 在此连接上交换 BGP 报文以建立 BGP 会话(session)
- 利用 BGP 会话交换路由信息
- 这两个交换路由信息的BGP发言人彼此成为对方的邻站(neighbor)或对等站(peer)
- BGP 所交换的网络可达性的信息就是要到达某个网络所要经过的一系列 AS。
BGP 协议的特点
- BGP 协议交换路由信息的结点数量级是自治系统数的量级,比这些自治系统中的网络数少很多。
- BGP 支持 CIDR
- 在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。
BGP-4 共使用四种报文
- 打开 (OPEN) 报文,用来与相邻的另一个BGP发言人建立关系
- 更新 (UPDATE) 报文,用来发送某一路由的信息,以及列出要撤消的多条路由。
- 保活 (KEEPALIVE) 报文,用来确认打开报文和周期性地证实邻站关系。
- 通知 (NOTIFICATION) 报文,用来发送检测到的差错。
路由器的构成
- 路由器是一种典型的网络层设备,是互联网中的关键设备
- 其任务是转发分组
- 路由器的主要作用是:
- 连通不同的网络
- 选择信息传送的线路
典型的路由器的结构
整个的路由器结构可划分为两大部分:
- 路由选择部分
- 控制部分,其核心构件是路由选择处理机
- 任务:构造路由表,更新和维护路由表
- 分组转发部分
- 交换结构 (switching fabric):又称为交换组织,其作用是根据转发表 (forwarding table) 对分组进行处理。
- 一组输入端口
- 输入端口中的查找和转发功能在路由器的交换功能中是最重要的。
- 一组输出端口
“转发”(forwarding) 就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。
“路由选择”(routing) 则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。
路由表是根据路由选择算法得出的。而转发表是从路由表得出的,在讨论路由选择的原理时一般不区分这两者
分组丢弃
- 路由器处理分组的速率赶不上分组进入队列的速率,则会发生分组丢弃
- 路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。
交换结构
- 交换结构是路由器的关键构件
- 作用:把分组从一个输入端口转移到某个合适的输出端口。
- 常用交换方法有三种:
- 通过存储器:需要路由器处理机
- 通过总线:不需要路由选择处理机的干预
- 通过纵横交换结构:常称为互连网络
4.6 IPV6
解决 IP 地址耗尽的根本措施就是采用具有更大地址空间的新版本的 IP,即 IPv6
IPv6 的基本首部
- IPv6 将首部长度变为固定的 40 字节,称为基本首部
- IPv6 仍支持无连接的传送,但将协议数据单元 PDU 称为分组,为方便起见,下面仍采用数据报这一名词。
- IPv6 首部改为 8 字节对齐,原来的 IPv4 首部是 4 字节对齐
IPv6 数据报的一般形式
IPv6 数据报由两大部分组成:
- 基本首部 (base header)
- 有效载荷 (payload)。有效载荷也称为净负荷,有效载荷允许有零个或多个扩展首部,指明 IPv6 数据报除基本首部以外的字节数
IPv6 把原来 IPv4 首部中选项的功能都放在扩展首部中
数据报途中经过的路由器都不处理这些扩展首部(只有一个首部例外,即逐跳选项扩展首部)。
这样大大提高了路由器的处理效率
六种扩展首部
- 逐跳选项
- 路由选择
- 分片
- 鉴别
- 封装安全有效载荷
- 目的站选项
IPv6 的地址
- IPv6 数据报的目的地址可以是以下三种基本类型地址之一:
(1) 单播 (unicast):传统的点对点通信。
(2) 多播 (multicast):一点对多点的通信。
(3) 任播 (anycast):这是 IPv6 增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个。 - IPv6 将实现 IPv6 的主机和路由器均称为结点
- IPv6 地址是分配给结点上面的接口的
- 一个接口可以有多个单播地址。
- 其中的任何一个地址都可以当作到达该结点的目的地址。即一个结点接口的单播地址可用来唯一地标志该结点。
冒号十六进制记法
- 在 IPv6 中,每个地址占 128 位,使用冒号十六进制记法
- 每个 16 位的值用十六进制值表示,各值之间用冒号分隔。例如:
68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF - 在十六进制记法中,允许把数字前面的 0 省略。例如把 0000 中的前三个 0 省略,写成 1 个 0。
- 允许零压缩,即一连串连续的零可以为一对冒号所取代。
- FF05:0:0:0:0:0:0:B3 可压缩为:
FF05::B3 - 在任一地址中只能使用一次零压缩
点分十进制记法的后缀
- 冒号十六进制记法可结合使用点分十进制记法的后缀
- 例如:0:0:0:0:0:0:128.10.2.1
再使用零压缩即可得出: ::128.10.2.1 - CIDR 的斜线表示法仍然可用。
- 60 位的前缀 12AB00000000CD3 可记为:
12AB:0000:0000:CD30:0000:0000:0000:0000/60
或 12AB::CD30:0:0:0:0/60 (零压缩)[只能用一次零压缩]
或 12AB:0:0:CD30::/60 (零压缩)
IPv6 地址分类
- 未指明地址
- 00…0(128位),16 字节的全 0 地址,可记为 ::/128
- 这个地址只能为还没有配置到一个标准的 IP 地址的主机当作源地址使用。
- 这类地址仅此一个。
- 环回地址
- 0:0:0:0:0:0:0:1(记为 ::1)
- 这类地址仅此一个
- 多播地址
- 11111111(8位),可记为 FF00::/8
- 本地链路单播地址
- 1111111010(10位), 可记为 FE80::/10
- 全球单播地址
从 IPv4 向 IPv6 过渡
- 向 IPv6 过渡只能采用逐步演进的办法,同时,还必须使新安装的 IPv6 系统能够向后兼容
- IPv6 系统必须能够接收和转发 IPv4 分组,并且能够为 IPv4 分组选择路由。
- 两种向 IPv6 过渡的策略:
- 使用双协议栈
- 指在完全过渡到 IPv6 之前,使一部分主机(或路由器)装有两个协议栈,一个 IPv4 和一个 IPv6,分别用于与IPV4和IPV6的主机进行通信
- 双协议栈的主机(或路由器)记为 IPv6/IPv4,表明它同时具有两种 IP 地址:一个 IPv6 地址和一个 IPv4 地址。
- 使用隧道技术
- 在 IPv6 数据报要进入 IPv4 网络时,把 IPv6 数据报封装成为 IPv4 数据报,整个的 IPv6 数据报变成了 IPv4 数据报的数据部分。
- 离开时又将原来的 IPv6 数据报交给主机的 IPv6 协议栈。
ICMPv6
IPv6 也不保证数据报的可靠交付,也需要使用 ICMP 来反馈一些差错信息,新的版本称为 ICMPv6。
4.7 IP多播
以前曾译为组播
基本概念
- 在互联网上进行多播就叫做 IP 多播
- 目的:更好支持一对多通信
- 可大大节约网络资源
- 采用单播方式,向 90 台主机传送同样的视频节目需要发送 90 个单播
- 采用多播方式,只需发送一次到多播组。路由器复制分组。局域网具有硬件多播功能,不需要复制分组。
- 靠路由器来实现,能够运行多播协议的路由器称为多播路由器
多播 IP 地址
- IP 多播所传送的分组需要使用多播 IP 地址。
- 在多播数据报的目的地址写入的是多播组的标识符。
- 多播组的标识符就是 IP 地址中的 D 类地址(多播地址)
- 多播地址只能用于目的地址,不能用于源地址
多播数据报
- 多播数据报和一般的 IP 数据报的区别就是它使用 D 类 IP 地址作为目的地址,并且首部中的协议字段值是 2,表明使用网际组管理协议 IGMP
- 多播数据报也是“尽最大努力交付”
- 对多播数据报不产生 ICMP 差错报文,若在 PING 命令后面键入多播地址,将永远不会收到响应。
- 收到多播数据报的主机,还要在 IP 层利用软件进行过滤
TCP/IP 协议使用的以太网多播地址块的范围是
从 00-00-5E-00-00-00
到 00-00-5E-FF-FF-FFD 类 IP 地址可供分配的有 28 位,在每一个地址中,只有23位可用作多播,前 5 位不能用来构成以太网硬件地址
IP 多播需要两种协议
- 网际组管理协议 IGMP
- 为了使路由器知道多播组成员的信息,需要利用网际组管理协议 IGMP
- IGMP 协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组
- IGMP 是整个网际协议 IP 的一个组成部分
- IGMP工作阶段
- 第一阶段:加入多播组
- 第二阶段:探询组成员变化情况
- 本地多播路由器要周期性地探询本地局域网上的主机
- 只要对某个组有一个主机响应,那么多播路由器就认为这个组是活跃的。
- 在主机和多播路由器之间的所有通信都是使用 IP 多播
- 多播路由器在探询组成员关系时,只需要对所有的组发送一个请求信息的询问报文,而不需要对每一个组发送一个询问报文
- 多播路由选择协议
- 连接在局域网上的多播路由器还必须和互联网上的其他多播路由器协同工作,这就需要使用多播路由选择协议。
- 多播转发必须动态地适应多播组成员的变化
- 多播数据报可以由没有加入多播组的主机发出
- 多播路由选择实际上就是要找出以源主机为根结点的多播转发树。
多播路由选择
多播路由选择协议在转发多播数据报时使用三种方法:
- 洪泛与剪除
- 适合于较小的多播组
- 为了避免兜圈子,采用了叫做反向路径广播 RPB 的策略
- RPB 的要点
- 如果在多播转发树上的某个路由器发现它的下游树枝(即叶节点方向)已没有该多播组的成员,就应把它和下游的树枝一起剪除
- 隧道技术 (tunneling)
- 隧道技术适用于多播组的位置在地理上很分散的情况。
- 基于核心的发现技术
- 对每一个多播组 G 指定一个核心(core) 路由器,给出它的 IP 单播地址
- 核心路由器按照前面讲过的方法创建出对应于多播组 G 的转发树。
4.8 虚拟专用网VPN和网络地址转换 NAT
虚拟专用网 VPN
- IP分为本地地址和全球地址
- 本地是机构内部使用,全球是需向互联网管理机构申请的全球唯一的IP地址
- 问题:本地可能与全球重合,出现地址二义性
- 解决:RFC 1918 指明了一些专用地址 (private address)。专用地址只能用作本地地址而不能用作全球地址。在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发
三个专用 IP 地址块:
- 10.0.0.0 到 10.255.255.255
- A类,或记为10.0.0.0/8,它又称为 24 位块
- 172.16.0.0 到 172.31.255.255
- B类,或记为172.16.0.0/12,它又称为 20 位块
- 192.168.0.0 到 192.168.255.255
- C类,或记为192.168.0.0/16,它又称为 16 位块
采用这样的专用 IP 地址的互连网络称为专用互联网或本地互联网,或更简单些,就叫做专用网。
基本概念
- 利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN (Virtual Private Network)
- 如果专用网不同网点之间的通信必须经过公用的互联网,但又有保密的要求,那么所有通过互联网传送的数据都必须加密。
- 可以用隧道技术实现虚拟专用网
- 内联网 intranet 和外联网 extranet
- 由部门 A 和 B 的内部网络所构成的虚拟专用网 VPN 又称为内联网 (intranet),表示部门 A 和 B 都是在同一个机构的内部。
- 一个机构和某些外部机构共同建立的虚拟专用网 VPN 又称为外联网 (extranet)。
- 远程接入 VPN (remote access VPN)可以满足外部流动员工访问公司网络的需求。
网络地址转换 NAT
- 原因:在专用网上使用专用地址的主机与互联网上的主机通信(并不需要加密)
- 需要在专用网连接到互联网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫做 NAT路由器,它至少有一个有效的外部全球IP地址,用于将其本地地址转换成全球 IP 地址
- 转换过程(内部主机 A 用本地地址 IPA 和互联网上主机 B )
- 发出到互联网时,NAT 路由器将数据报的源地址 IPA 转换成全球地址 IPG,并把转换结果记录到NAT地址转换表中,目的地址 IPB 保持不变,然后发送到互联网
- NAT 路由器收到主机 B 发回的数据报时,根据 NAT 转换表将目的地址 IPG 转换为 IPA,转发给最终的内部主机 A
- 简单来说就是发生两次地址转换
- 离开专用网时:替换源地址,将内部地址替换为全球地址
- 进入专用网时:替换目的地址,将全球地址替换为内部地址
- 现在常用的 NAT 转换表把运输层的端口号也利用上,可以使多个拥有本地地址的主机,共用一个 NAT 路由器上的全球 IP 地址,因而可以同时和互联网上的不同主机进行通信。使用端口号的 NAT 叫做网络地址与端口号转换NAPT
多协议标记交换MPLS
MPLS 并没有取代 IP,而是作为一种 IP 增强技术
工作原理
- 在 MPLS 域的入口处,给每一个 IP 数据报打上固定长度“标记”,然后对打上标记的 IP 数据报用硬件进行转发。
MPLS 域是指该域所有路由器都是支持 MPLS 技术的标记交换路由器 LSR,同时具有标记交换和路由选择这两种功能,标记交换功能是为了快速转发
- 采用硬件技术对打上标记的 IP 数据报进行转发就称为标记交换。
- “交换”也表示在转发时不再上升到第三层查找转发表,而是根据标记在第二层(链路层)用硬件进行转发。
- 基本工作过程
- MPLS 域中的各 LSR 使用专门的标记分配协议 LDP 交换报文,并找出标记交换路径 LSP。各 LSR 根据这些路径构造出分组转发表。
- 分组进入到 MPLS 域时, MPLS 入口结点把分组打上标记,并按照转发表将分组转发给下一个 LSR。给 IP 数据报打标记的过程叫做分类 (classification)。
- 分组每经过一个 LSR,LSR 就要做两件事:一是转发,二是更换新的标记,即把入标记更换成为出标记。这就叫做标记对换 (label swapping)
- 当分组离开 MPLS 域时,MPLS 出口结点把分组的标记去除。再以后就按照一般分组的转发方法进行转发。
由入口 LSR 确定进入 MPLS 域以后的转发路径”称为显式路由选择
- 转发等价类 FEC
- “转发等价类”就是路由器按照同样方式对待的分组的集合。
“按照同样方式对待”表示:从同样接口转发到同样的下一跳地址,并且具有同样服务类别和同样丢弃优先级等。
- 入口结点将属于同样 FEC 的分组都指派同样的标记。
- FEC用于负载平衡
传统默认走最短路径,FEC可更好提高整个网络的资源利用率
这种均衡网络负载的做法也称为流量工程 TE
MPLS的首部格式