TCP/IP卷一:26---Internet协议之(IPv4、IPv6数据报,Internet校验和)

一、IP简介以及一些特性

  • IP是TCP/IP协议族中的核心协议。所有TCP、 UDP、 ICMP和IGMP数据都通过IP数 据报传输

IP的可靠性

  • IP提供了一种尽力而为、无连接的数据报交付服务。“尽力而为”的含义是不保 证IP数据报能成功到达目的地
  • 虽然IP不是简单丢弃所有不必要流量,但它也不对自已尝 试交付的数据报提供保证。当某些错误发生时,例如一台路由器临时用尽缓冲区, IP提供一 个简单的错误处理方法‥ 丢弃一些数据(通常是最后到达的数据报)
  • 任何可靠性必须由上 层(例如TCP)提供
  • IP数据报也可能发生其他问题:它们可能在传输过程中被复制,可能改变内容从而导致错误

IP的无连接性

  • “无连接”意味着IP不维护网络单元(即路由器)中数据报相关的任何链接状态信息, 每个数据报独立于其他数据报来处理。这也意味着IP数据报可不按顺序交付
  • 如果一个源 主机向同一目的地发送两个连续的数据报(第一个为A,第二个为B),每个数据报可以独 立路由,通过不同路径,并且B可能在A之前到达

二、IPv4数据报

版本字段:

  • 包含IP数据报的版本号: IPv4为4
  • IPv4头部和IPv6头部除版本字段位置相同外再无其他是一样

IHL(Internet头部长度)

  • 该字段保存IPv4头部中32位字的数量,包括任何选项
  • 这个字段的正常值(当没有选项时)是5
  • 由于它是一个4位的字段,所以IPv4头部被限制为最多15个32位字,即60字节
  • 后面,我们将看到,这种限制使一些选项(例如“记录路由”选项)当前几乎无法使用
  • IPv6中不存在这个字段,其头部长度固定为40字节

DS(区分服务字段)、ECN(显示拥塞通知字段/指示位)

  • 最初的规范制定:IPv4中,在IHL字段之后是一个服务类型(ToS)字段。IPv6中,在版本字段之后是一个等效的流量类型字段。由于没有被广泛使用,最终这个8位的字段被分为两部分:DS和ECN
  • DS:区分服务字段
  • ECN:显示拥塞通知字段/指示位

这两个字段在后面介绍

总长度字段

  • 是IPv4数据报的总长度(以字节为单位)
  • 通过这个字段和IHL字段,我们知道数据报的数据部分从哪里开始,以及它的长度
  • 由于它是一个16位的字段,所以IPv4数据报的最大长度(包括头部)为65535字节
  • 为什么要设计这个字段:由于一些携带IPv4数据报的低层协议不能(精确)表达自已封装的数据报大小,所以需要在头部中给出总长度字段。例如,以太网会将短帧填充到最小长度(64字节)。虽然以太网最小有效载荷为46字节,但 一个IPv4数据报也可能会更小(20字节)。如果没有提供总长度字段,IPv4实现将无法知道一个46字节的以太网帧是一个IP数据报,还是经过填充的IP数据报,这样可能会导致混淆

IP数据报的分片

  • 尽管可发送一个65535字节的IP数据报,但大多数链路层(例如以太网)不能携带这么大的数据,必须将它分(拆)成更小的片。当一个IPv4数据报被分为多个更小的分片时,每个分片自身仍是一个独立的IP数据报,总长度字段反映具体的分片长度
  • 在IPv6中,主机需要能处理所连接链路MTU大小的数据报,而最小链路MTU为1280字节
  • 很多使用UDP协议传输数据(例如DNS、DHCP等)的应用程序,限制为使用512字节大小的数据,以避免576字节的IPv4限制。TCP根据额外信息选择自己的数据报大小

标志字段、分片偏移字段

  • 在后面介绍

标识字段

  • 帮助标识由IPv4主机发送的数据报
  • 为了避免将一个数据报分片和其他数据 报分片混淆,发送主机通常在每次(从它的一个IP地址)发送数据报时都将一个内部计数器 加1,并将该计数器值复制到IPv4标识字段
  • 这个字段对实现分片很重要。另外还会讨论标志和分片偏移字段。在IPv6中,这个字段显示在分片扩展头部中

生存期(TTL)字段

  • 用于设置一个数据报可经过的路由器数量的上限
  • 发送方将它初始化为某个值(建议为64,但128或255也不少见),每台路由器在转发数据报时将该值减1。当这个字段值达到0时,该数据报被丢弃,并使用一个ICMP消息通知发送方
  • 这可以防止由于出现不希望的路由环路而导致数据报在网络中永远循环

协议字段

  • 该字段包含一个数字,表示数据报有效载荷部分的数据类型
  • 最常用的值为17 (UDP)和6(TCP)
  • 这提供了多路分解的功能,以便IP协议可用于携带多种协议 类型的有效载荷
  • 虽然该字段最初仅用于指定数据报封装的传输层协议,但它现在用于识别 其中封装的协议是否为一种传输层协议。其他封装也是可能的,例如IPv4-in-IPv4 (值为4 )。 数字分配页面[AN]给出了可能的协议字段值的正式列表

头部校验和字段

  • 用来计算IPv4头部,以相当高的概率确定接收的消息或其中的部分内容是否与发送的相匹配
  • Internet校验和:大多数使用校验和的其他Intemet相关协议也使用该校验和计算算法,因此有时称之为Internet校验和。注意,当一个IPv4数据报经过一台路由器时,TTL字段减1带来的结果是其头部校验和必须改变
  • 重点:该字段仅用来计算IPv4头部,这意味着IP协议不检查 IPv4数据报有效载荷(例如TCP或UDP数据)的正确性。为了确保IP数据报的有效载荷部 分已正确传输,其他协议必须通过自已的数据完整性检验机制来检查重要数据。我们看到, 封装在IP中的几乎所有协议(ICMP、IGMP、UDP和TCP)在自已头部中都有一个涵盖其头部和数据的校验和,也涵盖它们认为重要的IP头部的某些部分(一种“违反分层”的形 式)
  • IPv6头部没有任何校验和字段

源IP地址、目的IP地址字段

  • 用来标识一台计算机的一个接口,但组播地址和广播地址不符合本规则
  • IPv4为32位,IPv6为128位

三、IPv6数据报

版本字段:

  • 包含IP数据报的版本号: IPv6为6
  • IPv4头部和IPv6头部除版本字段位置相同外再无其他是一样

DS(区分服务字段)、ECN(显示拥塞通知字段/指示位)

  • 最初的规范制定:IPv4中,在IHL字段之后是一个服务类型(ToS)字段。IPv6中,在版本字段之后是一个等效的流量类型字段。由于没有被广泛使用,最终这个8位的字段被分为两部分:DS和ECN
  • DS:区分服务字段
  • ECN:显示拥塞通知字段/指示位

这两个字段在后面介绍

负载长度字段

  • IPv6头部不支持分片,其长度可由负载长度字段获得
  • 这个字段提供IPv6数据报长度,不包括头部长度, 但扩展头部包括在负载长度中
  • 对于IPv6,负载长度被限制为64KB,而不是整个数据报。另外,IPv6还支持一个超长数据报选项,它至少在理论上提供了可能性,即单个分组的有效载荷可达到4GB (4294967295字节) 

下一头部字段

  • IPv6头部中的下一个头部字段等价于IPv4中的协议字段。它用于指出IPv6头部之后的头部类型
  • 这个字段可能包含由IPv4协议字段定义的任何值,或者是IPv6扩展头部的相关值

跳数限制

  • 类似于IPv4的生存期(TTL)字段

源IP地址、目的IP地址字段

  • 用来标识一台计算机的一个接口,但组播地址和广播地址不符合本规则
  • IPv4为32位,IPv6为128位

四、IPv4校验和

  • Internet校验和是一个16位的数字和,它能以相当高的概率确定接收的消息或其中的部分内容是否与发送的相匹配。注意,Internet校验和算法与常见的循环冗余校验(CRC)不同,后者提供了更强的保护功能
  • 为了给输出的数据报计算IPv4头部校验和,首先将数据报的校验和字段值设置为0。然后,对头部(整个头部被认为是一个16位字的序列)计算16位二进制反码和。这个16位二 进制反码和被存储在校验和字段中。二进制反码加法可通过“循环进位加法”实现:当使用传统(二进制补码)加法产生一个进位时,这个进位以二进制值1加在高位。下图显示了这个例子,消息内容使用十六进制表示

  • 当一个IPv4数据报被接收时,对整个头部计算出一个校验和,包括校验和字段自身的 值。假设这里没有错误,计算出的校验和值为0 (值FFFF的反码)。注意,对于任何不正常 的分组或头部,分组中的校验和字段值不为FFFF。如果是这样,这个和(在发送方的最后一 次反码运算之前)将为0。通过反码加法得到的和不能永远为0,除非所有字节都是0,这在任何合法IPv4头部中都不可能出现。当发现一个头部出错(计算的校验和不为0)时,IPv4 实现将丢弃接收到的数据报。但是,不会生成差错信息。更高层以某种方式检测丢失的数据 报,并在必要时重新传输

Internet校验和的数学性质

  • 在数学上,16位的十六进制值集合y= (0001, …, FFFF)与其反码和运算“+”共同形成一个阿贝尔群。将一个集合和一个运算符组合到一组时,必须符合以下性质:闭包、结 合性、存在一个恒等元素,以及存在可逆。要形成一个阿贝尔(可交换的)群,还必须满足交换性

如果我们仔细观察,可看到所有特性实际上都服从:

  • 关于集合y和组<V,+>,有趣的是我们已删除0000。如果我们将数字0000放人集合y,这时不再是一个组。为了看清这点,我们首先观察0000和FFFF作为0 (加性恒等)出现在使用“+”的运算中的情况。例如,AB12+0000=AB12=AB12+FFFF。但是,在一个组中只能有一个恒等元素。如果我们包含元素12AB,并假设恒等元素为0000,那么我们就需要某个可逆数x′使得( 12AB +x′)= 0000,但我们发现,在y中没有满足此条件的x存在。因此,我们需要排除0000作为中的恒等元素,通过将它从集合y中删除,使得这种结构成为一个满足要求的组。这里仅对抽象代数做一个简单介绍

五、DS字段和ECN字段

DS字段(区分服务字段)

  • 区分服务(称为DiffServ)是一个框架和一组标准,用于支持Internet上不同类型的服务(即不只是尽力而为服务)
  • IP数据报以某种方式(通过预定义模式设置某些位)被标记,使它们的转发不同于(例如以更高的优先级)其他数据报。这样做可能导致网络中排队延时的增加或减少,以及出现其他特殊效果 (可能与ISP收取的特殊费用相关)
  • 区分服务代码点(DSCP):DS字段中的数字称为区分服务代码点(DSCP)。 “代码点”指的是预定义的具有特定含义的位。在通常情况下,如果数据报拥有一个分配的DSCP,它在通过网络基础设施交付过程中会保持不变。但是,某些策略(例如在一段时间内可发送多少个高优先级的分组)可能导致一个数据报中的DSCP在交付过程中改变

DS字段结构

  • 6位DS字段用于保存DSCP,提供对64个代码点的支持。特定DSCP值可通知路由器对接收的数据报进行转发或特殊处理。不同类型的转发处理袁示为每跳行为(PHB),因此DSCP值可有效通知路由器哪种PHB被应用于数据报。DSCP的默认值通常为0,对应于常规的尽力而为的Internet流量。64个可能的DSCP值分为不同用途

DSCP被分为3个池

  • 这个方案供研究人员和操作人员用于实验或本地用途。以0作为结尾的DSCP用于标准用途,以1作为结尾的DSCP用于实验或本地用途。以01作为结尾的DSCP最初打算用于实验或本地用途,但最终会走向标准化

  • 在图5-5中,DS字段中的类别部分包含前3位,并基于较早定义的服务类型的优先级子字段。路由器通常先将流量分为不同类别。常见类别的流量可能有不同的丢弃概率,如果路由器被迫丢弃流量,允许路由器确定首先丢弃哪些流量。3位的类别选择器提供了8个定义的代码点(称为类别选择代码点),它们对应于一个指定最小功能集的PHB,提供与早期的IP优先级相似的功能。它们称为类别选择兼容的PHB,目的是支持部分兼容的最初定义的IP优先级子字段[RFCO791]。xxxOOO形式的代码点总被映射为这种PHB,但是其他值也可映射到相同PHB
  • 表5-3给出了类别选择器的DSCP值,以及[RFCO791]定义的IP优先级字段的相应术语。保证转发(AF)组对固定数量的独立AF类别的IP分组提供转发,它有效地概括了优先级的概念。某个类别的流量与其他类别的流量分别转发。在一个流量类别中,数据报被分配一个丢弃优先级。在一个类别中,较高丢弃优先级的数据报优先于那些较低丢弃优先级的数据报处理(即以较高优先级转发)。结合流量类别和丢弃优先级,名称AFij对应于保证转发类别i的丢弃优先级j。例如,一个标记为AF32的数据报的流量类别为3,丢弃优先级为2

  • 加速转发(EF)提供了非拥塞的网络服务,也就是说,EF流量应享受较低的延时、抖动和丢包率。直观地说,EF流量要求路由器的输出速率至少比输入速率大。因此,在一台路由器的队列中,EF流量仅排在其他EF流量之后

ECN字段

  • 当通过一台具有内部排队流量的路由器时,头部中的2位ECN位用于为数据报标记拥塞标识符
  • 一台持续拥塞的具有ECN感知能力的路由器在转发分组时会设置这两位
  • 这种功能的设计思路是,当一个被标记的分组被目的节点接收时,有些协议(例如TCP)会发现分组被标记并将这种情况通知发送方,发送方随后会降低发送速度,这样可在路由器因过载而被迫丢弃流量之前缓解拥塞。这种机制是避免或处理网络拥塞的方法之一

服务类型字段和流量类型字段

  • 起初DS字段和ECN字段在IPv4中被合并为服务类型字段,在IPv6中被合并为流量类型字段。尽管原来的TbS和流量类别字节没得到广泛支持,但DS字段结构仍提供了一些对它们 的兼容能力
  • 为了对其如何工作有更清楚的了解,我们首先回顾服务类型字段和流量类型字段

  • D、 T和R子字段表示数据报在延时、吞吐量和可靠性方面得到良好的处理。相应值为1表示更好的处理(分别为低延时、高吞吐量和高可靠性)。优先级取值范围是从000 (常规) 到111 (网络控制),表示优先级依次递增。它们都基于一个称为多级优先与抢占 (MLPP)的方案,该方案可追溯到美国国防部的AUTOVON电话系统,其中较低优先级的呼叫可被更高优先级的呼叫抢占。这些术语仍在使用,并被纳人VoIP系统中

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董哥的黑板报

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值