计算机网络-网络层-IPv6数据报格式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络-网络层-IPv6数据报格式相关的知识,希望对你有一定的参考价值。
参考技术A IPv6:解决IP地址耗尽的根本措施就是采用具有更大地址空间的新版本的IP,即IPv6。IPv6仍支持无连接的传送,但将协议数据单元PDU称为分组,而不是Pv4的数据报。IPv6所引进的主要变化如下:
(1)更大的地址空间,Pv6把地址从Pv4的32位增大到4倍,即增大到128位,使地址空间增大了2^96倍,这样大的地址空间在可预见的将来是不会用完的。
(2)扩展的地址层次结构。IPv6由于地址空间很大,因此可以划分为更多的层次。
(3)灵活的首部格式。IPv6数据报的首部和Pv4的并不兼容。IPv6定义了许多可选的扩展首部,不仅可提供比Pv4更多的功能,而且还可提高路由器的处理效率,这是因为路由器对扩展首部不进行处理(除逐跳扩展首部外)。
(4)改进的选顶。Pv6允许数据报包含有选项的控制信县,因而可以包含一些新的选项。但IPv6的首部长度是固定的,其选项放在有效载荷中。IPv4所规定的选项放在首部的可变部分。
(5)允许协议继续扩充。这一点很重要,因为技术总是在不断地发展(如网络硬件的更新)而新的应用也还会出现。但我们知道,IP4的功能是固定不变的。
(6)支持即插即用(即自动配置),因此IPv6不需要使用DHCP。
(7)支持资源的预分配。Pv6支持实时视像等要求保证一定的带宽和时延的应用。
(8)IPv6首部改为8字节对齐(即首部长度必须是8字节的整数倍)。原来的IPv4首部是4字节对齐。
IPv6数据报由两大部分组成,即基本首部(base header)和后而的有效载荷(payload) ,有效载荷也称为净负荷。有效我荷允许有零个或多个扩展首部(extension header),再后面是数据部分(图4-46)。
IPv6各个字段:
(1)版本(version)占4位。它指明了协议的版本,对IPv6该字段是6。
(2)通信量类(traffic class)占8位。这是为了区分不同的IPv6数据报的类别或优先级。目前正在进行不同的通信量类性能的实验。
(3)流标号(flow labe)占20位。IPv6的一个新的机制是支持资源预分配,并且允许路由器把每一个数据报与一个给定的资源分配相联系。IPv6提出流(flow)的抽象概念。所谓“流”就是互联网络上从特定源点到特定终点(单播或多播)的一系列数据报(如实时音频或视频传输),而在这个“流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有同样的流标号小因此,流标号对实时音烦/视频数据的传送特别有用。对于传统的电子郎件或非实时数据,标号则没有用处,把它置为0即可。
(4)有效载荷长度(payload length)占16位。它指明IPv6数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内)。这个字段的最大值是64KB(65535字节).
(5)下一个首部(next header)占8位。它相当于IPv4的协议字段或可选字段。
① 当Pv6数据报没有扩展首部时,下一个首部字段的作用和Pv4的协议字段一样,它的值指出了基本首部后面的数据应交付P层上面的哪一个高层协议(例如:6或17分别表示应交付运输层TCP或UDP)。
② 当出现扩展首部时, 下一个首部字段的值就标识后面第一个扩展首部的类型 。
(6)跳数限制(hop limit)占8位。用来防止数据报在网络中无限期地存在。源点在每
个数据报发出时即设定某个跳数限制(最大为255跳)。每个路由器在转发数据报时,要先
把跳数限制字段中的值减1。当跳数限制的值为零时,就要把这个数据报丢弃。
(7)源地址占128位。是数据报的发送端的IP地址。
(8)目的地址占128位。是数据报的接收端的IP地址。
扩展首部
IP4的数据报如果在其首部中使用了选项,那么沿着数据报传送的路径上的每一个路由器都必须对这些选项一一进行检查,这就降低了路由器处理数据报的速度。然而实际上很多的选项在途中的路由器上是不需要检查的(因为不需要使用这些选项的信息)。IPv6把原来IPv4首部中选项的功能都放在扩展首部中,并把扩展首部留给路径两端的源点和终点的主机来处理,而数据报途中经过的路由器都不处理这些扩展首部(只有一个首部例外,即逐跳选项扩展首部),这样就大大提高了路由器的处理效率。
在RFC2460中定义了以下六种扩展首部:(1)逐跳选项:(2)路由选择:(3)分片:(4)鉴别:(5)封装安全有效载荷:(6)目的站选项。
每一个扩展首部都由若干个字段组成,它们的长度也各不同。但所有扩展首部的第一个字段都是8位的“下一个首部”字段,此字段的值指出了在该扩展首部后面的字段是什么。当使用多个扩展首部时,应按以上的先后顺序出现。高层首部总是放在最后面。
网络层-第七节:IPv4数据报首部格式
文章目录
本节对应视频如下
一:IP数据报首部格式概述
IP数据报首部格式:一个IP分组由首部和数据载荷两部分组成。IP数据报首部由固定部分(20B)和可变部分(最大40B)
- 固定部分:每个IP数据报首部所必须包含的部分
- 可变部分:用于增加IP数据报的功能
IP数据报常以32个比特为单位(4B)进行描述,也即下图中的每一行,其中每个小格子称之为字段(或域),每个字段或某些字段的组合用来表达IP协议的相关功能
二:各字段作用概述
(1)版本
版本:占4个比特,表示IP协议的版本,通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本号为4,也即IPv4
(2)首部长度和可选字段
首部长度:占4个比特,表示IP数据报首部的长度,该字段取值以4B为单位
- 最小十进制取值为5,表示IP数据报首部只有20B的固定部分
- 最大十进制取值为15,表示IP数据报首部包含20B的固定部分和最大40B的可变部分
可选字段: 占1B到40B不等,用来支持排错、测量及安全等措施。可选字段增加了IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理IP数据报的开销。实际上可选字段很少被使用
(3)填充
填充: 用来确保首部长度应该是4B的整数倍,使用全0进行填充
(4)区分服务
区分服务: 占8个比特,用来获得更好的服务。该字段在旧标准中叫作服务类型,但实际上一直没有被使用过。1998年,因特网工程任务组IETF把这个字段改名为区分服务。利用该字段的不同数值可提供不同等级的服务质量。只有在使用区分服务时,该字段才起作用。一般情况下都不使用该字段
(5)总长度
A:概述
总长度: 占16个比特,用来表示IP数据报的总长度(首部+数据载荷)
- 最大取值为十进制的65535,以字节为单位。在实际应用中,很少会传输这么长的IP数据报文
B:首部长度和总长度字段区别
下图可说明首部长度字段和总长度字段的区别
- 首部长度: ( 0101 ) 2 × 4 = 5 × 4 = 20 B (0101)_2×4=5×4=20B (0101)2×4=5×4=20B
- 总长度: ( 0000001111111100 ) 2 = 1020 B (0000001111111100)_2=1020B (0000001111111100)2=1020B
- 数据载荷长度: 1020 − 20 = 1000 B 1020-20=1000B 1020−20=1000B
(6)标识、标志和片偏移(用于IP数据报分片)
A:IP数据报分片
IP数据报分片:如下图,网际层封装出的IP数据报将会在数据链路层封装成帧。每一种数据链路层协议都规定了帧的数据载荷的最大长度,称之为最大传输单元MTU(例如以太网数据链路层规定MTU值为1500B)。如果某个IP数据报总长度超过MTU时,将无法封装成帧,需要将原IP数据报分片为很小的IP数据报,再将各分片IP数据报封装成帧。而这里的标识、标志和片偏移三个字段共同用于IP数据报分片
B:标识、标志和片偏移
标识: 占16个比特,属于同一个数据报的各分片数据报应具有相同的标识。IP软件维持一个计数器,每产生一个数据报,计数器值+1,并将此值赋给标识字段
标志: 占3个比特,各比特含义如下
- DF位:
1
:不允许分片0
:允许分片
- MF位:
1
:后面还有分片0
:这是最后一个分片
- 保留位:必须设置为0
片偏移: 占13个比特,用于指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位,片偏移以8个字节为单位
C:IP数据报分片例子
如下图有一IP数据报,其首部为20B,数据载荷部分3800B,所以总长度为3820B。假设使用以太网传送该IP数据报,其MTU为1500B,显然无法封装3820B长的IP数据报,因此需要把该IP数据报分片为几个更小的IP数据报,每个长度不能大于1500B,然后再将每个分片IP数据报封装成一个以太网帧进行传输。为了更好地描述后续分片工作,这里我们将原IP数据报数据载荷部分的每一个字节都编上号,范围为0-3799
我们可将原IP数据报的数据载荷部分分为3个更小的分片
- 第一个分片:共1400字节,范围0-1399
- 第二个分片:共1400字节,范围1400-2799
- 第一个分片:共1000字节,范围2800-3799
分片结束后,给每个分片重新添加一个首部使之成为IP数据报,每个分片添加的首部自然不能完全相同,根据上面对标识、标志和片偏移字段的理解,可以填写下表
总长度 | 标识 | MF | DF | 片偏移 | |
---|---|---|---|---|---|
原始数据报 | 3800+20 | 12345 | 0 | 0 | 0 |
分片1的数据报 | 1400+20 | 12345 | 1 | 0 | 0/8 |
分片2的数据报 | 1400+20 | 12345 | 1 | 0 | 1400/8 |
分片3的数据报 | 1000+20 | 12345 | 0 | 0 | 2800/00 |
假设分片2的IP数据报经过某个网络时还需要再进行分片,其中一个分片长度为800B,另一个分片长度为600B,分片结束后给每个分片添加一个首部使之称为IP数据报,填写下表如下
总长度 | 标识 | MF | DF | 片偏移 |
---|---|---|---|---|
原始数据报 | 3800+20 | 12345 | 0 | 0 |
分片2的分片1数据报 | 800+20 | 12345 | 1 | 0 |
分片2的分片2数据报 | 600+20 | 12345 | 1 | 0 |
(7)生存时间
A:概述
生存时间:
- 占8比特,最初以秒为单位,最大生存周期为255秒;路由器转发IP数据报时,将IP数据报首部中的该字段的值减去IP数据报在本路由器上所耗费的时间,若不为0就转发,否则就丢弃
- 现在以“跳数”为单位,路由器转发IP数据报时,将IP数据报首部中的该字段的值减1,若不为0就转发,否则就丢弃
B:作用
生存时间字段的最大作用就是防止IP数据报在网络中永久兜圈
如下图,假设路由器R2路由表目的网络为N2的条目其下一跳被错误的配置成了R1(本来是R3),这会导致去往网络N2的IP数据报错误地转发给路由器R1
假设某个IP数据报从网络N1发往N2,该IP数据报达到R1后,R1进行查表转发,发现了匹配的路由条目,其下一条指示转发给R2,于是R1将该IP数据报转发给了R2。R2收到该IP数据报后,进行查表转发,发现了匹配的路由条目,其下一条指示转发给R1,于是R2将该IP数据报又转发回了R1。很显然,这形成了路由环路,如果没有生存时间字段,IP数据报将在此路由环路中永久兜圈
(8)协议
协议: 占8比特,指明IPv4数据报的数据部分是何种协议数据单元,常用的一些协议和相应协议字段的值如下表
协议名称 | ICMP | IGMP | TCP | UDP | IPv6 | OSPF |
---|---|---|---|---|---|---|
协议字段值 | 1 | 2 | 6 | 17 | 41 | 89 |
(9)首部校验和
首部校验和: 占16个比特,用来检测首部在传输过程中是否出现差错。IP数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段(生存时间、标志、片偏移等)的取值可能发生变化。由于IP层本身并不提供可靠传输的服务,并且计算首部校验和是一项耗时的操作,因此在IPv6中,路由器不再计算首部校验和,从而更快转发IP数据报
(10)源IP地址和目的IP地址
源IP地址和目的IP地址: 各占32比特,用来填写发送该IP数据报的源主机的IP地址和接收该IP数据报的目的主机的IP地址
三:总结
字段名 | 长度 | 作用 |
---|---|---|
版本 | 4个比特 | IP协议版本 |
首部长度 | 4个比特 | IP数据报首部长度 |
总长度 | 16个比特 | IP数据报总长度 |
标识 | 16个比特 | 同一个数据报各分片相同 |
标志 | 3个比特 | DF;MF;保留位 |
生存时间 | 8个比特 | 防止永久兜圈 |
协议 | 8个比特 | 何种协议数据单元 |
首部校验和 | 16个比特 | 检测差错 |
源IP地址 | 32个比特 | 源主机IP地址 |
目的IP地址 | 32个比特 | 目的主机IP地址 |
可选字段 | 0-40字节 | 支持排错、测量及安全等措施 |
以上是关于计算机网络-网络层-IPv6数据报格式的主要内容,如果未能解决你的问题,请参考以下文章
计算机网络 王道考研2021 第四章:网络层 -- IPv6
计算机网络 王道考研2021 第四章:网络层 -- 网络层功能概述IP数据报格式(TCP/IP协议栈)IP数据报分片(MTU)