文章目录
1. 网络层提供的两种服务
在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?
1.1 虚电路服务
一种观点:让网络负责可靠交付。这种观点认为,应借助于电信网的成功经验,让网络负责可靠交付,计算机网络应模仿电信网络,使用面向连接的通信方式
- 通信之前先建立虚电路 (Virtual Circuit),以保证双方通信所需的一切网络资源。
1.2 服务数据报服务
另一种观点:网络提供数据报
- 虚电路服务与数据报服务的对比
对比的方面 | 虚电路服务 | 数据报服务 |
---|---|---|
思路 | 可靠通信应当由网络来保证 | 可靠通信应当由用户主机来保证 |
连接的建立 | 必须有 | 不需要 |
终点地址 | 仅在连接建立阶段使用,每个分组使用短的虚电路号 | 每个分组都有终点的完整地址 |
分组的转发 | 属于同一条虚电路的分组均按照同一路由进行转发 | 每个分组独立选择路由进行转发 |
当结点出故障时 | 所有通过出故障的结点的虚电路均不能工作 | 出故障的结点可能会丢失分组,一些路由可能会发生变化 |
分组的顺序 | 总是按发送顺序到达终点 | 到达终点时不一定按发送顺序 |
端到端的差错处理和流量控制 | 可以由网络负责,也可以由用户主机负责 | 由用户主机负责 |
2. 网际协议 IP
网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。
与 IP 协议配套使用的还有三个协议:
- 地址解析协议 ARP (Address Resolution Protocol)
- 网际控制报文协议 ICMP (Internet Control Message Protocol)
- 网际组管理协议 IGMP (Internet Group Management Protocol)
2.1虚拟互联网络
网络层最重要的作用就是让异构的网络互联起来
- 将网络互相连接起来要使用一些中间设备。
中间设备又称为中间系统或中继 (relay)系统。
有以下五种不同的中间设备:
物理层中继系统:转发器 (repeater)。
数据链路层中继系统:桥接器 (bridge)或交换机(switch)。
网络层中继系统:路由器 (router)。
网桥和路由器的混合物:桥路器 (brouter)。 - 网络互连使用路由器:网络互连都是指用路由器进行网络互连和路由选择。
由于历史的原因,许多有关 TCP/IP 的文献将网络层使用的路由器称为网关。 - 互联网与虚拟互联网想要达到的效果
- 所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用 IP 协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络。
- 使用 IP 协议的虚拟互连网络可简称为 IP 网。
如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网 - 从网络层看 IP 数据报的传送(当作一层看)
2.2 分类的IP地址
2.2.1 IP 地址及其表示方法
- 32 位的标识符
- IP 地址现在由互联网名字和数字分配机构分配
- IP 地址的编址方法
- 分类的 IP 地址。这是最基本的编址方法,
- 每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)
- IP 地址结构:
- 各类 IP 地址的网络号字段和主机号字段
- 点分十进制记法
- 子网的划分。这是对最基本的编址方法的改进
- 构成超网。这是比较新的无分类编址方法
- 分类的 IP 地址。这是最基本的编址方法,
2.2.2 常用的三种类别的 IP 地址
A: 1-126 0,127有特殊作用
B: 128-191
C: 192-223
-
一般不使用的特殊的 IP 地址
-
网络号 主机号 源地址使用 目的地址使用 代表的意思 0 0 可以 不可 在本网络上的本主机(见 6.6 节 DHCP 协议) 0 host-id 可以 不可 在本网络上的某台主机 host-id 全 1 全 1 不可 可以 只在本网络上进行广播(各路由器均不转发) net-id 全 1 不可 可以 对 net-id 上的所有主机进行广播 127 非全 0 或全 1 的任何数 可以 可以 用于本地软件环回测试 -
IP 地址的一些重要特点
- IP 地址是一种分等级(net-id, host-id)的地址结构。分两个等级的好处是
- 方便了 IP 地址的管理。
- 路由器仅根据目的主机所连接的网络号来转发分组,减小了路由表所占的存储空间(实验中证明)
- 实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口。
- 一个路由器至少应当有两个不同的 IP 地址
- 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多归属主机
- 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id
- IP 地址是一种分等级(net-id, host-id)的地址结构。分两个等级的好处是
2.3 IP地址与硬件地址
-
IP地址与硬件地址是不同的地址
- 硬件地址(或物理地址)是数据链路层和物理层使用的地址。
IP 地址是网络层和以上各层使用的地址,是一种逻辑地址
- 硬件地址(或物理地址)是数据链路层和物理层使用的地址。
-
IP地址与硬件地址的区别
2.4 地址解析协议 ARP
已经知道了一个机器(主机或路由器)的IP地址,如何找出其相应的硬件地址?
-
ARP 作用:从网络层使用的 IP 地址,解析出在数据链路层使用的硬件地址。
-
通信时使用了两个地址:
IP 地址(网络层地址)
MAC 地址(数据链路层地址) -
每一个主机都设有一个 ARP 高速缓存 (ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。
-
-
TTL (Time To Live):地址映射有效时间 。(超出TTL的,就删除,防止表过大,查询慢 )
-
ARP 高速缓存的作用:存放最近获得的 IP 地址到 MAC 地址的绑定,以减少 ARP 广播的数量
-
ARP要点
- 当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。
- 如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。
- 如没有, ARP 进程在本局域网上广播发送一个 ARP 请求分组。收到 ARP 响应分组后,将得到的 IP 地址到硬件地址的映射写入 ARP 高速缓存。
-
使用 ARP 的四种典型情况
- 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。
- 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
-
为什么不直接使用硬件地址进行通信?
- 要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。
IP 编址把这个复杂问题解决了。
- 要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。
2.5 IP数据报的格式
一个 IP 数据报由首部和数据两部分组成
-
首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
-
版本——占 4 位,指 IP 协议的版本。目前的 IP 协议版本号为 4 (即 IPv4)
-
首部长度——占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的最大值是 60 字节。
-
区分服务——占 8 位,用来获得更好的服务
-
总长度——占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节总长度必须不超过最大传送单元MTU
-
标识(identification) ——占 16 位
-
标志(flag) ——占 3 位,目前只有前两位有意义。标志字段的最低位是 MF (More Fragment)。MF=1 表示后面“还有分片”。MF=0 表示最后一个分片。标志字段中间的一位是 DF (Don’t Fragment) 。只有当 DF=0 时才允许分片。
-
片偏移——占13 位,指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。
-
-
生存时间——占8 位,记为 TTL (Time To Live),指示数据报在网络中可通过的路由器数的最大值
-
协议——占8 位,指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给那个处理过程
-
首部检验和——占16 位,只检验数据报的首部,不检验数据部分
-
源地址和目的地址都各占 4 字节
-
-
-
路由器分组转发算法
-
- 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
- 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行 (3)。
- 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行 (4)。
- 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行 (5)。
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行 (6)。
- 报告转发分组出错。
-
3. 划分子网和构造超网
3.1 划分子网
三级 IP 地址
-
在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址,这种做法叫做划分子网 (subnetting)。
-
划分子网的基本思路
- 划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络
- 从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。
-
划分子网后变成了三级结构优点
- 使网络的组织更加灵活
更便于维护和管理 - 划分子网纯属一个单位内部的事情,对外部网络透明,对外仍然表现为没有划分子网的一个网络。
- 使网络的组织更加灵活
子网掩码
- 使用子网掩码 (subnet mask) 可以找出 IP 地址中的子网部分。
规则:- 子网掩码长度 = 32 位
子网掩码左边部分的一连串 1,对应于网络号和子网号
子网掩码右边部分的一连串 0,对应于主机号
- 子网掩码长度 = 32 位
- 子网号不能为全 1 或全 0:
- 子网划分方法
- 子网号不能为全 1 或全 0:,全为1/0说明没有划分子网
- 有固定长度子网和变长子网两种子网划分方法。
- 在采用固定长度子网时,所划分的所有子网的子网掩码都是相同的。
- 不同的子网掩码得出相同的网络地址。 上述例子中,将224改为192,最后得出的网络地址还是一样
- 但不同的掩码的效果是不同的。因为hostid位数不一样
3.2 使用子网时分组的转发
- 在划分子网情况下路由器转发分组的算法
-
- 从收到的分组的首部提取目的 IP 地址 D。
- 先用各网络的子网掩码和 D 逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行(3)。
- 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行 (4)。
- 对路由表中的每一行,将子网掩码和 D 逐位相“与”。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行 (5)。
- 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行 (6)。
- 报告转发分组出错。
-
3.3 无分类编址 CIDR(构造超网)
- 网络前缀
- IP 编址问题的演进
- 使用变长子网掩码 VLSM (Variable Length Subnet Mask)可进一步提高 IP 地址资源的利用率。
在 VLSM 的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择 CIDR - 无分类的两级编址
- 使用变长子网掩码 VLSM (Variable Length Subnet Mask)可进一步提高 IP 地址资源的利用率。
- CIDR 最主要的特点
- CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。
- CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。
- IP 地址从三级编址(使用子网掩码)又回到了两级编址。
- 路由聚合:
- 一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合
- 路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能。
- 路由聚合也称为构成超网
- 最长前缀匹配计算
4. 网际控制报文协议 ICMP
- ICMP 报文的格式
4.1 ICMP 报文的种类
- ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
- ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关。
- ICMP差错报告报文有四种
- 终点不可达
时间超过
参数问题
改变路由(重定向)(Redirect)
- 终点不可达
- 不应发送 ICMP 差错报告报文的几种情况
- ICMP自己差错不报
- 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
- 对具有多播地址的数据报都不发送 ICMP 差错报告报文
- 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文
- ICMP询问报文有两种
- 回送请求和回答报文
时间戳请求和回答报文
- 回送请求和回答报文
- ICMP差错报告报文有四种
4.2 ICMP 的应用举例
- PING (Packet InterNet Groper) :测试两个主机的连通性
- Traceroute:来跟踪一个分组从源点到终点的路径
5. 互联网的路由选择协议
5.1 有关路由选择协议的几个基本概念
5.1.1 理想的路由算法
- 算法必须是正确的和完整的。
算法在计算上应简单。
算法应能适应通信量和网络拓扑的变化,这就是说,要有自适应性。
算法应具有稳定性。
算法应是公平的。
算法应是最佳的。 - 路由选择是个非常复杂的问题
它是网络中的所有结点共同协调工作的结果。
路由选择的环境往往是不断变化的,而这种变化有时无法事先知道。 - 从路由算法的自适应性考虑
- 静态路由选择策略——即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。
动态路由选择策略——即自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大
- 静态路由选择策略——即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。
5.1.2 分层次的路由选择协议
互联网采用分层次的路由选择协议。这是因为:
(1) 互联网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。而所有这些路由器之间交换路由信息所需的带宽就会使互联网的通信链路饱和。
(2) 许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到互联网上。
-
自治系统 AS (Autonomous System)
- 自治系统 AS 的定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量
- 一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。
-
互联网有两大类路由选择协议
- 内部网关协议 IGP (Interior Gateway Protocol)
在一个自治系统内部使用的路由选择协议。
目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议 - 外部网关协议 EGP (External Gateway Protocol)
若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。
在外部网关协议中目前使用最多的是 BGP-4。
- 内部网关协议 IGP (Interior Gateway Protocol)
-
自治系统和内部网关协议、外部网关协议
- 自治系统之间的路由选择也叫做域间路由选择 (interdomain routing),在自治系统内部的路由选择叫做域内路由选择 (intradomain routing) 。
-
路由器网关是同义词
-
遇到名词 EGP 时,应弄清它是指旧的协议 EGP 还是指外部网关协议 EGP 这个类别
5.2 内部网关协议 RIP
5.2.1 工作原理
-
路由信息协议 RIP是内部网关协议 IGP 中最先得到广泛使用的协议
-
RIP 是一种分布式的、基于距离向量的路由选择协议。
- 距离的定义
- 从一个路由器到直接连接的网络的距离定义为 1。
从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。
RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1。 - RIP 允许一条路径最多只能包含 15 个路由器。
- 距离”的最大值为 16 时即相当于不可达。
- 从一个路由器到直接连接的网络的距离定义为 1。
- 距离的定义
-
RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
-
RIP协议的三个特点
- 仅和相邻路由器交换信息。
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
- 按固定的时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
-
路由表的建立
- 路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为 1)。它的路由表是空的。
- 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址
- RIP 协议的收敛 (convergence) 过程较快。“收敛”就是在自治系统中所有的结点都得到正确的路由选择信息的过程。
5.2.2 距离向量算法
- 2.下一跳地址相同,则更新,下一跳地址不同,比大小取小的
- 例子:
5.2.3 RIP2 协议的报文格式
- RIP协议是应用层的协议
- 好消息传播得快,坏消息传播得慢
- RIP 协议特点:好消息传播得快,坏消息传播得慢。
RIP 存在的一个问题:当网络出现故障时,要经过比较长的时间 (例如数分钟) 才能将此信息传送到所有的路由器。
- RIP 协议特点:好消息传播得快,坏消息传播得慢。
- RIP 协议的优缺点
- 优点:
实现简单,开销较小。
缺点:
RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
“坏消息传播得慢”,使更新过程的收敛时间过长
- 优点:
5.3 内部网关协议 OSPF
- 开放最短路径优先 OSPF (Open Shortest Path First)是为克服 RIP 的缺点在 1989 年开发出来的
5.3.1 OSPF 协议的基本特点
- "最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法 SPF
采用分布式的链路状态协议 (link state protocol)。 - 三个要点:
- 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。
发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
“链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)。
只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
- 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。
- 链路状态数据库
- 由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。
这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。
- 由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。
- OSPF 的区域 (area) :
- 为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫做区域。
- 划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量
- 在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况
- OSPF 使用层次结构的区域划分。在上层的区域叫做主干区域
- 主干区域的标识符规定为0.0.0.0。主干区域的作用是用来连通其他在下层的区域。
- OSPF的其他特点
- OSPF 对不同的链路可根据 IP 分组的不同服务类型 TOS 而设置成不同的代价。因此,OSPF 对于不同类型的业务可计算出不同的路由。
如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这叫做多路径间的负载平衡。
支持可变长度的子网划分和无分类编址 CIDR。
- OSPF 对不同的链路可根据 IP 分组的不同服务类型 TOS 而设置成不同的代价。因此,OSPF 对于不同类型的业务可计算出不同的路由。
- OSPF分组(认为ospf是网络层的协议)
5.3.2 OSPF 的五种分组类型
- 类型1,问候 (Hello) 分组。
类型2,数据库描述 (Database Description) 分组。
类型3,链路状态请求 (Link State Request) 分组。
类型4,链路状态更新 (Link State Update) 分组,用洪泛法对全网更新链路状态。
类型5,链路状态确认 (Link State Acknowledgment)分组。
5.4 外部网关协议 BGP
- BGP关注可达性:比较合理的做法是在 AS 之间交换“可达性”信息
- BGP发言人
- 每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人” (BGP speaker) 。
一般说来,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往就是 BGP 边界路由器,但也可以不是 BGP 边界路由器。
- 每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人” (BGP speaker) 。
- BGP协议的特点
- 和谁交换响铃的BGP发言人之间互相交换信息
- 交换什么交换发言人的路由表BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列
- 交换平率:在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。
- BGP 发言人交换路径向量
- BGP-4 共使用四种报文:
- 打开 (OPEN) 报文,用来与相邻的另一个BGP发言人建立关系。
- 更新 (UPDATE) 报文,用来发送某一路由的信息,以及列出要撤消的多条路由。
- 保活 (KEEPALIVE) 报文,用来确认打开报文和周期性地证实邻站关系。
- 通知 (NOTIFICATION) 报文,用来发送检测到的差错。
- BGP 报文具有通用首部(认为是应用层)
5.5 路由器的构成
- 典型的路由器的结构
- “转发”和“路由选择”的区别
- “转发”(forwarding) 就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。
“路由选择”(routing) 则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由 - 路由表是根据路由选择算法得出的。而转发表是从路由表得出的。
- “转发”(forwarding) 就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。
- 输入端口对线路上收到的分组的处理
- 输出端口将交换结构传送来的分组发送到线路
6. IPv6
- 互联网经过几十年的飞速发展,到 2011 年 2 月,IPv4 的 32 位地址已经耗尽
6.1 Pv6 的基本首部
- 将协议数据单元 PDU 称为分组
- 主要变化
- 更大的地址空间。IPv6 将地址从 IPv4 的 32 位 增大到了 128 位。
扩展的地址层次结构。
灵活的首部格式。 IPv6 定义了许多可选的扩展首部。
改进的选项。 IPv6 允许数据报包含有选项的控制信息,其选项放在有效载荷中。 - 允许协议继续扩充。
支持即插即用(即自动配置)。因此 IPv6 不需要使用 DHCP。
支持资源的预分配。 IPv6 支持实时视像等要求,保证一定的带宽和时延的应用。
IPv6 首部改为 8 字节对齐。首部长度必须是 8 字节的整数倍。原来的 IPv4 首部是 4 字节对齐。
- 更大的地址空间。IPv6 将地址从 IPv4 的 32 位 增大到了 128 位。
- IPv6 数据报的一般形式
- IPv6 数据报由两大部分组成:
基本首部 (base header)
有效载荷 (payload)。
- IPv6 数据报由两大部分组成:
- 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。
- 取消了首部长度字段,因为首部长度是固定的 40 字节;
6.2 IPv6 的地址
- IPv6 数据报的目的地址可以是以下三种基本类型地址之一:
单播 (unicast):传统的点对点通信。
多播 (multicast):一点对多点的通信。
任播 (anycast):这是 IPv6 增加的一种类型。有一个主机接收了就算交付了 - IPv6 地址是分配给结点上面的接口的。
一个接口可以有多个单播地址。
其中的任何一个地址都可以当作到达该结点的目的地址。即一个结点接口的单播地址可用来唯一地标志该结点。 - 冒号十六进制记法:每个 16 位的值用十六进制值表示,各值之间用冒号分隔。例如:68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
- 零压缩:一连串连续的零可以为一对冒号所取代。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 (零压缩)
6.3 从 IPv4 向 IPv6 过渡
- 两种向 IPv6 过渡的策略:
使用双协议栈
使用隧道技术
6.3.1 双协议栈
6.3.2 隧道技术
- 在 IPv6 数据报要进入 IPv4 网络时,把 IPv6 数据报封装成为 IPv4 数据报,整个的 IPv6 数据报变成了 IPv4 数据报的数据部分。
当 IPv4 数据报离开 IPv4 网络中的隧道时,再把数据部分(即原来的 IPv6 数据报)交给主机的 IPv6 协议栈。
6.4 ICMPv6(略)
7. IP 多播
- 目的:更好地支持一对多通信。
- 多播又叫组播
- 节约网络资源
- 单播中:采用单播方式,向 90 台主机传送同样的视频节目需要发送 90 个单播
- 在互联网上进行多播就叫做 IP 多播,互联网范围的多播要靠路由器来实现。
- 多播组的标识符就是 IP 地址中的 D 类地址(多播地址)
- 先订阅就能获取多播地址
- 多播数据报和一般的 IP 数据报的区别就是它使用 D 类 IP 地址作为目的地址,并且首部中的协议字段值是 2,表明使用网际组管理协议 IGMP。
多播数据报也是“尽最大努力交付”(UDP),不保证一定能够交付多播组内的所有成员。 - 对多播数据报不产生 ICMP 差错报文
7.3 网际组管理协议 IGMP 和多播路由选择协议
1. IP 多播需要两种协议
- 为了使路由器知道多播组成员的信息,需要利用网际组管理协议 IGMP (Internet Group Management Protocol)。
连接在局域网上的多播路由器还必须和互联网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议。 - 多播转发必须动态地适应多播组成员的变化(这时网络拓扑并未发生变化)。请注意,单播路由选择通常是在网络拓扑发生变化时才需要更新路由。
多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,而是还要考虑这个多播数据报从什么地方来和要到什么地方去。
多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成员接入的网络。
2. 网际组管理协议 IGMP
- IGMP 并非在互联网范围内对所有多播组成员进行管理的协议。
IGMP 不知道 IP 多播组包含的成员数,也不知道这些成员都分布在哪些网络上。 - IGMP 工作可分为两个阶段
- 第一阶段:加入多播组。
当某个主机加入新的多播组时,该主机应向多播组的多播地址发送 IGMP 报文,声明自己要成为该组的成员。
本地的多播路由器收到 IGMP 报文后,将组成员关系转发给互联网上的其他多播路由器 - 第二阶段:探询组成员变化情况。
因为组成员关系是动态的,因此本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。
只要对某个组有一个主机响应,那么多播路由器就认为这个组是活跃的。
但一个组在经过几次的探询后仍然没有一个主机响应,则不再将该组的成员关系转发给其他的多播路由器。
- 第一阶段:加入多播组。
3. 多播路由选择
- 多播路由选择协议在转发多播数据报时使用三种方法:
(1) 洪泛与剪除
(2) 隧道技术 (tunneling)
(3) 基于核心的发现技术- 洪泛与剪枝:
- 路由器收到多播数据报时,先检查它是否是从源点经最短路径传送来的。若是,就向所有其他方向转发刚才收到的多播数据报(但进入的方向除外),否则就丢弃而不转发。如果存在几条同样长度的最短路径,那么只能选择一条最短路径,选择的准则就是看这几条最短路径中的相邻路由器谁的 IP 地址最小。 最后就得出了用来转发多播数据报的多播转发树
- 如果在多播转发树上的某个路由器发现它的下游树枝(即叶节点方向)已没有该多播组的成员,就应把它和下游的树枝一起剪除。
当某个树枝有新增加的组成员时,可以再接入到多播转发树上
- 隧道技术
- 洪泛与剪枝:
8. 虚拟专用网 VPN 和网络地址转换 NAT
8.1 虚拟专用网 VPN
-
IP 地址的紧缺,一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数
-
考虑到互联网并不很安全,一个机构内也并不需要把所有的主机接入到外部的互联网
-
假定在一个机构内部的计算机通信也是采用 TCP/IP 协议,那么从原则上讲,对于这些仅在机构内部使用的计算机就可以由本机构自行分配其 IP 地址。
-
本地地址与全球地址
- 本地地址——仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向互联网的管理机构申请。
- 全球地址——全球唯一的 IP 地址,必须向互联网的管理机构申请。
- RFC 1918 指明了一些专用地址 (private address)。专用地址只能用作本地地址而不能用作全球地址。在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。
- RFC 1918 指明的专用 IP 地址:
-
虚拟专用网 VPN
-
利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN (Virtual Private Network)。
-
如果专用网不同网点之间的通信必须经过公用的互联网,但又有保密的要求,那么所有通过互联网传送的数据都必须加密
-
专用网”是因为这种网络是为本机构的主机用于机构内部的通信,而不是用于和网络外非本机构的主机通信。
“虚拟”表示“好像是”,但实际上并不是,因为现在并没有真正使用通信专线,而VPN只是在效果上和真正的专用网一样。 -
-
-
内联网 intranet 和外联网 extranet
- 它们都是基于 TCP/IP 协议的。
- 由部门 A 和 B(上图) 的内部网络所构成的虚拟专用网 VPN 又称为内联网 (intranet),表示部门 A 和 B 都是在同一个机构的内部。
- 一个机构和某些外部机构共同建立的虚拟专用网 VPN 又称为外联网 (extranet)。
8.2 网络地址转换 NAT
-
需要在专用网连接到互联网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫做 NAT路由器,它至少有一个有效的外部全球IP地址。
-
所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址,才能和互联网连接
-
网络地址转化过程
-
-
可以看出,在内部主机与外部主机通信时,在NAT路由器上发生了两次地址转换:
离开专用网时:替换源地址,将内部地址替换为全球地址;
进入专用网时:替换目的地址,将全球地址替换为内部地址; -
方向 字段 旧的IP 地址 新的 IP 地址 出 源 IP 地址 192.168.0.3 172.38.1.5 入 目的 IP 地址 172.38.1.5 192.168.0.3 出 源 IP 地址 192.168.0.7 172.38.1.6 入 目的 IP 地址 172.38.1.6 192.168.0.7
-
-
使用端口号的 NAT 叫做网络地址与端口号转换NAPT (Network Address and Port Translation),而不使用端口号的 NAT 就叫做传统的 NAT (traditional NAT)。
-
方向 字段 旧的IP地址和端口号 新的IP地址和端口号 出 源 IP 地址 :TCP 源端口 192.168.0.3:30000 172.38.1.5:40001 出 源IP 地址 :TCP源端口 192.168.0.4:30000 172.38.1.5:40002 入 目的IP地址:TCP目的端口 172.38.1.5:40001 192.168.0.3:30000 入 目的IP地址:TCP目的端口 172.38.1.5:40002 192.168.0.4:30000 - NAPT把专用网内不同的源 IP 地址,都转换为同样的全球 IP 地址。但对源主机所采用的 TCP 端口号(不管相同或不同),则转换为不同的新的端口号。因此,当 NAPT 路由器收到从互联网发来的应答时,就可以从 IP 数据报的数据部分找出运输层的端口号,然后根据不同的目的端口号,从 NAPT 转换表中找到正确的目的主机。