解决IP地址耗尽的根本措施:采用具有更大地址空间的新版本的 IP,即 IPv6 [RFC 2460, 4862, 4443]。
IPv6 仍支持无连接的传送,但将协议数据单元 PDU 称为分组,而不是 IPv4 的数据报。
IPv6 所引进的主要变化:
IPv6 数据报由两大部分组成,即基本首部 (base header) 和后面的有效载荷 (payload)。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部 (extension header),再后面是数据部分。注意,所有的扩展首部不属于 IPv6 数据报的首部。
在 RFC 2460 中定义了六种扩展首部:逐跳选项;路由选择;分片;鉴别;封装安全有效载荷;目的站选项。
IPv6 把原来 IPv4 首部中选项的功能都放在扩展首部中,并把扩展首部留给路径两端的源点和终点的主机来处理,而数据报途中经过的路由器都不处理这些扩展首部 (逐跳选项扩展首部例外),这样就大大提高了路由器的处理效率。
一般来讲,一个 IPv6 数据报的目的地址可以是以下三种基本类型地址之一:
IPv6 把实现 IPv6 的主机和路由器均称为结点。IPv6 给结点的每一个接口指派一个 IP 地址。一个结点可以有多个单播地址,而其中任何一个地址都可以当作到达该结点的目的地址。
IPv6 使用冒号十六进制记法 (colon hexadecimal notation,简写为 colon hex) 表示地址,它把每个 16 位的值用十六进制值表示,各值之间用冒号分隔。
在十六进制记法中,允许把数字前面的 0 省略。
冒号十六进制记法还包含两个有用的技术:
CIDR 的斜线表示法仍然可用。例如,60 位的前缀 12AB00000000CD30 可记为:
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 位),可记为 ::/128 | 这个地址不能用作目的地址,只能为某台主机当作源地址使用,条件是这台主机还没有配置到一个标准的 IP 地址。 |
环回地址 | 00…1 (128 位),可记为 ::1/128 | 它的作用和 IPv4 的环回地址一样。 |
多播地址 | 11111111 (8 位),可记为 FF00::/128 | 功能和 IPv4 的一样。这类地址占 IPv6 地址总数的 1/256。 |
本地链路单播地址 | 1111111010 (10 位),可记为 FE80::/10 | 有些单位的网络使用 TCP/IP 协议,但并没有连接到互联网上。 连接在这样的网络上的主机都可以使用这种本地地址进行通信,但不能和互联网上的其他主机通信。 |
全球单播地址 | (除上述四种外,所有其他的二进制前缀) | IPv6 的这一类单播地址是使用得最多的一类。 |
IPv6 需要使用 ICMPv6 来反馈一些差错信息。地址解析协议 ARP 和网际组管理协议 IGMP 的功能都已被合并到 ICMPv6 中。
ICMPv6 是面向报文的协议,它利用报文来报告差错,获取信息,探测邻站或管理多播通信。
ICMPv6 报文的分类:
与单播相比,在一对多的通信中,多播可大大节约网络资源。
在互联网范围的多播要靠路由器来实现,这些路由器必须增加一些能够识别多播数据报的软件。能够运行多播协议的路由器称为多播路由器。多播路由器也可转发普通的单播 IP 数据报。
为了适应交互式音频和视频信息的多播,从 1992 年起,在互联网上开始试验虚拟的多播主干网 MBONE (Multicast Backbone On the InterNEt)。MBONE 可把分组传播给地点分散但属于一个组的许多台主机。
在互联网上进行多播较叫做 IP 多播。IP 多播所传送的分组需要使用多播 IP 地址。
如果某台主机现在想接收某个特定多播组的分组,那么怎样才能使这个多播数据报传送到这台主机?
多播数据报也是“尽最大努力交付”,不保证一定能够交付多播组内的所有成员。
多播数据报和一般的 IP 数据报的区别是它使用 D 类 IP 地址作为目的地址,并且首部中的协议字段值是 2,表明使用网际组管理协议 IGMP。
多播地址只能用于目的地址,不能用于源地址。
对多播数据报不产生 ICMP 差错报文。因此,若在 PING 命令后面键入多播地址,将永远不会收到响应。
IP 多播可以分为两种:
TCP/IP 协议使用的以太网单播地址块的范围是从 00-00-5E-00-00-00 到 00-00-5E-FF-FF-FF。
以太网硬件地址字段中的第 1 字节的最低位为 1 时即为多播地址。IANA 拥有的以太网多播地址的范围是从 01-00-5E-00-00-00 到 01-00-5E-7F-FF-FF。
在每一个地址中,只有 23 位可用作多播。这只能和 D 类 IP 地址中的 23 位有一一对应的关系。
由于多播 IP 地址与以太网硬件地址的映射关系不是唯一的,因此收到多播数据报的主机,还要在 IP 层利用软件进行过滤,把不是本主机要接收的数据报丢弃。
IP多播需要两种协议:
多播路由选择协议要比单播路由选择协议复杂得多。
在多播过程中一个多播组中的成员是动态变化的。多播路由选择实际上就是要找出以源主机为根节点的多播转发树。在多播转发树上,每一个多播路由器向树的叶节点方向转发收到的多播数据报,但在多播转发树上的路由器不会收到重复的多播数据报。
已有了多种实用的多播路由选择协议,它们在转发多播数据报时使用了以下三种方法:
下面是一些建议使用的多播路由选择协议。
4-43 IGMP 协议的要点是什么?隧道技术在多播中是怎样使用的?
IGMP 使用 IP 数据报传递其报文,但它也向 IP 提供服务。因此,不把 IGMP 看成是一个单独的协议,而是属于整个网际协议 IP 的一个组成部分。
从概念上讲,IGMP 的工作可分为两个阶段。
IGMP 设计得很仔细,避免了多播控制信息给网络增加大量的开销。IGMP 采用的一些具体措施:
多播数据报的发送者和接收者都不知道一个多播组的成员有多少,以及这些成员是哪些主机。
互联网中的路由器和主机都不知道哪个应用进程将要向哪个多播发送多播数据报,因为任何应用进程都可以在任何时候向任何一个多播组发送多播数据报,而这个应用进程不需要加入这个多播组。
4-44 什么是 VPN?VPN 有什么特点和优缺点?VPN 有几种类别?
假定在一个机构内部的计算机通信也是采用 TCP/IP 协议,那么从原则上讲,对于这些仅在机构内部使用的计算机就可以由本机构自行分配其 IP 地址。这就是说,让这些计算机使用仅在本机构有效的 IP 地址 (本地地址),而不需要向互联网的管理机构申请全球唯一的 IP 地址 (全球地址)。这样可以节约全球 IP 地址资源。
RFC 1918 指明了一些专用地址 (private address)。这些地址只能用于一个机构的内部通信,而不能用于和互联网上的主机通信。在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。RFC 6890 全面地给出了所有特殊用途的 IPv4 地址,但三个专用地址块的指派并无变化,即
(1) 10.0.0.0 到 10.255.255.255 (或记为 10.0.0.0/8,又称为 24 位块)
(2) 172.16.0.0 到 172.31.255.255 (或记为 172.16.0.0/12,又称为 20 位块)
(3) 192.168.0.0 到 192.168.255.255 (或记为 192.168.0.0/16,又称为 16 位块)
采用这样的专用 IP 地址的互连网络称为专用互联网或本地互联网,或更简单些,叫做专用网。专用 IP 地址也叫做可重用地址 (reusable address)。
有时一个很大的机构的许多部门分布的范围很广 (比如在世界各地),这些部门经常要互相交换信息。这可以有两种方法:(1) 租用电信公司的通信线路为本机构专用。线路租金太高。(2) 利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网 VPN (Virtual Private Network)。
如果专用网不同网点之间的通信必须经过公用的互联网,但又有保密的要求,那么所有通过互联网传送的数据都必须加密。
VPN 没有真正使用通信专线,只是在效果上和真正的专用网一样。一个机构要构建自己的 VPN 就必须为它的每一个场所购买专门的硬件和软件,并进行配置,使每一个场所的 VPN 系统都知道其他场所的地址。
R1 和 R2 这两个路由器和互联网的接口地址必须是合法的全球 IP 地址。R1 和 R2 在专用网内部网络的接口地址则是专用网的本地地址。
VPN 类别:
注意,内联网和外联网都采用了互联网技术,即都是基于 TCP/IP 协议的。
多协议标记交换 MPLS (MultiProtocol Label Switching) 利用面向连接技术,使每个分组携带一个叫做标记(label)的小整数 (这叫做打上标记)。当分组到达交换机 (即标记交换路由器) 时,交换机读取分组的标记,并用标记值来检索分组转发表。这样就比查找路由表来转发分组要快得多。
MPLS 没有取代 IP,而是作为一种 IP 增强技术,被广泛地应用在互联网中。
MPLS 具有以下三个方面的特点:
MPLS 有个很重要的概念是转发等价类 FEC (Forwarding Equivalence Class)。FEC 是路由器按照同样方式对待的 IP 数据报的集合。“按照同样方式对待”表示从同样接口转发到同样的下一跳地址,并且具有同样服务类别和同样丢弃优先级等。FEC 的例子是:
划分 FEC 的方法不受什么限制,这都由网络管理员来控制,非常灵活。入口结点并不是给每一个 IP 数据报指派一个不同的标记,而是将属于同一 EFC 的 IP 数据报都指派同样的标记。FEC 和标记是一一对应的关系。
在 MPLS 的情况下,入口结点 A 可设置两种 FEC:“源地址为 H1 而目的地址为 H3”和“源地址为 H2而目的地址为 H4”,把前一种 FEC 的路径设置为 H1->A->B->C->H3,后一种的路径设置为 H2->A->D->E->C->H4。这样可使网络的负载较为平衡。
网络管理员采用自定义的 FEC 就可以更好地管理网络的资源。这种均衡网络负载的做法也称为流量工程 TE (Traffic Engineering) 或通信量工程。
在把加上 MPLS 首部的 IP 数据报封装成以太网帧时,以太网的类型字段在单播的情况下设置为 884716,在多播的情况下为 884816。这样,接收方可以用帧的类型来判决这个帧是携带了 MPLS 标记还是一个常规的 IP 数据报。
“给 IP 数据报打上标记”其实是在以太网帧首部和 IP 数据报之间插入一个 4 字节的 MPLS 首部。具体的标记在“标记值”这个字段中。
4-45 什么是 NAT?NAPT 有哪些特点?NAT 的优点和缺点有哪些?
在专用网内部的一些主机本来已经分配到了本地 IP 地址,但现在又想和互联网上的主机通信 (不需要加密),那么应当采取什么措施呢?
目前使用得最多的方法是采用网络地址转换。
网络地址转换 NAT (Network Address Translation) 方法 [RFC 3022] 需要在专用网连接到互联网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫做 NAT 路由器,它至少有一个有效的外部全球 IP 地址。这样,所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址,才能和互联网连接。
当 NAT 路由器收到互联网上的主机 B 发来的 IP 数据报时,还有进行一次 IP 地址的转换。通过 NAT 地址转换表,就可把 IP 数据报上的旧的目的 IP 地址 172.38.1.15,转换为新的目的 IP 地址 192.168.0.3。
当 NAT 路由器具有 n 个全球 IP 地址时,专用网内最多可同时有 n 台主机接入到互联网。这样就可以使专用网内较多数量的主机,轮流使用 NAT 路由器有限数量的全球 IP 地址。
通过 NAT 路由器的通信必须由专用网内的主机发起。这种专用网内部的主机不能充当服务器用,因为互联网上的客户无法请求专用网内的服务器提供服务。
为了更加有效地利用 NAT 路由器上的全球 IP 地址,现在常用的 NAT 转换表把运输层的端口号也利用上。这样,就可以使多个拥有本地地址的主机,共用一个 NAT 路由器上的全球 IP 地址,因而可以同时和互联网上的不同主机进行通信。
使用端口号的 NAT 也叫做网络地址和端口号转换 NAPT (Network Address and Port Translation),而不使用端口号的 NAT 叫做传统的 NAT (traditional NAT)。
4-59 建议的 IPv6 协议没有首部检验和。这样做的优缺点是什么?
解:对首部的处理更简单。数据链路层已经将有差错的帧丢弃了,因此网络层可省去这一步骤。但可能遇到数据链路层检测不出来的差错 (此概率极小)。
4-60 在 IPv4 首部中有一个“协议”字段,但在 IPv6 的固定首部中却没有。这是为什么?
解:在 IP 数据报传送的路径上所有路由器都不需要这一字段的信息,只有目的主机才需要协议字段。在 IPv6 使用“下一个首部”字段完成 IPv4 中的“协议”字段的功能。
4-61 当使用 IPv6 时,ARP 协议是否需要改变?如果需要改变,那么应当进行概念性的改变还是技术性的改变?
解:从概念上讲没有改变,但因 IPv6 地址长度增大了,所以相应的字段都需要增大。
4-62 IPv6 只允许在源点进行分片。这样做有什么好处?
解:分片和重装是非常耗时的操作。IPv6 把这一功能从路由器中删除,并移到网络边缘的主机中,就可以大大加快网络中 IP 数据报的转发速度。
4-63 设每隔 1 微微秒就分配出 100 万个 IPv6 地址。试计算大约要用多少年才能将 IPv6 地址空间全部用光。可以和宇宙的年龄 (大约有 100 亿年) 进行比较。
皮秒 (picosecond) 即纳秒的千分之一,即 1 0 − 12 10^{-12} 10−12 秒,简称 ps,又名“微微秒”,最快晶体管的运行以皮秒计。
IPv6 的地址空间共有 2 128 2^{128} 2128 各地址,或 3.4 × 1 0 38 3.4 \times 10^{38} 3.4×1038。
1 秒钟分配 1 0 18 10^{18} 1018 个地址,可分配 1.08 × 1 0 13 1.08 \times 10^{13} 1.08×1013 年。大约是宇宙年龄的 1000 倍。
地址空间的利用不会是均匀的,但即使只利用整个地址空间的 1/1000,那也是不可能用完的。
4-64 试把以下的 IPv6 地址用零压缩方法写成简洁形式:
(1) 0000:0000:0F53:6382:AB00:67DB:BB27:7332
(2) 0000:0000:0000:0000:0000:0000:004D:ABCD
(3) 0000:0000:0000:AF36:7328:0000:87AA:0398
(4) 2819:00AF:0000:0000:0000:0035:0CB2:B271
解:(1) ::F53:6382:AB00:67DB:BB27:7332
(2) ::4D:ABCD
(3) ::AF36:7328:0:87AA:398
(4) 2819:AF::35:CB2:B271
4-65 试把以下的零压缩的 IPv6 地址写成原来的形式:
(1) 0::0
(2) 0:AA::0
(3) 0:1234 ::3
(4) 123::1:2
解:(1) 0000:0000:0000:0000:0000:0000:0000:0000
(2) 0000:00AA:0000:0000:0000:0000:0000:0000
(3) 0000:1234 :0000:0000:0000:0000:0000:0003
(4) 0123:0000:0000:0000:0000:0000:0001:0002
4-66 从 IPv4 过渡到 IPv6 的方法有哪些?
向 IPv6 过渡只能采用逐步演进的办法,同时,还必须使新安装的 IPv6 系统能够向后兼容。即,IPv6 系统必须能够接收和转发 IPv4 分组,并且能够为 IPv4 分组选择路由。
两种向 IPv6 过渡的策略:
4-67 多协议标记交换 MPLS 的工作原理是怎样的?它有哪些主要的功能?
MPLS 的一个重要特点是在 MPLS 域的入口处,给每一个 IP 数据报打上固定长度“标记”,然后对打上标记的 IP 数据报用硬件进行转发,这使得 IP 数据报转发的过程大大加快了。
采用硬件技术对打上标记的 IP 数据报进行转发称为标记交换。“交换”也表示在转发时不再上升到第三层查找转发表,而是根据标记在第二层 (链路层) 用硬件进行转发。MPLS 可使用多种链路层协议,如 PPP、以太网、ATM 以及帧中继等。
MPLS 域 (MPLS domain) 是指该域中有许多彼此相邻的路由器,并且所有的路由器都是支持 MPLS 技术的标记交换路由器 LSR (Label Switching Router)。LSR 同时具有标记交换和路由选择这两种功能,标记交换功能是为了快速转发,但在这之前 LSR 需要使用路由选择功能构造转发表。
上图中给出了 MPLS 的基本工作过程:
上述的这种“由入口 LSR 确定进入 MPLS 域以后的转发路径”称为显式路由选择 (explicit routing),它和互联网中通常使用的“每一个路由器逐跳进行路由选择”有着很大的区别。
【计算机网络 (谢希仁) 习题题解】目录