第4章 网络层
4.1 网络层提供的两种服务
- 网络层向上只提供无连接的、尽最大努力交付的数据报(IP数据包or分组)服务。
- 每一个分组独立发送,与其前后的分组无关(不进行编号)。
- 如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责可靠交付(包括差错处理、流量控制等)。
-
网路层的功能:
-
寻址:识别网络中的各个通讯实体;
-
交换方式:分组通过中间节点所采用的方式,为传输层提供什么样的服务;
-
路由选择:自动了解网络的拓扑结构,选择适当的路由选择算法;
-
拥塞问题:仔细选择下一个路由器,避免某些通信线路和路由器负载过重,而其他线路和路由器空闲。
-
网络互连:隐藏所有底层网络细节的不同,实现异构网络中任意两台计算机之间的通信。
-
4.2 网际协议IP
网际层的IP协议及配套协议 :
image.png4.2.1 虚拟互联网络
-
将网络互相连接起来要使用一些中间设备:
- 物理层中继系统:转发器
- 数据链路层中继系统:网桥 或 桥接器
- 网络层中继系统:路由器
- 网络层以上的中继系统:网关 (使用比较少)。
网桥和路由器的混合物:桥路器 (brouter)。
-
网络互连都是指用路由器(网关)进行网络互连和路由选择。
-
由于参加互联的计算机网络都使用相同的网际协议IP,因此可以把互联以后的计算机网络看成一个虚拟互联网络。
image.png -
如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网 (Internet)。
4.2.2 分类的IP地址
-
IP地址及其表示方法:
- IP 地址就是给每个连接在互联网上的主机(或路由器)分配一个在全世界范围是唯一的 32 位的标识符
- IP 地址现在由互联网名字和数字分配机构ICANN进行分配。
-
IP 地址的编址方法:
- 最基本的编址方法:分类的 IP 地址
- 改进:子网的划分
- 无分类编址方法:构成超网
-
分类 IP 地址 :
-
每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)。
- 这种两级的 IP 地址可以记为: image.png
- 各类 IP 地址的网络号字段和主机号字段: image.png
-
点分十进制记法:每 8 位为一组
-
-
常用的三种类别的 IP 地址
- IP 地址的指派范围 image.png
- 一般不使用的特殊的 IP 地址 image.png
-
采用分级IP地址的好处 :
- IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理
- 路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
-
多归属主机与路由器IP
- 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多归属主机(multihomed host)。
- 由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址(硬件地址)。
4.2.3 IP地址与硬件地址
image.png- 物理地址(MAC地址)是数据链路层和物理层使用的地址
- IP地址是网络层和以上各层使用的地址,是一种逻辑地址
4.2.4 地址解析协议ARP
- ARP 作用:从网络层使用的 IP 地址,解析出在数据链路层使用的硬件地址。
- 要点:
-
不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址
- 每一个主机都设有一个 ARP 高速缓存 (ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。超过生存时间你的项目就从高速缓存中删除掉。 image.png
-
当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。
- 如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。
- 如没有, ARP 进程在本局域网上广播发送一个 ARP 请求分组。收到 ARP 响应分组后,将得到的 IP 地址到硬件地址的映射写入 ARP 高速缓存。
-
如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
-
- 使用 ARP 的四种典型情况
- 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
- 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。
4.2.5 IP数据报的格式
-
一个 IP 数据报由首部和数据两部分组成。
-
首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
image.png -
IP 数据报首部的固定部分中的各字段
-
版本——占 4 位,指 IP 协议的版本。目前的 IP 协议版本号为 4 (即 IPv4)。
-
首部长度——占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的最大值是 60 字节。
-
区分服务——占 8 位,用来获得更好的服务。一般情况下不使用
-
总长度——占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU。
-
标识——占 16 位,它是一个计数器,用来产生 IP 数据报的标识。
-
标志——占 3 位。
- 最低位是 MF ,MF =1 表示后面“还有分片”,MF = 0 表示最后一个分片。
- 中间的一位是 DF,只有当 DF = 0 时才允许分片。
-
片偏移——占13 位,指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。
-
生存时间——占8 位,记为 TTL ,指示数据报在网络中可通过的路由器数的最大值。
- 协议——占8 位,指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给那个处理过程 image.png
- 首部检验和——占16 位,只检验数据报的首部,不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。 image.png
-
反码求和运算:若最高位相加后产生进位,则最后得到的结果要加1。
- IP 数据报首部的可变部分 :用来支持排错、测量以及安全等措施。
4.2.6 IP层转发分组的流程
- 在路由表中,对每一条路由,最主要的是
(目的网络地址,下一跳地址) - 虽然互联网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许有这样的特例,即为特定的目的主机指明一个路由。
- 路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。
- 当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件。网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器。
-
路由器分组转发算法 :
- 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
- 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行 3。
- 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行 4。
- 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行 5。
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行 6。
- 报告转发分组出错。
4.3 划分子网和构造超网
4.3.1 划分子网
1、从两级 IP 地址到三级 IP 地址
- 在 ARPANET 的早期,IP 地址的设计确实不够合理:
- IP 地址空间的利用率有时很低。
- 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
- 两级的 IP 地址不够灵活。
- 从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址。这种做法叫做划分子网
- 划分子网的基本思路
-
划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
- 从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。 image.png
-
凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的**目的网络号 **net-id,先找到连接在本单位网络上的路由器。
-
然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。
-
最后就将 IP 数据报直接交付目的主机。
-
- 优点:
- 减少了 IP 地址的浪费
- 使网络的组织更加灵活
- 更便于维护和管理
2、子网掩码
-
从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。
-
使用子网掩码 (subnet mask) 可以找出 IP 地址中的子网部分。
-
规则:
- 子网掩码长度 = 32 位
- 某位 = 1:IP地址中的对应位为网络号和子网号
- 某位 = 0:IP地址中的对应位为主机号
-
(IP 地址) AND (子网掩码) =网络地址
-
如果一个网络不划分子网,那么该网络的子网掩码就使用默认子网掩码
image.png -
若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码。
-
子网划分方法
- 有固定长度子网和变长子网两种子网划分方法。
- 在采用固定长度子网时,所划分的所有子网的子网掩码都是相同的。
- 划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。
4.3.2 使用子网时分组的转发
(1) 从收到的分组的首部提取目的 IP 地址 D。
(2) 先判断是否为直接交付,对路由器直接相连的网络逐个检查:用各网络的子网掩码和 D 逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行 (3)。
(3) 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行 (4)。
(4) 对路由表中的每一行,将子网掩码和 D 逐位相“与”。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行 (5)。
(5) 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行 (6)。
(6) 报告转发分组出错。
4.3.3 无分类编址CIDR(构造超网)
1、网络前缀
- 划分子网在一定程度上缓解了互联网在发展中遇到的困难。然而在 1992 年互联网仍然面临三个必须尽早解决的问题:
- B 类地址在 1992 年已分配了近一半,眼看就要在 1994 年 3 月全部分配完毕!
- 互联网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个)
- 整个 IPv4 的地址空间最终将全部耗尽。
- CIDR 最主要的特点
- CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。
- CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。
- IP 地址从三级编址(使用子网掩码)又回到了两级编址。
- 无分类的两级编址 :
- image.png
-
CIDR 使用“斜线记法”(slash notation),它又称为 CIDR 记法,即在 IP 地址面加上一个斜线“/”,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。例如: 220.78.168.0/24
- CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”
- 一个 CIDR 地址块可以表示很多地址,所以在路由表中就利用CIDR地址来查找目的网络。这种地址的聚合常称为路由聚合,也称为构成超网
- CIDR 地址块中的地址数一定是 2 的整数次幂
- 好处: 可以更加有效地分配 IPv4 的地址空间,可根据客户的需要分配适当大小的 CIDR 地址块。
2、最长前缀匹配
从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配
3、使用二叉线索查找路由表
- 为了进行更加有效的查找,通常是将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉线索 (binary trie)。
- IP 地址中从左到右的比特值决定了从根结点逐层向下层延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址。
- 为了提高二叉线索的查找速度,广泛使用了各种压缩技术。
4.4 网际控制报文协议ICMP
- 为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。
- ICMP 是互联网的标准协议。
- ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
-
但 ICMP 不是高层协议(看起来好像是高层协议,因为 ICMP 报文是装在 IP 数据报中,作为其中的数据部分),而是 IP 层的协议。
image.png
4.4.1 ICMP报文的种类
-
ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
-
差错报告报文:
- 终点不可达:当路由器或主机不能交付数据报时,就向源点发送终点不可达报文
- 改变路由(重定向)
- 超时
- 参数问题
- ICMP 差错报告报文的数据字段的内容 image.png
-
不应发送 ICMP 差错报告报文的几种情况
- 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
- 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
- 对具有多播地址的数据报都不发送 ICMP 差错报告报文。
- 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。
-
ICMP 询问报文:
- 回送请求和回送回答
- 时间戳请求和时间戳回答
4.4.2 ICMP的应用举例
- PING :
- PING 用来测试两个主机之间的连通性。
- PING 使用了 ICMP 回送请求与回送回答报文。
- PING 是应用层直接使用网络层 ICMP 的例子。
- Traceroute(Unix)
- 在 Windows 操作系统中这个命令是 tracert。
- 用来跟踪一个分组从源点到终点的路径。
- 它利用 IP 数据报中的 TTL 字段和 ICMP超时差错报告报文实现对从源点到终点的路径的跟踪。
4.5 互联网的路由选择协议
4.5.1 基本概念
1、理想的路由算法
-
算法必须是正确的和完整的。
-
算法在计算上应简单。
-
算法应能适应通信量和网络拓扑的变化,这就是说,要有自适应性。
- 静态路由选择策略——即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。
- 动态路由选择策略——即自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大
-
算法应具有稳定性。
-
算法应是公平的。
-
算法应是最佳的。
2、分层次的路由选择协议
- 互联网采用分层次的路由选择协议。这是因为:
- 互联网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。而所有这些路由器之间交换路由信息所需的带宽就会使互联网的通信链路饱和。
- 许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到互联网上。
- 自治系统 AS:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。
- 互联网有两大类路由选择协议
- 内部网关协议 IGP ,如 RIP 和 OSPF 协议。
- 外部网关协议 EGP,如 BGP-4
- 自治系统之间的路由选择也叫做域间路由选择,在自治系统内部的路由选择叫做域内路由选择 。
4.5.2 内部网关协议RIP
1、工作原理
-
RIP 是一种分布式的、基于距离向量的路由选择协议
-
RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录
-
“距离”的定义 (也称为“跳数”)
-
从一个路由器到直接连接的网络的距离定义为 1。
-
从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。
-
这里的“距离”实际上指的是“最短距离”。RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。
-
RIP 允许一条路径最多只能包含 15 个路由器。距离”的最大值为 16 时即相当于不可达。可见 RIP 只适用于小型互联网。
-
RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。
-
-
RIP 协议的三个特点
- 仅和相邻路由器交换信息。
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
- 按固定的时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
-
路由表的建立
- 路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为 1)。它的路由表是空的。
- 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
- 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。
- RIP 协议的收敛 (convergence) 过程较快。“收敛”就是在自治系统中所有的结点都得到正确的路由选择信息的过程。
2、距离向量算法
3、RIP2协议的报文格式
image.png- RIP2 报文
- RIP2 报文由首部和路由部分组成
- RIP2 报文中的路由部分由若干个路由信息组成。每个路由信息需要用 20 个字节。地址族标识符(又称为地址类别)字段用来标志所使用的地址协议。
- 路由标记填入自治系统的号码,这是考虑使 RIP 有可能收到本自治系统以外的路由选择信息。
- 再后面指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离。
- 一个 RIP 报文最多可包括 25 个路由,因而 RIP 报文的最大长度是 4+20*25=504 字节。如超过,必须再用一个 RIP 报文来传送。
- RIP2 具有简单的鉴别功能:
- 若使用鉴别功能,则将原来写入第一个路由信息(20 个字节)的位置用作鉴别。
- 在鉴别数据之后才写入路由信息,但这时最多只能再放入 24 个路由信息。
- RIP 协议特点:好消息传播得快,坏消息传播得慢。
- RIP 协议的优缺点 :
- 优点:实现简单,开销较小
- 缺点:
- RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
- 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加
- “坏消息传播得慢”,使更新过程的收敛时间过长。
4.5.3 内部网关协议OSPF
1、OSPF协议的基本特点
- “开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。
- “最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法 SPF
- 采用分布式的链路状态协议
- 三个要点 :
- 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。
- 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
“链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)。 - 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
- 链路状态数据库
- 由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。
- 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。
- OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。
- OSPF 的更新过程收敛得快是其重要优点。
- OSPF 的区域
- 为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫做区域。
- 每一个区域都有一个 32 位的区域标识符(用点分十进制表示)
- 区域也不能太大,在一个区域内的路由器最好不超过 200 个。
- 划分区域
- 划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。
- OSPF 使用层次结构的区域划分。在上层的区域叫做主干区域 (标识符规定为0.0.0.0)。主干区域的作用是用来连通其他在下层的区域
- OSPF 直接用 IP 数据报传送
- OSPF 构成的数据报很短。这样做可减少路由信息的通信量。
- 数据报很短的另一好处是可以不必将长的数据报分片传送。
- 分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。
- OSPF 的其他特点 :
- OSPF允许管理员给每条路指派不同的代价。OSPF 对于不同类型的业务可计算出不同的路由。
- 如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这叫做多路径间的负载平衡。
- 所有在 OSPF 路由器之间交换的分组都具有鉴别的功能。
- 支持可变长度的子网划分和无分类编址 CIDR。
- 每一个链路状态都带上一个 32 位的序号,序号越大状态就越新。
- OSPF分组 image.png
2、OSPF的五种分组类型
- 类型1,问候 (Hello) 分组。
- 类型2,数据库描述分组。
- 类型3,链路状态请求分组。
- 类型4,链路状态更新分组,用洪泛法对全网更新链路状态。
- 类型5,链路状态确认分组,对链路更新分组的确认
OSPF 的其他特点:
- OSPF 还规定每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。
- 由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。
- OSPF 没有“坏消息传播得慢”的问题,据统计,其响应网络变化的时间小于 100 ms。
4.5.4 外部网关协议BGP
- BGP 是不同自治系统的路由器之间交换路由信息的协议。
- BGP 使用环境不同的原因:
- 互联网的规模太大,使得自治系统之间路由选择非常困难。
- 自治系统之间的路由选择必须考虑有关策略。
- 因此,边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。
- BGP 发言人:
- 每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人”
- 一般说来,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往就是 BGP 边界路由器。
- BGP 交换路由信息:
- 一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息。
- 使用 TCP 连接交换路由信息的两个 BGP 发言人,彼此成为对方的邻站(neighbor)或对等站(peer)
- BGP 所交换的网络可达性的信息就是要到达某个网络所要经过的一系列 AS。
- 当 BGP 发言人互相交换了网络可达性的信息后,各 BGP 发言人就根据所采用的策略从收到的路由信息中找出到达各 AS 的较好路由。
- BGP 协议的特点
- BGP 协议交换路由信息的结点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多
- 每一个自治系统中 BGP 发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂。
- BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
- 在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。
- BGP-4 共使用四种报文 :
- 打开 (OPEN) 报文,用来与相邻的另一个BGP发言人建立关系。
- 更新 (UPDATE) 报文,用来发送某一路由的信息,以及列出要撤消的多条路由。
- 保活 (KEEPALIVE) 报文,用来确认打开报文和周期性地证实邻站关系。
- 通知 (NOTIFICATION) 报文,用来发送检测到的差错
- BGP 报文具有通用首部 image.png
4.6 IPV6
- IPv4 的 32 位地址已经耗尽。
- 解决 IP 地址耗尽的根本措施就是采用具有更大地址空间的新版本的 IP,即 IPv6。
4.6.1 IPv6的基本首部
-
IPv6 仍支持无连接的传送,但将协议数据单元 PDU 称为分组。为方便起见,本书仍采用数据报这一名词。
-
主要变化:
- 更大的地址空间。IPv6 将地址从 IPv4 的 32 位 增大到了 128 位。
- 扩展的地址层次结构
- 灵活的首部格式。 IPv6 定义了许多可选的扩展首部
- 改进的选项。 IPv6 允许数据报包含有选项的控制信息,其选项放在有效载荷中。
- 允许协议继续扩充。
- 支持即插即用(即自动配置)。因此 IPv6 不需要使用 DHCP。
- 支持资源的预分配。 IPv6 支持实时视像等要求,保证一定的带宽和时延的应用。
- IPv6 首部改为 8 字节对齐。首部长度必须是 8 字节的整数倍。原来的 IPv4 首部是 4 字节对齐。
-
IPv6 数据报由两大部分组成:
- 基本首部:固定的 40 字节
- 有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部 (extension header),再后面是数据部分。
-
image.png
- 版本—— 4 位。它指明了协议的版本,对 IPv6 该字段总是 6。
- 通信量类—— 8 位。这是为了区分不同的 IPv6 数据报的类别或优先级。目前正在进行不同的通信量类性能的实验。
- 流标号(flow label)—— 20 位。 “流”是互联网络上从特定源点到特定终点的一系列数据报, “流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有同样的流标号。
- 有效载荷长度(payload length)—— 16 位。其最大值是 64 KB。
- 下一个首部(next header)—— 8 位。它相当于 IPv4 的协议字段或可选字段。
- 跳数限制(hop limit)—— 8 位。源站在数据报发出时即设定跳数限制。路由器在转发数据报时将跳数限制字段中的值减 1。
当跳数限制的值为零时,就要将此数据报丢弃。
-
所有扩展首部的第一个字段都是8位的“下一个首部”字段。此字段的值指出了在该扩展首部后面的字段是什么。
4.6.2 IPv6的地址
- IPv6 数据报的目的地址可以是以下三种基本类型地址之一:
- 单播 (unicast):传统的点对点通信
- 多播 (multicast):一点对多点的通信
- 任播 (anycast):这是 IPv6 增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个
- IPv6 使用冒号十六进制记法:
- 每个 16 位的值用十六进制值表示,各值之间用冒号分隔。允许把数字前面的 0 省略。
- 零压缩:一连串连续的零可以为一对冒号所取代。在任一地址中只能使用一次零压缩
- 点分十进制记法的后缀
- CIDR 的斜线表示法仍然可用。/
- image.png
4.6.3 从IPv4向IPv6过渡
- 向 IPv6 过渡只能采用逐步演进的办法,同时,还必须使新安装的 IPv6 系统能够向后兼容。
- 两种向 IPv6 过渡的策略:
-
使用双协议栈:装有两个协议栈,一个 IPv4 和一个 IPv6。
-
使用隧道技术:在 IPv6 数据报要进入 IPv4 网络时,把 IPv6 数据报封装成为 IPv4 数据报
-
4.6.4 ICMPv6
- 地址解析协议 ARP 和网际组管理协议 IGMP 协议的功能都已被合并到 ICMPv6 中。
- ICMPv6 是面向报文的协议,它利用报文来报告差错,获取信息,探测邻站或管理多播通信。
4.7 IP多播
4.7.1 IP多播的基本概念
- 在互联网上进行多播就叫做 IP 多播。
- 互联网范围的多播要靠路由器来实现。能够运行多播协议的路由器称为多播路由器
- 多播 IP 地址:
- IP 多播所传送的分组需要使用多播 IP 地址。
- 在多播数据报的目的地址写入的是多播组的标识符。
- 多播组的标识符就是 IP 地址中的 D 类地址(多播地址)。每一个 D 类地址标志一个多播组。
- 多播地址只能用于目的地址,不能用于源地址。
- 首部中的协议字段值是 2,表明使用网际组管理协议 IGMP
- 对多播数据报不产生 ICMP 差错报文。因此,若在 PING 命令后面键入多播地址,将永远不会收到响应
- 由于多播 IP 地址与以太网硬件地址的映射关系不是唯一的,因此收到多播数据报的主机,还要在 IP 层利用软件进行过滤,把不是本主机要接收的数据报丢弃。
4.7.3 网际组管理协议IGMP和多播路由选择协议
1、IP 多播需要两种协议
- 为了使路由器知道多播组成员的信息,需要利用网际组管理协议 IGMP
- 连接在局域网上的多播路由器还必须和互联网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议。
- IGMP 的使用范围 :IGMP 协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组。
2、网际组管理协议 IGMP
-
第一阶段:加入多播组
- 当某个主机加入新的多播组时,该主机应向多播组的多播地址发送 IGMP 报文,声明自己要成为该组的成员。
- 本地的多播路由器收到 IGMP 报文后,将组成员关系转发给互联网上的其他多播路由器。
-
第二阶段:探询组成员变化情况。
- 因为组成员关系是动态的,因此本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。
- 只要对某个组有一个主机响应,那么多播路由器就认为这个组是活跃的。
- 但一个组在经过几次的探询后仍然没有一个主机响应,则不再将该组的成员关系转发给其他的多播路由器。
4.8 虚拟专用网VPN和网络地址转换NAT
4.8.1 虚拟专用网VPN
-
由于IP 地址的紧缺,一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数。
-
考虑到互联网并不很安全,一个机构内也并不需要把所有的主机接入到外部的互联网。
-
假定在一个机构内部的计算机通信也是采用 TCP/IP 协议,那么从原则上讲,对于这些仅在机构内部使用的计算机就可以由本机构自行分配其 IP 地址。
-
本地地址与全球地址:
- 本地地址——仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向互联网的管理机构申请。
- 全球地址——全球唯一的 IP 地址,必须向互联网的管理机构申请。
- 问题:在内部使用的本地地址就有可能和互联网中某个 IP 地址重合,这样就会出现地址的二义性问题
解决:RFC 1918 指明了一些专用地址。专用地址只能用作本地地址而不能用作全球地址。在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。
- RFC 1918 指明的专用 IP 地址(可重用地址) image.png
-
利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网
-
虚拟专用网 VPN 构建
- 如果专用网不同网点之间的通信必须经过公用的互联网,但又有保密的要求,那么所有通过互联网传送的数据都必须加密。
- 一个机构要构建自己的 VPN 就必须为它的每一个场所购买专门的硬件和软件,并进行配置,使每一个场所的 VPN 系统都知道其他场所的地址。
- 用隧道技术实现虚拟专用网
4.8.2 网络地址转换NAT
-
问题:在专用网上使用专用地址的主机如何与互联网上的主机通信(并不需要加密)?
- 再申请一些全球 IP 地址。但这在很多情况下是不容易做到的。
- 采用网络地址转换 NAT。这是目前使用得最多的方法
- 需要在专用网连接到互联网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。
- 网络地址转换的过程
- 内部主机 A 用本地地址 IPA 和互联网上主机 B 通信所发送的数据报必须经过 NAT 路由器。
- NAT 路由器将数据报的源地址 IPA 转换成全球地址 IPG,并把转换结果记录到NAT地址转换表中,目的地址 IPB 保持不变,然后发送到互联网。
- NAT 路由器收到主机 B 发回的数据报时,知道数据报中的源地址是 IPB 而目的地址是 IPG。
- 根据 NAT 转换表,NAT 路由器将目的地址 IPG 转换为 IPA,转发给最终的内部主机 A。
- 在内部主机与外部主机通信时,在NAT路由器上发生了两次地址转换
- 当 NAT 路由器具有 n 个全球 IP 地址时,专用网内最多可以同时有 n 台主机接入到互联网。这样就可以使专用网内较多数量的主机,轮流使用 NAT 路由器有限数量的全球 IP 地址。
- 通过 NAT 路由器的通信必须由专用网内的主机发起。专用网内部的主机不能充当服务器用,因为互联网上的客户无法请求专用网内的服务器提供服务。
- 网络地址与端口号转换 NAPT:
- 为了更加有效地利用 NAT 路由器上的全球IP地址,现在常用的 NAT 转换表把运输层的端口号也利用上。这样,就可以使多个拥有本地地址的主机,共用一个 NAT 路由器上的全球 IP 地址,因而可以同时和互联网上的不同主机进行通信。
- 使用端口号的 NAT 叫做网络地址与端口号转换NAPT,而不使用端口号的 NAT 就叫做传统的 NAT。
网友评论