计算机网络笔记23 IPv6、IP多播

IPv6

• 互联网经过几十年的飞速发展,到 2011 年 2 月,IPv4 的 32 位地址已经耗尽。
• ISP 已经不能再申请到新的 IP 地址块了。
• 我国在 2014 – 2015 年也逐步停止了向新用户和应用分配 IPv4 地址。
• 解决 IP 地址耗尽的问题的措施:
– 采用划分子网和无类别编址 CIDR,使 IP 地址的分配更加合理
– 采用网络地址转换 NAT方法以节省全球 IP 地址
– 采用具有更大地址空间的新版本的 IP 协议 IPv6
• 解决 IP 地址耗尽的根本措施就是采用具有更大地址空间的新版本的 IP,即 IPv6。

IPv6 仍支持无连接的传送,主要变化如下:
更大的地址空间:IPv6 将地址从 IPv4 的 32 位 增大到了 128 位
• 扩展的地址层次结构
• 灵活的首部格式: IPv6 定义了许多可选的扩展首部
• 改进的选项:IPv6 允许数据报包含有选项的控制信息,其选项放在有效载荷中
• 允许协议继续扩充。
• 支持即插即用(即自动配置),因此 IPv6 不需要使用DHCP
• 支持资源的预分配:IPv6 支持实时视像等要求,保证一定的带宽和时延的应用
IPv6 首部改为 8 字节对齐

IPv6数据报的一般形式

• IPv6 数据报由两大部分组成:
– 基本首部 (base header)
– 有效载荷 (payload)。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部 (extension header),再后面是数据部分。
在这里插入图片描述

IPv6的基本首部

• IPv6 将首部长度变为固定的 40 字节,称为基本首部(base header)。
• 将不必要的功能取消了,首部的字段数减少到只有 8 个。
• 取消了首部的检验和字段,加快了路由器处理数据报的速度。
• 在基本首部的后面允许有零个或多个扩展首部。
• 所有的扩展首部和数据合起来叫做数据报的有效载荷(payload)或净负荷

与IPv4数据报首部的对比

在这里插入图片描述

IPv6的报文

在这里插入图片描述
版本(version)—— 4 bit。它指明了协议的版本,对IPv6 该字段总是 6。
通信量类(traffic class)—— 8 bit。这是为了区分不同的 IPv6 数据报的类别或优先级。目前正在进行不同的通信量类性能的实验。
流标号(flow label)—— 20 bit。 “流”是互联网络上从特定源点到特定终点的一系列数据报。所有属于同一个流的数据报都具有同样的流标号。
有效载荷长度(payload length)—— 16 bit。它指明 IPv6 数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内),其最大值是 64 KB。
下一个首部(next header)—— 8 bit。它相当于 IPv4 的协议字段或可选字段,表示对应的高层协议(无扩展首部时)或者第一个扩展首部的类型(有扩展首部时)。
跳数限制(hop limit)—— 8 bit。源站在数据报发出时即设定跳数限制。路由器在转发数据报时将跳数限制字段中的值减1。当跳数限制的值为零时,就要将此数据报丢弃。
源地址—— 128 bit。是数据报的发送站的 IP 地址。
目的地址—— 128 bit。是数据报的接收站的 IP 地址。

IPv6的扩展首部

• IPv6 把原来 IPv4 首部中选项的功能都放在扩展首部中,并将扩展首部留给路径两端的源站和目的站的主机来处理。
数据报途中经过的路由器都不处理这些扩展首部(只有一个首部例外,即逐跳选项扩展首部)。
• 这样就大大提高了路由器的处理效率
在 RFC 2460 中定义了六种扩展首部:
(1) 逐跳选项
(2) 路由选择
(3) 分片
(4) 鉴别
(5) 封装安全有效载荷
(6) 目的站选项

每一个扩展首部都由若干个字段组成,它们的长度也各不相同。但所有扩展首部的第一个字段都是8位的“下一个首部”字段。此字段的值指出了在该扩展首部后面的字段是什么。
在这里插入图片描述
以分片为例
• IPv6 把分片限制为由源站来完成,路由器不允许分片。
• 分片扩展首部的格式如下:
在这里插入图片描述

冒号十六进制记法

• 每个 16 bit 的值用十六进制值表示,各值之间用冒号分隔。
68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
• 冒号十六进制记法可以允许零压缩(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 (零压缩)

IPv6 地址分类

在这里插入图片描述
• 未指明地址
– 这是 16 字节的全 0 地址,可缩写为两个冒号“::”。
– 这个地址只能为还没有配置到一个标准的 IP 地址的主机当作源地址使用。
– 这类地址仅此一个。
• 环回地址
– 即 0:0:0:0:0:0:0:1(记为 ::1)。
– 作用和 IPv4 的环回地址一样。
– 这类地址也是仅此一个。
• 多播地址
– 功能和 IPv4 的一样。
– 这类地址占 IPv6 地址总数的 1/256。
• 本地链路单播地址 (Link-Local Unicast Address)
– 有些单位的网络使用 TCP/IP 协议,但并没有连接到互联网上。连接在这样的网络上的主机都可以使用这种本地地址进行通信,但不能和互联网上的其他主机通信。
– 这类地址占 IPv6 地址总数的 1/1024。
• 全球单播地址
– IPv6 的这一类单播地址是使用得最多的一类。
– 曾提出过多种方案来进一步划分这 128 位的单播地址。
– 根据 2006 年发布的草案标准 RFC 4291 的建议, IPv6 单播地址的划分方法非常灵活。
在这里插入图片描述

向 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 协议栈。
在这里插入图片描述

IP多播

• IP 多播 (multicast,以前曾译为组播) 已成为互联网的一个热门课题。
• 目的:更好第支持一对多通信
• 一对多通信:一个源点发送到许多个终点。
– 例如,实时信息的交付(如新闻、股市行情等),软件更新,交互式会议及其他多媒体通信。

多播可大大节约网络资源:
在这里插入图片描述
在这里插入图片描述
• 在互联网上进行多播就叫做 IP 多播
• 互联网范围的多播要靠路由器来实现。
• 能够运行多播协议的路由器称为多播路由器(multicast router)。当然它也可以转发普通的单播IP数据报。
• 从 1992 年起,在互联网上开始试验虚拟的多播主干网 MBONE (Multicast Backbone On the InterNEt)。 现在多播主干网已经有了相当大的规模。

多播IP地址

• IP 多播所传送的分组需要使用多播 IP 地址
• 在多播数据报的目的地址写入的是多播组的标识符。
• 多播组的标识符就是 IP 地址中的 D 类地址(多播地址)。
• 每一个 D 类地址标志一个多播组。
• 多播地址只能用于目的地址,不能用于源地址。

多播数据报

• 多播数据报和一般的 IP 数据报的区别就是它使用 D 类 IP 地址作为目的地址,并且首部中的协议字段值是 2,表明使用网际组管理协议 IGMP
• 多播数据报也是“尽最大努力交付”,不保证一定能够交付多播组内的所有成员。
• 对多播数据报不产生 ICMP 差错报文。因此,若在 PING 命令后面键入多播地址,将永远不会收到响应。

在局域网上进行硬件多播

• 互联网号码指派管理局 IANA 拥有的以太网地址块的高 24 位为 00-00-5E。
• 以太网多播地址块的范围是:
从 01-00-5E-00-00-00 到 01-00-5E-FF-FF-FF
在这里插入图片描述

地址的映射关系

• 由于多播 IP 地址与以太网硬件地址的映射关系不是唯一的,因此收到多播数据报的主机,还要在 IP 层利用软件进行过滤,把不是本主机要接收的数据报丢弃。

IP多播需要的两种协议

• 为了使路由器知道多播组成员的信息,需要利用网际组管理协议 IGMP (Internet Group Management Protocol)。
• 连接在局域网上的多播路由器还必须和互联网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议

IGMP协议及其使用范围

在这里插入图片描述
• IGMP 并非在互联网范围内对所有多播组成员进行管理的协议。
• IGMP 不知道 IP 多播组包含的成员数,也不知道这些成员都分布在哪些网络上。
• IGMP 协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组。

IGMP与IP

• 和 ICMP 相似,IGMP 使用 IP 数据报传递其报文(即 IGMP 报文加上 IP 首部构成 IP 数据报),但它也向 IP 提供服务。
• 因此,我们不把 IGMP 看成是一个单独的协议,而是属于整个网际协议 IP 的一个组成部分。

IGMP工作的两个阶段

第一阶段:加入多播组
– 当某个主机加入新的多播组时,该主机应向多播组的多播地址发送 IGMP 报文,声明自己要成为该组的成员。
– 本地的多播路由器收到 IGMP 报文后,将组成员关系转发给互联网上的其他多播路由器。
第二阶段:探询组成员变化情况
– 因为组成员关系是动态的,因此本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。
只要对某个组有一个主机响应,那么多播路由器就认为这个组是活跃的
– 但一个组在经过几次的探询后仍然没有一个主机响应,则不再将该组的成员关系转发给其他的多播路由器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章