第4章 网络层
4.4 网际控制报文协议ICMP
- 为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。
- ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
- ICMP 不是高层协议,而是 IP 层的协议。
ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去
。![]()
4.1.1 ICMP 报文的种类
1. 种类
- ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
- ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关。
- 几种常用的ICMP报文类型
ICMP报文种类 | 类型的值 | ICMP报文类型 | 说明 |
---|---|---|---|
差错报告报文 | 3 | 终点不可达 | 路由器或主机不能交付数据报 |
差错报告报文 | 11 | 时间超过 | 路由器收到生存时间为零的数据报时 |
差错报告报文 | 12 | 参数问题 | 数据包的首部中字段的值不正确时 |
差错报告报文 | 5 | 改变路由 | 路由器把改变路由报文发送给主机, 让主机知道下次应将报文发给另外的路由器 |
询问报文 | 8或0 | 回送请求或回答 | 用于测试目的站是否可达,了解其有关状态 |
询问报文 | 13或14 | 时间戳请求或回答 | 用于时钟同步和时间测量。 |
2. ICMP 差错报告报文的数据字段的内容
所有的ICMP差错报告报文中的数据字段都具有相同的格式。把收到的需要进行差错报告的IP数据报的首部和数据字段的前8个字节(得到运输层的端口号和运输层报文的发送序号)提取出来,作为ICMP报文的数据字段,再加上相应的ICMP差错报告报文的前8个字节,就构成了ICMP差错报告报文。
![]()
3. 不应发送 ICMP 差错报告报文的几种情况
- 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
- 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
- 对具有多播地址的数据报都不发送 ICMP 差错报告报文。
- 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。
4.4.2 ICMP的应用举例
1. PING (Packet InterNet Groper)
- PING 用来测试两个主机之间的连通性。
- PING 使用了 ICMP 回送请求与回送回答报文。
- PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。
2. Traceroute
- traceroute(这是UNIX操作系统中的名字),用来跟踪一个分组从源点到终点的路径。
- 在Windows操作系统中这个命令是tracert.
4.5 互联网的路由选择协议
4.5.1 有关路由选择协议的几个基本概念
1. 理想的路由算法
路由选择是个非常复杂的问题
① 它是网络中的所有结点共同协调工作的结果。
② 路由选择的环境往往是不断变化的,而这种变化有时无法事先知道。
(1)理想的路由算法应具有以下的特点
① 算法必须是正确的和完整的。
② 算法在计算上应简单。
③ 算法应能适应通信量和网络拓扑的变化,这就是说,要有自适应性。
④ 算法应具有稳定性。
⑤ 算法应是公平的。
⑥ 算法应是最佳的。 最佳知识相对于某一特定要求下得出的较为合理的选择而已。
(2)从路由算法的自适应性考虑
① 静态路由选择策略(非自适应路由选择)
即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。
② 动态路由选择策略(自适应路由选择)
即自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。
2. 分层次的路由选择协议
因特网采用分层次的路由选择协议:
① 因特网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。而所有这些路由器之间交换路由信息所需的带宽就会使因特网的通信链路饱和。
② 许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到因特网上。
(1)自治系统 AS (Autonomous System)
① AS是在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量。
② 一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。
(2)两大类路由选择协议
① 内部网关协议 IGP (Interior Gateway Protocol)
即在一个自治系统内部使用的路由选择协议。也叫域内路由选择(intradomain routing)。 目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。
② 外部网关协议EGP (External Gateway Protocol)
若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。也叫域间路由选择(interdomain routing)。这样的协议就是外部网关协议 EGP。在外部网关协议中目前使用最多的是 BGP-4。
![](https://i-blog.csdnimg.cn/blog_migrate/6eecc21edab2a7e47f060e258421348c.png)
4.5.2 内部网关协议 RIP (Routing Information Protocol)
RIP协议让互联网中的所有路由器都和自己的相邻路由器不断交换路由信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的(即跳数最少)。
1. 工作原理
① RIP 是一种分布式的基于距离向量的路由选择协议。
② RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
③ 特点:
a) 仅和相邻路由器交换信息;
b) 路由器交换当前知道的全部信息,即自己现在的路由表;
c) 按固定的时间交换路由信息;
2. 距离向量算法
(1)“距离”的定义
① 从一路由器到直接连接的网络的距离定义为 1。
② 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。
③ RIP 协议中的“距离”也称为 “跳数”(hop count),因为每经过一个路由器,跳数就加 1。这里的“距离”实际上指的是“最短距离”,
④ RIP 允许一条路径最多只能包含 15 个路由器。“距离”的最大值为16 时即相当于不可达。可见 RIP 只适用于小型互联网。
⑤ RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。 RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。
(2)距离算法过程
收到相邻路由器(其地址为 X)的一个 RIP 报文:
1) 先修改此 RIP 报文中的所有项目:
把“下一跳”字段中的地址都改为 X,并把所有的 “距离”字段的值加 1。
2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤:
① 若项目中的目的网络不在路由表中,则把该项目添加到路由表中;
② 若下一跳字段给出的路由器地址是同样的,则把收到的项目替换原路由表中的项目;
③ 若收到项目中的距离小于路由表中的距离,则进行更新;
④ 否则,什么也不做;
3) 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为16(距离为16表示不可达)。
4) 返回。
3. RIP2 协议的报文格式
(1)报文格式
![](https://i-blog.csdnimg.cn/blog_migrate/18ca55fb50bdf0716f05e21cd905546b.png)
① RIP协议使用运输层的用户数据报UDP进行传送(使用UDP的端口520)
② RIP2 报文中的路由部分由若干个路由信息组成。每个路由信息需要用 20 个字节。一个报文最多可包含25个路由。
③ RIP2还具有简单的鉴别功能。(将原来写入第一个路由的信息[20字节]的位置用作鉴别。将地址族标识符置为全1,,路由标记写入鉴别类型,剩下16字节为鉴别数据)
(2)RIP优缺点
① 优点:实现简单,开销较小。
② 缺点:
a) 限制了网络的规模,它能使用的最大距离为 15;
b) 好消息传播得快,坏消息传播得慢
坏消息传得慢
![]()
① R1 说:“我到网 1 的距离是 1,是直接交付。”
② R2 说:“我到网 1 的距离是 2,是经过 R1。”![]()
① R2 说:“我到网 1 的距离是 2,是经过 R1。”
② R1 说:“我到网 1 的距离是 16 (表示无法到达),是直接交付。”
③ 但 R2 在收到 R1 的更新报文之前,还发送原来的报文,因为这时 R2 并不知道 R1 出了故障。
④ R1 收到 R2 的更新报文后,误认为可经过 R2 到达网1,于是更新自己的路由表说:“我到网 1 的距离是 3,下一跳经过 R2”。然后将此更新信息发送给 R2
⑤ R2 以后又更新自己的路由表为“1, 4, R1”,表明 “我到网 1 距离是 4,下一跳经过 R1”。
⑥ 这样不断更新下去,直到 R1 和 R2 到网 1 的距离都增大到 16 时,R1 和 R2 才知道网 1 是不可达的。
4.5.3 内部网关协议OSPF(Open Shortest Path First)
1. OSPF协议基本要点
OSPF即开放最短路径优先
“开放” 表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。
“最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法SPF
OSPF最主要的特征是使用分布式的链路状态协议
(1)三个基本要点
① 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。
② 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。“链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)/“代价”(费用、距离 、时延、带宽)。
③ 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
RIP | OSPF | |
---|---|---|
发送对象 | 相邻路由器 | 所有路由器 |
发送内容 | 到所有网络的距离和下一跳路由器 | 与本路由器相邻的所有路由器的链路状态 |
发送时间 | 定期交换信息 | 链路状态发生变化时 |
补充 | 每一个路由器知道到所有的网络的距离以及下一跳路由器, 但不知道全网的拓扑结构(只有到下一跳路由器才知道下一跳怎么走) | 每一个路由器都知道全网共有多少个路由器, 以及那些路由器时相连的,其代价是多少。 |
路径选择 | 不能在两个网络间同时使用多条路由,RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。 | 多路径间的负载平衡。如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。 |
(2)链路状态数据库(link-state database)
① 由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。
② 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。
③ OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。OSPF 的更新过程收敛得快是其重要优点。
(3)OSPF 的区域(area)
- 为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫作区域。
- 每一个区域都有一个 32 位的区域标识符(用点分十进制表示)。
- 区域也不能太大,在一个区域内的路由器最好不超过 200 个。
![](https://i-blog.csdnimg.cn/blog_migrate/2a625ae65459177e6acb4124cd4ccc8b.png)
名称 | 说明 | 举例 |
---|---|---|
主干区域 (backbone area) | 在上层的区域叫作主干区域(backbone area)。 主干区域的标识符规定为0.0.0.0。主干区域的作用是用来连通其他在下层的区域。 | 主干区域 0.0.0.0 |
主干路由器(backbone router) | 在主干区域内的路由器 | R3、R4、R5、R6、R7 |
区域边界路由器(area border router) | 其他区域内向主干区域传送信息的路由器,每个区域至少应当有一个 | R3、R4、R7 |
自制系统边界路由器 | 和本自治系统外的其他系统交换路由信息 | R5 |
(4)OSPF 的特点
![](https://i-blog.csdnimg.cn/blog_migrate/755230309f668586b66dfefb4060c730.png)
① OSPF 不用 UDP 而是直接用 IP 数据报传送。
② OSPF 构成的数据报很短。这样做可减少路由信息的通信量。数据报很短的另一好处是可以不必将长的数据报分片传送。分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。
③ OSPF 对不同的链路可根据 IP 分组的不同服务类型 TOS 而设置成不同的代价。因此,OSPF 对于不同类型的业务可计算出不同的路由。
④ 如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这叫作多路径间的负载平衡(load balancing)。
⑤ 所有在 OSPF 路由器之间交换的分组都具有鉴别的功能。
⑥ 支持可变长度的子网划分和无分类编址 CIDR。
⑦ 每一个链路状态都带上一个 32 位的序号,序号越大状态就越新。
2. OSPF 的五种分组类型
(1)分组
名称 | 说明 | |
---|---|---|
类型1 | 问候(Hello) 分组 | 用来发现和维持邻站的可达性 |
类型2 | 数据库描述(Database Description) 分组 | 向邻站给出自己链路状态数据库中所有链路状态项目的摘要信息 |
类型3 | 链路状态请求(Link State Request) 分组 | 向对方请求发送某些链路状态项目的详细信息 |
类型4 | 链路状态更新(Link State Update) 分组 | 用洪泛法对全网更新链路状态。 |
类型5 | 链路状态确认(Link State Acknowledgment) 分组 | 对链路更新分组的确认 |
(2)OSPF的基本操作
① OSPF让每一个路由器用数据库描述分组和相邻路由器交换本数据库中已有的链路状态摘要信息。
![](https://i-blog.csdnimg.cn/blog_migrate/d115b51f39172e82ce92ba6feccfd19d.png)
② 在网络运行的过程中,只要一个路由器的链路状态发生改变,该路由器就要使用链路状态更新分组,用洪泛法全网更新链路状态。OSPF使用的是可靠的洪泛法。
![](https://i-blog.csdnimg.cn/blog_migrate/c5a0640105e14fc7569c2428a4646bf0.png)
③ 为了确保链路状态数据库与全网的状态保持一致,OSPF还规定每隔一段时间,要刷新一次数据库中的链路状态。
(3)指定的路由器(designated router)
多点接入的局域网采用了指定的路由器的方法,使广播的信息量大大减少。指定的路由器代表该局域网上所有的链路向连接到该网络上的各路由器发送状态信息。
4.5.4 外部网关协议 BGP(border gateway protocol)
① 因特网的规模太大,使得自治系统之间路由选择非常困难。对于自治系统之间的路由选择,要寻找最佳路由是很不现实的。
当一条路径通过几个不同 AS 时,要想对这样的路径计算出有意义的代价是不太可能的。
比较合理的做法是在 AS 之间交换“可达性”信息。
② 自治系统之间的路由选择必须考虑有关策略。
因此,边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。
- BGP 是不同自治系统的路由器之间交换路由信息的协议。
- BGP 较新版本是 2006 年 1 月发表的 BGP-4(BGP 第 4 个版本),即 RFC 4271 ~ 4278。
- 可以将 BGP-4 简写为 BGP。
1. BGP 发言人(BGP speaker)
① 每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人” 。
② 一般说来,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往就是 BGP 边界路由器,但也可以不是 BGP 边界路由器。
2. BGP 交换路由信息
① 一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息。
② 使用 TCP 连接能提供可靠的服务,也简化了路由选择协议。
② 使用 TCP 连接交换路由信息的两个 BGP 发言人,彼此成为对方的邻站(neighbor)或对等站(peer)。
3. BGP 发言人和自治系统 AS
(1)BGP与AS的关系
![](https://i-blog.csdnimg.cn/blog_migrate/e75a1b4c4c925229f44876a627754cf6.png)
每个BGP发言人除了必须运行BGP协议外,还必须运行该系统所使用的内部网关协议,如OSPF或RIP。
(2)AS的连通图
![](https://i-blog.csdnimg.cn/blog_migrate/e8c74134535993afdccd4d5fafd060ae.png)
① BGP 所交换的网络可达性的信息就是要到达某个网络所要经过的一系列 AS。
② 当 BGP 发言人互相交换了网络可达性的信息后,各 BGP 发言人就根据所采用的策略从收到的路由信息中找出到达各 AS 的较好路由。
(3)BGP 发言人交换路径向量
![](https://i-blog.csdnimg.cn/blog_migrate/f4f40fa6f3db5a8a9b259477fc1c90b0.png)
4. BGP 协议的特点
① BGP 协议交换路由信息的结点数量级是自治系统数的量级。
② 每一个自治系统中 BGP 发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂。
③ BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
④ 在BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销方面都有好处。
5. BGP 报文
(1)BGP 报文具有通用的首部
![](https://i-blog.csdnimg.cn/blog_migrate/4e5ab5b340cc207f5279d8bcff3cfb56.png)
(2)BGP-4 共使用四种报文
报文 | 说明 |
---|---|
打开(OPEN) 报文 | 用来与相邻的另一个BGP发言人建立关系。 |
更新(UPDATE) 报文 | 用来发送某一路由的信息,以及列出要撤消的多条路由。 |
保活(KEEPALIVE) 报文 | 用来确认打开报文和周期性地证实邻站关系。 |
通知(NOTIFICATION) 报文 | 用来发送检测到的差错。 |
4.5.5 路由器的构成
1. 典型的路由器结构
路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。
![](https://i-blog.csdnimg.cn/blog_migrate/550cf03bc0095a55903df6a7f535cfea.png)
图中的数字1~3表示相应层次的构件
2. 路由器结构划分
整个的路由器结构可划分为两大部分:
① 路由选择
路由选择部分被也叫控制部分,其核心部件是路由选择处理机。
② 分组转发
分组转发由三部分组成:
a) 交换结构;
b) 一组输入端口;
c) 一组输出端口;
(1)“转发”和“路由选择”的区别
“转发”(forwarding) | 就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。 |
---|---|
“路由选择”(routing) | 则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。 |
路由表是根据路由选择算法得出的。而转发表是从路由表得出的
。在讨论路由选择的原理时,往往不去区分转发表和路由表的区别,
(2)输入端口的处理
数据链路层剥去帧首部和尾部后,将分组送到网络层的队列中排队等待处理。这会产生一定的时延。
![](https://i-blog.csdnimg.cn/blog_migrate/22344aa589bf804d031f5907a8c406b9.png)
(3)输出端口的处理
当交换结构传送过来的分组先进行缓存。数据链路层处理模块将分组加上链路层的首部和尾部,交给物理层后发送到外部线路。
![](https://i-blog.csdnimg.cn/blog_migrate/de0ce4b8aa53f765feaeb6c947fc31da.png)
(4)分组丢弃
① 若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。
② 路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。
3. 交换结构
交换结构是路由器的关键构件。
正是这个交换结构把分组从一个输入端口转移到某个合适的输出端口。
(1)常用交换方法
① 通过存储器
a) 当路由器的某个输入端口收到一个分组时,就用中断方式通知路由选择处理机。然后分组就从输入端口复制到存储器中。
b) 路由器处理机从分组首部提取目的地址,查找路由表,再将分组复制到合适的输出端口的缓存中。
c) 若存储器的带宽(读或写)为每秒 M 个分组,那么路由器的交换速率(即分组从输入端口传送到输出端口的速率)一定小于 M/2。
② 通过总线
a) 数据报从输入端口通过共享的总线直接传送到合适的输出端口,而不需要路由选择处理机的干预。
b) 因为每一个要转发的分组都要通过这一条总线,因此路由器的转发带宽就受总线速率的限制。
c) 现代的技术已经可以将总线的带宽提高到每秒吉比特的速率,因此许多的路由器产品都采用这种通过总线的交换方式。
③ 通过纵横交换结构 (crossbar switch fabric)
a) 这种交换结构常称为互连网络 (interconnection network)。
b) 它有 2N 条总线,可以使 N 个输入端口和 N 个输出端口相连接。
c) 当输入端口收到一个分组时,就将它发送到与该输入端口相连的水平总线上。
d) 若通向所要转发的输出端口的垂直总线是空闲的,则在这个结点将垂直总线与水平总线接通,然后将该分组转发到这个输出端口。
e) 但若该垂直总线已被占用(有另一个分组正在转发到同一个输出端口),则后到达的分组就被阻塞,必须在输入端口排队。
![](https://i-blog.csdnimg.cn/blog_migrate/986316d4239dd952898f31722da29730.png)
4.6 IPv6
IPv6 仍支持无连接的传送,但将协议数据单元 PDU 称为分组。
4.6.1 IPv6的基本首部
1. IPv6所引进的主要变化:
① 更大的地址空间。 IPv6 将地址从 IPv4 的 32 位 增大到了 128 位。
② 扩展的地址层次结构。
③ 灵活的首部格式。 IPv6 定义了许多可选的扩展首部。
④ 改进的选项。 IPv6 允许数据报包含有选项的控制信息,其选项放在有效载荷中。
⑤ 允许协议继续扩充。
⑥ 支持即插即用(即自动配置)。 因此 IPv6 不需要使用 DHCP。
⑦ 支持资源的预分配。 IPv6 支持实时视像等要求,保证一定的带宽和时延的应用。
⑧ IPv6 首部改为 8 字节对齐。 首部长度必须是 8 字节的整数倍。原来的 IPv4 首部是 4 字节对齐。
2.IPv6 数据报
(1)IPv6 数据报的一般形式
IPv6 数据报由两大部分组成:
① 基本首部 (base header)
② 有效载荷 (payload)。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部 (extension header),再后面是数据部分。
![](https://i-blog.csdnimg.cn/blog_migrate/9c85236e4181c0318a12b9d5c5885ea6.png)
(2)IPv6 数据报的基本首部
① IPv6 将首部长度变为固定的 40 字节,称为基本首部。
② 把首部中不必要的功能取消了,使得 IPv6 首部的字段数减少到只有 8 个。
③ IPv6 对首部中的某些字段进行了如下的更改:
取消了首部长度字段,因为首部长度是固定的 40 字节;
取消了服务类型字段;
取消了总长度字段,改用有效载荷长度字段;
把 TTL 字段改称为跳数限制字段;
取消了协议字段,改用下一个首部字段;
取消了检验和字段;
取消了选项字段,而用扩展首部来实现选项功能
![](https://i-blog.csdnimg.cn/blog_migrate/79a46ea7105e338f5ac079eccd34bae8.png)
字段 | 大小 | 说明 |
---|---|---|
版本(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 地址。 |
(3)IPv6 的扩展首部
① IPv6 把原来 IPv4 首部中选项的功能都放在扩展首部中,并将扩展首部留给路径两端的源站和目的站的主机来处理。
② 数据报途中经过的路由器都不处理这些扩展首部(只有一个首部例外,即逐跳选项扩展首部)。这样就大大提高了路由器的处理效率。
③ 在 RFC 2460 中定义了六种扩展首部: 逐跳选项、路由选择、分片、鉴别、封装安全有效载荷、目的站选项
4.6.2 IPv6 的地址
1. IPv6目的地址类型
IPv6 数据报的目的地址可以是以下三种基本类型地址之一:
① 单播 (unicast): 传统的点对点通信。
② 多播 (multicast): 一点对多点的通信。
③ 任播 (anycast): 这是 IPv6 增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个。
(1)结点与接口
① 将实现 IPv6 的主机和路由器均称为结点。
② 一个结点就可能有多个与链路相连的接口。
③ IPv6 地址是分配给结点上面的接口的。
a) 一个接口可以有多个单播地址。
b) 其中的任何一个地址都可以当作到达该结点的目的地址。即一个结点接口的单播地址可用来唯一地标志该结点
。
(2)冒号十六进制记法
① 在 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。
(3)零压缩
① 冒号十六进制记法可以允许零压缩 (zero compression),即一连串连续的零可以为一对冒号所取代。
FF05:0:0:0:0:0:0:B3
可压缩为:
FF05::B3
注意:在任一地址中只能使用一次零压缩
。
(4)点分十进制记法的后缀
① 冒号十六进制记法可结合使用点分十进制记法的后缀,这种结合在 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
(零压缩)
2. IPv6 地址分类
地址类型 | 二进制前缀 | 说明 |
---|---|---|
未指明地址 | 00…0(128位),可记为 ::/128。 | 这是 16 字节的全 0 地址,只能为还没有配置到一个标准的 IP 地址的主机当作源地址使用。这类地址仅此一个。 |
环回地址 | 00…1(128位),可记为 ::1/128。 | 即 0:0:0:0:0:0:0:1(记为 ::1),作用和 IPv4 的环回地址一样,这类地址也是仅此一个。 |
多播地址 | 11111111(8位),可记为 FF00::/8。 | 功能和 IPv4 的一样,这类地址占 IPv6 地址总数的 1/256 |
本地链路单播地址 | 1111111010(10位), 可记为 FE80::/10。 | 有些单位的网络使用 TCP/IP 协议,但并没有连接到互联网上。连接在这样的网络上的主机都可以使用这种本地地址进行通信,但不能和互联网上的其他主机通信。这类地址占 IPv6 地址总数的 1/1024。 |
全球单播地址 | (除上述四种外,所有其他的二进制前缀) |
![](https://i-blog.csdnimg.cn/blog_migrate/f019b41ecb460e992181c25a035e386a.png)
4.6.3 从 IPv4 向 IPv6 过渡
① 向 IPv6 过渡只能采用逐步演进的办法,同时,还必须使新安装的 IPv6 系统能够向后兼容:IPv6 系统必须能够接收和转发 IPv4 分组,并且能够为 IPv4 分组选择路由。
② 两种向 IPv6 过渡的策略:
使用双协议栈
使用隧道技术
1. 双协议栈
- 双协议栈 (dual stack) 是指在完全过渡到 IPv6 之前,使一部分主机(或路由器)装有两个协议栈,一个 IPv4 和一个 IPv6。
- 双协议栈的主机(或路由器)记为 IPv6/IPv4,表明它同时具有两种 IP 地址:一个 IPv6 地址和一个 IPv4 地址。 双协议栈主机在和 IPv6 主机通信时是采用 IPv6 地址,而和 IPv4 主机通信时就采用 IPv4 地址。
- 根据 DNS 返回的地址类型可以确定使用 IPv4 地址还是 IPv6 地址。
![](https://i-blog.csdnimg.cn/blog_migrate/e430a9e035d87d9730797cb3605d30b5.png)
2. 隧道技术
- 在 IPv6 数据报要进入 IPv4 网络时,把 IPv6 数据报封装成为 IPv4 数据报,整个的 IPv6 数据报变成了 IPv4 数据报的数据部分。
- 当 IPv4 数据报离开 IPv4 网络中的隧道时,再把数据部分(即原来的 IPv6 数据报)交给主机的 IPv6 协议栈。
![](https://i-blog.csdnimg.cn/blog_migrate/b7a1043334d96f47ae212e7fe15c7031.png)
4.6.4 ICMPv6
1. ICMPv6
- IPv6 也不保证数据报的可靠交付,因为互联网中的路由器可能会丢弃数据报。
- 因此 IPv6 也需要使用 ICMP 来反馈一些差错信息。新的版本称为 ICMPv6。
- 地址解析协议 ARP 和网际组管理协议 IGMP 协议的功能都已被 合并到 ICMPv6 中。
![](https://i-blog.csdnimg.cn/blog_migrate/c1723fe148477898d60d570d519b2141.png)
2. ICMPv6 报文的分类
- CMPv6 是面向报文的协议,它利用报文来报告差错,获取信息,探测邻站或管理多播通信。
- ICMPv6 还增加了几个定义报文的功能及含义的其他协议。
![](https://i-blog.csdnimg.cn/blog_migrate/6973ed97903e820531725406fc6da952.png)