第四章 网络层
1.网络层提供的两种服务
网络提供数据报服务
- 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
2.网际协议IP
- 网际协议IP是TCP/IP体系中两个最主要的协议之一
- 与IP协议配套使用的还有三个协议:
- 地址解析协议 ARP
- 网际控制报文协议 ICMP
- 网际组管理协议 IGMP
使用一些中间设备进行互连
- 将网络互相连接起来要使用一些中间设备
- 中间设备又称为中间系统或中继系统
- 有以下五种不同的中间设备:
- 物理层中继系统:转发器
- 数据链路层中继系统:网桥或桥接器
- 网络层中继系统:路由器
- 网桥和路由器的混合物:桥路器
- 网络层以上的中继系统:网关
虚拟互连网络的意义
- 所谓虚拟互连网络也就是逻辑互连网络,他的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用IP协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络
- 使用IP协议的虚拟互连网络可简称为IP网
- 使用虚拟互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。
- 如果在这种覆盖全球的IP网的上层使用TCP协议,那么就是现在的互联网
分类的IP地址
- 在 TCP/IP 体系中,IP 地址是一个最基本的概念。
- 重点学习:
-
- IP 地址及其表示方法
- 常用的三种类别的 IP 地址
-
IP 地址及其表示方法
- 我们把整个因特网看成为一个单一的、抽象的网络。
- IP 地址就是给每个连接在互联网上的主机(或路由器)分配一个在全世界范围是唯一的 32 位的标识符。
- IP 地址现在由互联网名字和数字分配机构ICANN进行分配。
IP 地址的编址方法
- 分类的 IP 地址。这是最基本的编址方法,在 1981 年就通过了相应的标准协议。
- 子网的划分。这是对最基本的编址方法的改进,其标准 [RFC 950] 在 1985 年通过
- 构成超网。这是比较新的无分类编址方法。 1993 年提出后很快就得到推广应用。
分类的IP地址
- 将IP地址划分为若干个固定类。
- 每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)。
- 主机号在它前面的网络号所指明的网络范围内必须是唯一的。
- 由此可见,一个 IP 地址在整个互联网范围内是唯一的。
IP 地址的一些重要特点
(1) IP 地址是一种分等级的地址结构。
(2) 实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口。
由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。
(3) 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id。
(4) 所有分配到网络号 net-id 的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。
- 在同一个局域网上的主机或路由器的IP 地址中的网络号必须是一样的。
IP 地址与硬件地址
IP 地址与硬件地址是不同的地址。
从层次的角度看,1.==硬件地址(或物理地址)==是数据链路层和物理层使用的地址。2.IP 地址是网络层和以上各层使用的地址,是一种逻辑地址(称 IP 地址是逻辑地址是因为 IP 地址是用软件实现的)。
地址解析协议 ARP
- 通信时使用了两个地址
- IP 地址(网络层地址)
- MAC 地址(数据链路层地址)
- 每一个主机都设有一个 ARP 高速缓存
ARP高速缓存的作用
- 存放最近获得的 IP 地址到 MAC 地址的绑定,以减少 ARP 广播的数量。
- 为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。
- 当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。
IP数据报的格式
- 一个 IP 数据报由首部和数据两部分组成。
- 首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
- 在首部的固定部分的后面是一些可选字段,其长度是可变的。
- TTL:指示数据报在网络中可通过的路由器数的最大值。
首部校验和:占16位,只检验数据报的首部,不检验数据部分。
IP数据报首部的可变部分(了解)
- 选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目。
- 实际上这些选项很少被使用。
IP 层转发分组的流程
- 假设:有四个 A 类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。
- 可以想像,若按目的主机号来制作路由表,每一个路由表就有 4 万个项目,即 4 万行(每一行对应于一台主机),则所得出的路由表就会过于庞大。
- 但若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由表就只包含 4 个项目(每一行对应于一个网络),这样就可使路由表大大简化。
查找路由表
根据目的网络地址就能确定下一跳路由器,这样做的结果是:
- IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。
- 只有到达最后一个路由器时,才试图向目的主机进行直接交付。
特定主机路由
- 虽然互联网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许有这样的特例,即为特定的目的主机指明一个路由。
- 采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。
默认路由(default route)
- 路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。
必须强调指出
- IP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”。
- 当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件。
- 网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器。
路由器分组转发算法
- (1) 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
- (2) 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行 (3)。
- (3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行 (4)。
- (4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行 (5)。
- (5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行 (6)。
- (6) 报告转发分组出错。
关于路由表
路由表指出,到某个网络应当先到某个路由器(即下一跳路由器)。
3.划分子网和构造超网
划分子网
- 从两级 IP 地址到三级 IP 地址
- 在 ARPANET 的早期,IP 地址的设计确实不够合理:
- IP 地址空间的利用率有时很低。
- 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
- 两级的 IP 地址不够灵活。
- 三级IP地址
- 从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址。
- 这种做法叫做划分子网
- 划分子网已成为互联网的正式标准协议。
划分子网的基本思路
- 划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
- 从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。
- 凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。
- 然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。
划分子网后变成了三级结构
- 优点:
- 减少了 IP 地址的浪费
- 使网络的组织更加灵活
- 更便于维护和管理
- 划分子网纯属一个单位内部的事情,对外部网络透明,对外仍然表现为没有划分子网的一个网络。
子网掩码
- 从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。
- 使用子网掩码 (subnet mask) 可以找出 IP 地址中的子网部分。
- 规则:
- 子网掩码长度 = 32 位
- 某位 = 1:IP地址中的对应位为网络号和子网号
- 某位 = 0:IP地址中的对应位为主机号
子网掩码是一个重要属性
- 子网掩码是一个网络或一个子网的重要属性。
- 路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。
- 路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。
- 若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码。
子网划分方法
- 有固定长度子网和变长子网两种子网划分方法。
- 在采用固定长度子网时,所划分的所有子网的子网掩码都是相同的。
- 划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。
- 虽然根据已成为互联网标准协议的 RFC 950 文档,子网号不能为全 1 或全 0。
使用子网时分组的转发
- 在不划分子网的两级 IP 地址下,从 IP 地址得出网络地址是个很简单的事。
- 但在划分子网的情况下,从 IP 地址却不能唯一地得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息。
- 因此分组转发的算法也必须做相应的改动。
在划分子网情况下路由器转发分组的算法
(1) 从收到的分组的首部提取目的 IP 地址 D。
(2) 先用各网络的子网掩码和 D 逐位相“与”,看是否和相应的网 络地址匹配。若匹配,则将分组直接交付。否则就是间接交付, 执行 (3)。
(3) 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给 指明的下一跳路由器;否则,执行 (4)。
(4) 对路由表中的每一行,将子网掩码和 D 逐位相“与”。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行 (5)。
(5) 若路由表中有一个默认路由,则将分组传送给路由表中所指明 的默认路由器;否则,执行 (6)。
(6) 报告转发分组出错。
- win+r–>cmd–>route print:打印路由表
无分类编址 CIDR
- 使用变长子网掩码 VLSM (Variable Length Subnet Mask)可进一步提高 IP 地址资源的利用率。
- 在 VLSM 的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择 CIDR (Classless Inter-Domain Routing)。
- CIDR 最主要的特点:
- CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。
- CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。
- IP 地址从三级编址(使用子网掩码)又回到了两级编址。
- CIDR 使用“斜线记法”(slash notation),它又称为 CIDR 记法,即在 IP 地址面加上一个斜线“/”,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。例如: 220.78.168.0/24
CIDR 地址块
- CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”。
- 128.14.32.0/20 表示的地址块共有2^12个地址(因为斜线后面的 20 是网络前缀的位数,所以这个地址的主机号是 12 位)。
- 这个地址块的起始地址是 128.14.32.0。
- 在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20 地址块”。
- 128.14.32.0/20 地址块的最小地址:
- 128.14.32.0128.14.32.0/20 地址块的最大地址:128.14.47.255
- 全 0 和全 1 的主机号地址一般不使用。
路由聚合
- 一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。
- 路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能。
- 路由聚合也称为构成超网。
- CIDR 虽然不使用子网了,但仍然使用“掩码”这一名词(但不叫子网掩码)。
- 对于 /20 地址块,它的掩码是 20 个连续的 1。 斜线记法中的数字就是掩码中1的个数。
构成超网:节约Iv4
- 前缀长度不超过 23 位的 CIDR 地址块都包含了多个 C 类地址。
- 这些 C 类地址合起来就构成了超网。
- CIDR 地址块中的地址数一定是 2 的整数次幂。
- 网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。
- CIDR 的一个好处是:可以更加有效地分配 IPv4 的地址空间,可根据客户的需要分配适当大小的 CIDR 地址块。
4.网际控制报文协议ICMP
- 为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。
- ICMP 是互联网的标准协议。
- ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
- 但 ICMP 不是高层协议(看起来好像是高层协议,因为 ICMP 报文是装在 IP 数据报中,作为其中的数据部分),而是 IP 层的协议。
ICMP报文的种类
- ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。
- ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关。
不应发送 ICMP 差错报告报文的几种情况
- 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
- 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
- 对具有多播地址的数据报都不发送 ICMP 差错报告报文。
- 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。
ICMP 询问报文有两种
- 回送请求和回答报文
- 时间戳请求和回答报文
ICMP 的应用举例
- PING 用来测试两个主机之间的连通性。
- PING 使用了 ICMP 回送请求与回送回答报文。
5.互联网的路由选择协议
有关路由选择协议的几个基本概念
- 理想的路由算法
- 算法必须是正确的和完整的。
- 算法在计算上应简单。
- 算法应能适应通信量和网络拓扑的变化,这就是说,要有自适应性。
- 算法应具有稳定性。
- 算法应是公平的。
- 算法应是最佳的。
- 关于“最佳路由”
- 不存在一种绝对的最佳路由算法。
- 所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。
- 实际的路由选择算法,应尽可能接近于理想的算法。
- 路由选择是个非常复杂的问题
- 它是网络中的所有结点共同协调工作的结果。
- 路由选择的环境往往是不断变化的,而这种变化有时无法事先知道。
从路由算法的自适应性考虑
- 静态路由选择策略——即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。
- 动态路由选择策略——即自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。
分层次的路由选择协议
- 互联网采用分层次的路由选择协议。
自治系统
- 自治系统 AS 的定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。
- 现在对自治系统 AS 的定义是强调下面的事实:尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。
互联网有两大类路由选择协议
- 内部网关协议 IGP:具体的协议有多种,如 RIP 和 OSPF 等。
- 外部网关协议 EGP :目前使用的协议就是 BGP。
- 自治系统之间的路由选择也叫做域间路由选择 ,在自治系统内部的路由选择叫做域内路由选择。
- 内部网关协议 RIP
- 工作原理:路由信息协议 RIP是内部网关协议 IGP 中最先得到广泛使用的协议
- RIP 是一种分布式的、基于距离向量的路由选择协议。
- RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
- “距离”的定义:
- 从一个路由器到直接连接的网络的距离定义为 1。
- 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。
- RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1。
- 这里的“距离”实际上指的是“最短距离”。
- RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。
- RIP 允许一条路径最多只能包含 15 个路由器。
- ==“距离”的最大值为 16 时即相当于不可达。==可见 RIP 只适用于小型互联网。
- ==RIP 不能在两个网络之间同时使用多条路由。==RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。
- RIP 协议的三个特点:
- (1) 仅和相邻路由器交换信息。
- (2) 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
- (3) 按固定的时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
路由表的建立
- 路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为 1)。它的路由表是空的。
- 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
- 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。
- RIP 协议的收敛 (convergence) 过程较快。“收敛”就是在自治系统中所有的结点都得到正确的路由选择信息的过程。
距离向量算法
路由器收到相邻路由器(其地址为 X)的一个 RIP 报文:
(1) 先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。
(2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤:
若项目中的目的网络不在路由表中,则把该项目加到路由表中。
否则
若下一跳字段给出的路由器地址是同样的,则把收到的项目替换原路由表中的项目。
否则
若收到项目中的距离小于路由表中的距离,则进行更新,
否则,什么也不做。
(3) 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为 16(表示不可达)。
(4) 返回。
路由器之间交换信息与路由表更新
- RIP 协议让互联网中的所有路由器都和自己的相邻路由器不断交换路由信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的(即跳数最少)。
- 虽然所有的路由器最终都拥有了整个自治系统的全局路由信息,但由于每一个路由器的位置不同,它们的路由表当然也应当是不同的。
RIP2 报文
-
RIP2 报文由首部和路由部分组成。
-
RIP2 报文中的路由部分由若干个路由信息组成。每个路由信息需要用 20 个字节。地址族标识符(又称为地址类别)字段用来标志所使用的地址协议。
-
一个 RIP 报文最多可包括 25 个路由,因而 RIP 报文的最大长度是 4 × 20 × 25 = 504 4 × 20 × 25 = 504 4×20×25=504字节。如超过,必须再用一个 RIP 报文来传送。
-
RIP2 具有简单的鉴别功能。
- 若使用鉴别功能,则将原来写入第一个路由信息(20 个字节)的位置用作鉴别。
- 在鉴别数据之后才写入路由信息,但这时最多只能再放入 24 个路由信息。
-
RIP 协议特点:好消息传播得快,坏消息传播得慢。
-
RIP 存在的一个问题:当网络出现故障时,要经过比较长的时间 (例如数分钟) 才能将此信息传送到所有的路由器。
-
RIP 协议的优缺点:
- 优点:实现简单,开销较小.
- 缺点:
- RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
- 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
- “坏消息传播得慢”,使更新过程的收敛时间过长。
- 内部网关协议 OSPF
- 开放最短路径优先 OSPF
OSPF 协议的基本特点
- “开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。
- “最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法 SPF
- 采用分布式的链路状态协议 (link state protocol)。
- 注意:OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。
三个要点:
- 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。
- 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
- “链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)。
- 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
链路状态数据库
- 由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。
- 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。
- OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。
- OSPF 的更新过程收敛得快是其重要优点。
OSPF 的区域
- 为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫做区域。
- 每一个区域都有一个 32 位的区域标识符(用点分十进制表示)。
- 区域也不能太大,在一个区域内的路由器最好不超过 200 个。
划分区域
- 划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。
- 在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。
- OSPF 使用层次结构的区域划分。在上层的区域叫做主干区域。
- 主干区域的标识符规定为0.0.0.0。主干区域的作用是用来连通其他在下层的区域。
OSPF 直接用 IP 数据报传送
- OSPF 不用 UDP 而是直接用 IP 数据报传送。
- OSPF 构成的数据报很短。这样做可减少路由信息的通信量。
- 数据报很短的另一好处是可以不必将长的数据报分片传送。
- 但分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。
OSPF的其他特点
- OSPF 对不同的链路可根据 IP 分组的不同服务类型 TOS 而设置成不同的代价。因此,OSPF 对于不同类型的业务可计算出不同的路由。
- 如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这叫做多路径间的负载平衡。
- 所有在 OSPF 路由器之间交换的分组都具有鉴别的功能。
- 支持可变长度的子网划分和无分类编址 CIDR。
- 每一个链路状态都带上一个 32 位的序号,序号越大状态就越新。
OSPF的五种分组类型
- 类型1,问候 (Hello) 分组。
- 类型2,数据库描述 (Database Description) 分组。
- 类型3,链路状态请求 (Link State Request) 分组。
- 类型4,链路状态更新 (Link State Update) 分组,用洪泛法对全网更新链路状态。
- 类型5,链路状态确认 (Link State Acknowledgment) ,分组。
6.IPv6
- IP 是互联网的核心协议。
- 解决 IP 地址耗尽的根本措施就是采用具有更大地址空间的新版本的 IP,即 IPv6。
IPv6 的基本首部
- IPv6 仍支持无连接的传送,但将协议数据单元 PDU 称为分组。为方便起见,本书仍采用数据报这一名词。
- 所引进的主要变化如下:
- 更大的地址空间。IPv6 将地址从 IPv4 的 32 位 增大到了 128 位。
- 扩展的地址层次结构。
- 灵活的首部格式。 IPv6 定义了许多可选的扩展首部。
- 改进的选项。 IPv6 允许数据报包含有选项的控制信息,其选项放在有效载荷中。
- IPv6 首部改为 8 字节对齐。首部长度必须是 8 字节的整数倍。原来的 IPv4 首部是 4 字节对齐。
- IPv6 数据报由两大部分组成:
- 基本首部 (base header)
- 有效载荷 (payload)。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部 (extension header),再后面是数据部分。
IPv6 数据报的基本首部
-
IPv6 将首部长度变为固定的 40 字节,称为基本首部。
-
把首部中不必要的功能取消了,使得 IPv6 首部的字段数减少到只有 8 个。
-
IPv6 对首部中的某些字段进行了如下的更改:
- 取消了首部长度字段,因为首部长度是固定的 40 字节;
- 取消了服务类型字段;
- 取消了总长度字段,改用有效载荷长度字段;
- 把 TTL 字段改称为跳数限制字段;
- 取消了协议字段,改用下一个首部字段;
- 取消了检验和字段;
- 取消了选项字段,而用扩展首部来实现选项功能。
-
版本(version)—— 4 位。它指明了协议的版本,对 IPv6 该字段总是 6。
-
通信量类(traffic class)—— 8 位。这是为了区分不同的 IPv6 数据报的类别或优先级。目前正在进行不同的通信量类性能的实验。
-
流标号(flow label)—— 20 位。 “流”是互联网络上从特定源点到特定终点的一系列数据报, “流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有同样的流标号。
-
有效载荷长度(payload length)—— 16 位。它指明 IPv6 数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内),其最大值是 64 KB。
-
下一个首部(next header)—— 8 位。它相当于 IPv4 的协议字段或可选字段。
-
跳数限制(hop limit)—— 8 位。源站在数据报发出时即设定跳数限制。路由器在转发数据报时将跳数限制字段中的值减 1。当跳数限制的值为零时,就要将此数据报丢弃。
-
源地址—— 128 位。是数据报的发送站的 IP 地址。
-
目的地址—— 128 位。是数据报的接收站的 IP 地址。
IPv6 的扩展首部
-
IPv6 把原来 IPv4 首部中选项的功能都放在扩展首部中,并将扩展首部留给路径两端的源站和目的站的主机来处理。
-
数据报途中经过的路由器都不处理这些扩展首部(只有一个首部例外,即逐跳选项扩展首部)。
-
这样就大大提高了路由器的处理效率。
-
六种扩展首部:在 RFC 2460 中定义了六种扩展首部:
- 逐跳选项
- 路由选择
- 分片
- 鉴别
- 封装安全有效载荷
- 目的站选项
IPv6 的地址
- IPv6数据报的目的地址可以是以下三种基本类型地址之一:
- 单播:传统的点对点通信。
- 多播:一点对多点的通信。
- 任播 :这是 IPv6 增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个。
结点与接口
- IPv6 将实现 IPv6 的主机和路由器均称为结点。
- 一个结点就可能有多个与链路相连的接口。
- IPv6 地址是分配给结点上面的接口的。
- 一个接口可以有多个单播地址。
- 其中的任何一个地址都可以当作到达该结点的目的地址。即一个结点接口的单播地址可用来唯一地标志该结点。
冒号十六进制记法
- 在 IPv6 中,每个地址占 128 位,地址空间大于 3.4 × 1 0 38 3.4×10^{38} 3.4×1038 。
- 为了使地址再稍简洁些,IPv6 使用==冒号十六进制记法(==colon hexadecimal notation, 简写为 colon hex)。
- 每个 16 位的值用十六进制值表示,各值之间用冒号分隔。例如: 68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
- 在十六进制记法中,允许把数字前面的 0 省略。例如把 0000 中的前三个 0 省略,写成 1 个 0。
零压缩
- 冒号十六进制记法可以允许零压缩 (zero compression),即一连串连续的零可以为一对冒号所取代。
- FF05:0:0:0:0:0:0:B3 可压缩为:FF05::B3
- 注意:在任一地址中只能使用一次零压缩。
点分十进制记法的后缀
- 冒号十六进制记法可结合使用点分十进制记法的后缀,这种结合在 IPv4 向 IPv6 的转换阶段特别有用。
- 例如: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 (零压缩)
从 IPv4 向 IPv6 过渡
-
向 IPv6 过渡只能采用逐步演进的办法,同时,还必须使新安装的 IPv6 系统能够向后兼容:IPv6 系统必须能够接收和转发 IPv4 分组,并且能够为 IPv4 分组选择路由。
-
两种向 IPv6 过渡的策略:使用双协议栈、使用隧道技术
-
双协议栈:
- 双协议栈 (dual stack) 是指在完全过渡到 IPv6 之前,使一部分主机(或路由器)装有两个协议栈,一个 IPv4 和一个 IPv6。
- 双协议栈的主机(或路由器)记为 IPv6/IPv4,表明它同时具有两种 IP 地址:一个 IPv6 地址和一个 IPv4 地址。
- 双协议栈主机在和 IPv6 主机通信时是采用 IPv6 地址,而和 IPv4 主机通信时就采用 IPv4 地址。
- 根据 DNS 返回的地址类型可以确定使用 IPv4 地址还是 IPv6 地址。
-
隧道技术:
- 在 IPv6 数据报要进入 IPv4 网络时,把 IPv6 数据报封装成为 IPv4 数据报,整个的 IPv6 数据报变成了 IPv4 数据报的数据部分。
- 当 IPv4 数据报离开 IPv4 网络中的隧道时,再把数据部分(即原来的 IPv6 数据报)交给主机的 IPv6 协议栈。
7.虚拟专用网VPN和网络地址转换NAT
- 虚拟专用网 VPN
- 由于 IP 地址的紧缺,一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数。
- 考虑到互联网并不很安全,一个机构内也并不需要把所有的主机接入到外部的互联网。
- 假定在一个机构内部的计算机通信也是采用 TCP/IP 协议,那么从原则上讲,对于这些仅在机构内部使用的计算机就可以由本机构自行分配其 IP 地址。
-
本地地址与全球地址:
- 本地地址——仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向互联网的管理机构申请。
- 全球地址——全球唯一的 IP 地址,必须向互联网的管理机构申请。
- 问题:在内部使用的本地地址就有可能和互联网中某个 IP 地址重合,这样就会出现地址的二义性问题。
- 解决:RFC 1918 指明了一些专用地址 (private address)。专用地址只能用作本地地址而不能用作全球地址。在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。
-
RFC 1918 指明的专用 IP 地址
-
三个专用IP地址块:
-
(1) 10.0.0.0 到 10.255.255.255
A类,或记为10.0.0.0/8,它又称为 24 位块
-
(2)172.16.0.0 到 172.31.255.255
B类,或记为172.16.0.0/12,它又称为 20 位块
-
(3) 192.168.0.0 到 192.168.255.255
C类,或记为192.168.0.0/16,它又称为 16 位块
-
-
专用网
- 采用这样的专用 IP 地址的互连网络称为专用互联网或本地互联网,或更简单些,就叫做专用网。
- 因为这些专用地址仅在本机构内部使用。专用IP地址也叫做可重用地址 (reusable address)。
- 利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN (Virtual Private Network)。
- “专用网”是因为这种网络是为本机构的主机用于机构内部的通信,而不是用于和网络外非本机构的主机通信。
- “虚拟”表示“好像是”,但实际上并不是,因为现在并没有真正使用通信专线,而VPN只是在效果上和真正的专用网一样。
- 如果专用网不同网点之间的通信必须经过公用的互联网,但又有保密的要求,那么所有通过互联网传送的数据都必须加密。
- 一个机构要构建自己的 VPN 就必须为它的每一个场所购买专门的硬件和软件,并进行配置,使每一个场所的 VPN 系统都知道其他场所的地址。
内联网和外联网
- 它们都是基于 TCP/IP 协议的。
- 由部门 A 和 B 的内部网络所构成的虚拟专用网 VPN 又称为内联网 (intranet),表示部门 A 和 B 都是在同一个机构的内部。
- 一个机构和某些外部机构共同建立的虚拟专用网 VPN 又称为外联网 (extranet)。
远程接入VPN
- 远程接入 VPN (remote access VPN)可以满足外部流动员工访问公司网络的需求。
- 在外地工作的员工拨号接入互联网,而驻留在员工 PC 机中的 VPN 软件可在员工的 PC 机和公司的主机之间建立 VPN 隧道,因而外地员工与公司通信的内容是保密的,员工们感到好像就是使用公司内部的本地网络。
- 网络地址转换 NAT
- 问题:在专用网上使用专用地址的主机如何与互联网上的主机通信(并不需要加密)?
- 解决:
- (1) 再申请一些全球 IP 地址。但这在很多情况下是不容易做到的。
- (2)采用网络地址转换 NAT。这是目前使用得最多的方法。
- 网络地址转换 NAT (Network Address Translation) 方法于1994年提出。
- 需要在专用网连接到互联网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫做 NAT路由器,它至少有一个有效的外部全球IP地址。
- 所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址,才能和互联网连接。
网络地址转换的过程
-
内部主机 A 用本地地址 I P A IP_A IPA 和互联网上主机 B 通信所发送的数据报必须经过 NAT 路由器。
-
NAT 路由器将数据报的源地址 I P A 转 换 成 全 球 地 址 I P G IP_A转换成全球地址 IP_G IPA转换成全球地址IPG,并把转换结果记录到NAT地址转换表中,目的地址 I P B IP_B IPB 保持不变,然后发送到互联网。
-
NAT 路由器收到主机 B 发回的数据报时,知道数据报中的源地址是 I P B IP_B IPB 而目的地址是 I P G IP_G IPG。
-
根据 NAT 转换表,NAT 路由器将目的地址 I P G IP_G IPG转换为 I P A IP_A IPA,转发给最终的内部主机 A。
-
可以看出,在内部主机与外部主机通信时,在NAT路由器上发生了两次地址转换:
- 离开专用网时:替换源地址,将内部地址替换为全球地址;
- 进入专用网时:替换目的地址,将全球地址替换为内部地址;
网络地址转换 NAT
- 当 NAT 路由器具有 n 个全球 IP 地址时,专用网内最多可以同时有 n 台主机接入到互联网。这样就可以使专用网内较多数量的主机,轮流使用 NAT 路由器有限数量的全球 IP 地址。
- 通过 NAT 路由器的通信必须由专用网内的主机发起。专用网内部的主机不能充当服务器用,因为互联网上的客户无法请求专用网内的服务器提供服务。
网络地址与端口号转换 NAPT
-
为了更加有效地利用 NAT 路由器上的全球IP地址,现在常用的 NAT 转换表把运输层的端口号也利用上。这样,就可以使多个拥有本地地址的主机,共用一个 NAT 路由器上的全球 IP 地址,因而可以同时和互联网上的不同主机进行通信。
-
使用端口号的 NAT 叫做网络地址与端口号转换NAPT (Network Address and Port Translation),而不使用端口号的 NAT 就叫做传统的 NAT 。
-
NAPT把专用网内不同的源 IP 地址,都转换为同样的全球 IP 地址。