首页 > 其他分享 >《计算机网络微课堂》4-7 IPv4数据报的首部格式

《计算机网络微课堂》4-7 IPv4数据报的首部格式

时间:2024-05-28 09:12:05浏览次数:18  
标签:字节 首部 IP 计算机网络 字段 IPv4 分片 数据

本节课我们介绍 IPv4 数据报的首部格式,为了简单起见,之后我们将 IPv4 数据报简称为 IP 数据报,而不指出、版本号。IP 数据报的首部格式及其内容是实现 IP 协议主要功能的基础,因此我们有必要搞清楚这部分内容,如图所示:

  • 这是 IP 数据报的首部格式,它由 20 字节的固定部分和最大 40 字节的可变部分组成。所谓固定部分是指每个 IP 数据报首部都必须包含的部分,而某些 IP 数据报的首部除了包含 20 字节的固定部分外,还包含一些可选的字段来增加 IP 数据报的功能
  • IP 数据报的首部常以 32 个比特为单位进行描述,图中的每一行都由 32 比特也就是 4 个字节构成,每个小格子称为字段或者域
  • 每个字段或某些字段的组合,用来表达 IP 协议的相关功能
  • 这是版本字段,该字段占 4 个比特,用来表示 IP 协议的版本,通信双方使用的 IP 协议的版本必须一致,目前广泛使用的 IP 协议的版本号为 4,即 IPv4
  • 这是首部长度字段,该字段占 4 个比特,用来表示 IP 数据报首部的长度,该字段的取值以四字节为单位,最小十进制取值为 5,表示 IP 数据报首部只有 20 字节的固定部分;最大十进制取值为 15,表示 IP 数据报首部包含 20 字节的固定部分和最大 40 节的可变部分
  • 这是可选字段,该字段的长度从 1 个字节到 40 个字节不等,用来支持排错、测量以及安全措施。可选字段增加了 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的,这就增加了每一个路由器,处理 IP 数据报的开销,实际上可选字段很少被使用,
  • 这是填充字段,该字段用来确保首部长度为四字节的整数倍,使用全 0 进行填充。我们之前刚刚介绍过首部,长度字段是以四字节为单位的,换句话说,IP 数据报的首部长度一定是四字节的整数倍。由于首部中的可选字段的长度,从 1 个字节到 40 个字节不等,那么当 20 字节的固定部分加上 1~40 个字节长度不等的可变部分,会造成首部长度不是四字节的整数倍时,就用取值为全零的填充字段,填充相应的字节,以确保 IP 数据报的首部长度是四字节的整数倍。
  • 这是区分服务字段,该字段占 8 个比特,用来获得更好的服务。该字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998 年因特网工程任务组 IEFT 把这个字段改名为区分服务,利用该字段的不同数值,可提供不同等级的服务质量。只有在使用区分服务时,该字段才起作用,一般情况下都不使用该字段

这是总长度字段,该字段占 16 比特,用来表示 IP 数据报的总长度,也就是首部和数据载荷的长度总和,最大取值为十进制的 65535,以字节为单位,需要注意的是在实际应用中很少传输这么长的 IP 数据报。接下来我们来举例说明,首部长度字段和总长度字段的区别与联系

这是一个 IP 数据报,它由首部和数据载荷两部分构成。假设首部中的首部长度字段的二进制取值为 0101,则可以计算出 IP 数据报的首部长度,也就是用首部长度字段的取值乘以四字节单位共 20 字节。

假设首部中的总长度字段的二进制取值为 0000 0011 1111 1100,则可以计算出 IP 数据报的总长度,也就是在总长度字段的取值后,添加字节的单位共 1020 个字节,进而可以计算出数据载荷的长度,也就是用 IP 数据报的总长度减去 IP 数据报的首部长度,结果为 1000 个字节

接下来我们介绍标识,标志,片偏移这三个字段,他们共同用于进行 IP 数据报分片,这是网际层封装出的 IP 数据报,它将在数据链路层封装成帧。每一种数据链路层协议都规定了帧的数据载荷的最大程度,称为最大传输单元 MTU。例如以太网的数据链路层规定,MTU 的值为 1500 个字节,如果某个 IP 数据报的总长度超过 MTU 时,将无法封装成帧,需要将源 IP 数据报分片为更小的 IP 数据报,再将各分片 IP 数据报封装成帧。

接下来我们介绍标识,标志,片偏移这三个字段,他们共同用于进行 IP 数据报分片,这是网际层封装出的 IP 数据报,它将在数据链路层封装成帧。每一种数据链路层协议都规定了帧的数据载荷的最大程度,称为最大传输单元 MTU。例如以太网的数据链路层规定,MTU 的值为 1500 个字节,如果某个 IP 数据报的总长度超过 MTU 时,将无法封装成帧,需要将源 IP 数据报分片为更小的 IP 数据报,再将各分片 IP 数据报封装成帧;

  • 标识字段,占 16 个比特,属于同一个数据报的各分片数据报,应该具有相同的标识,IP 软件维持一个计数器,每产生一个 IP 数据报,计数器的值就要加一,并将此值赋给标识字段
  • 标志字段占三个比特,各比特含义如下,DF 比特表示是否允许分片置一表示不允许分片,清 0 表示允许分片。MF 比特表示本分片后面是否还有分片?置一表示本分片后面还有分片,清 0 表示本分片就是最后一个分片,还有一个保留位,必须设置为 0
  • 片偏移字段占 13 个比特,指出分片数据报的数据载荷部分偏移,其在源数据报的位置有多远,片偏移以 8 个字节为单位

接下来我们举例说明 IP 数据报如何进行分片。假设有这样一个 IP 数据报,它由 20 字节的固定首部和 3800 字节的数据载荷两部分构成,也就是说该 IP 数据报的总长为 3820 个字节。假设使用以太网传送该 IP 数据报,以太网的最大传送单元 MTU 为 1500 个字节,也就是以太网的数据载荷部分,最大为 1500 个字节,无法封装 3820 字节长的 IP 数据报,因此需要把该 IP 数据报分片成几个更小的 IP 数据报,每个长度不能大于 1500 个字节,然后再将每个分片 IP 数据报封装成一个以太网的帧进行传输

为了更好的描述后续的分片工作,我们将源 IP 数据报数据载荷部分的每一个字节都编上号,第一个字节编号为 0,最后一个字节编号为 3799,我们可将源 IP 数据报的数据载荷分成三个更小的分片,第一个分片从 0 号字节到 1399 号字节,共 1400 个字节。第二个分片,从 1400 号字节到 2799 号字节,共 1400 个字节。第三个分片,从 2800 号字节到 3799 号字节,共 1000 个字节

分片结束后,给每个分片重新添加一个首部,使之成为 IP 数据报。请同学们思考这样一个问题,给各分片添加的首部是否完全相同,我们来一起填一下下面这张表格。源 IP 数据报首部中的总长度字段的十进制取值为 3800+20,标识字段的 10 进制取值为 12345,MF 比特的取值为 0,表示后面没有分片数据报,这就是最后一个分片数据报,DF 比特的取值为 0,表示该 IP 数据报允许被分片,由于这是未分片的源 IP 数据报,因此片偏移为 0。

我们来填写分片一,IP 数据报首部中相关字段的值,总长度字段的十进制取值为 1400+20,其中 1400 字节是分片的长度,20 字节是固定首部的长度,标识字段的十进制取值与源 IP 数据报的相同,由于该分片不是最后一个分片,因此 MF 比特的取值为一,表示该分片后还有分片,该分片 IP 数据报允许被再次分片,因此 DF 比特的取值为 0。该分片 IP 数据报数据载荷部分的第一个字节,就是源 IP 数据报数据载荷部分的第一个字节,因此片偏移字段的取值为 0÷8。除以八的原因是片偏移字段,以八字节为单位。

接下来请同学们填写分片二 IP 数据报首部中相关字段的值,相信大家都可以正确完成。分片二 IP 数据报、首部装这几个相关字段的值,只有片偏移字段的值,与分片一 IP 数据报的不同。

我们再来填写分片三 IP 数据报首部装相关字段的值,总长度字段的十进制取值为 1000+20,其中 1000 字节是分片的长度,20 字节是固定首部的长度,标识字段的十进制取值,与源 IP 数据报的相同,由于该分片就是最后一个分片,因此 MF 比特的取值为 0,表示该分片后没有其他分片。该分片 IP 数据报允许被再次分片,因此 DF 比特的取值为 0。该分片 IP 数据报数据载荷的第一个字节是源 IP 数据报数据载荷中编号为 2800 的字节,因此片偏移字段的取值为 2800 ÷ 8。

现在假定分片二的 IP 数据报,经过某个网络时还需要再进行分片,其中一个分片长度为 800 字节,另一个分片长度为 600 字节,分片结束后给每个分片重新添加一个首部,使之成为 IP 数据报。接下来请同学们填写该表格,相信大家都可以正确完成。

再来看生存时间字段,该字段占 8 个比特,最初以秒为单位,最大生存周期为 255 秒,路由器转发 IP 数据报时,将 IP 数据报首部中的该字段的值,减去 IP 数据报在本路由器上所耗费的时间,若不为零就要转发,否则就丢弃。

现在以跳数为单位,路由器转发 IP 数据报时,将 IP 数据报首部中的该字段的值减一,若不为零就转发,否则就要丢弃。

接下来我们来举例说明,生存时间字段的作用。假设采用如下图所示的网络拓扑,路由器 R1,R2,R3,各自的路由表如图所示。为了简单起见,我们只给出了各路由器路由表中的由人工配置的静态路由条目,例如路由器 R 中的这条静态路由条目,他指出了 IP 数据报要到达网络 N2,下一跳,需要转发给路由器 R3。

假设我们在人工配置这条静态路由条目时,错将下一跳配置成了 R1,这会导致将去往网络 N2 的 IP 数据报,错误的转发给路由器 R1。我们来看看会出现什么问题。

假设某个 IP 数据报从网络 N1 发网络 N2,该 IP 数据报到达 R1 号,R1 进行查表转发,发现了匹配的路由条目,其下一跳指示转发给 R2,于是 R1 将该 IP 数据报转发给了 R2,R2 收到该 IP 数据报后进行查表转发,发现了匹配的路由条目,其下一跳指示转发给 R1,于是 R 将该 IP 数据报又转发回来 R1。

很显然形成了路由环路。如果没有其他措施,IP 数据报将在路由环路庄永久兜圈。现在相信大家能够更好的理解 IP 数据报首部中生存时间字段的作用了,那就是确保 IP 数据报不会在网络中永久兜圈。IP 数据报每经过一个路由器其生存时间的值被减 1,当减少到 0 时,IP 数据报将被路由器丢弃。

再来看协议字段,该字段占 8 个比特,用来指明 IP 数据报的数据部分是何种协议数据单元。常用的一些协议和相应的协议字段值,如下表所示。我们来举例说明,这是一个 IP 数据报。

当首部中协议字段的取值为 1 时,表明数据部分是 ICMP 报文,也就是用 ICMP 协议封装的协议数据单元。

当首部中协议字段的取值为 60,表明数据部分是 TCP 报文段,也就是用 TCP 协议封装的协议数据单元。

这是首部检验和字段,该字段占 16 比特,用来检测 IP 数据报首部,在传输过程中是否出现差错,所采用的检错码比循环冗余检错码简单,称为因特网检验和,我们就不再赘述了,有兴趣的同学可自行查阅相关资料。

IP 数据报每经过一个路由器,路由器都要重新计算首部检验和。因为某些字段,例如生存时间,标志,片偏移等的取值可能会发生变化。由于 IP 层本身并不提供可靠传输的服务,并且计算首部检验和是一项耗时的操作,因此在 IPV6 中路由器不再计算首部检验和,从而更快转发 IP 数据报。

这是计算机专业考研全国统考计算机网络部分,2018 年题 47 的第 2 问,我们来一起分析一下。

这是题目所给的。销售部装某个主机发送到 IP 分组,总长度为 1500 个字节,题目给出 IP 分组的头部长度为 20 字节,因此数据载荷部分因为 1480 个字节,为了方便描述我们将数据载荷中的每一个字节都编上号,第一个字节的编号为 0,最后一个字节的编号为 1479,

题目给出由于该 IP 数据报通过路由器的 F1 接口转发时,受到所在网络的最大传送单元 MTU 为 800 字节的限制,需要进行分片。换句话说,分片后的每一个 IP 数据报的最大长度可以是 800 字节,假设这是分片一的 IP 数据报,这是它的 20 字节固定首部,为了符合题目的要求,尽可能分为最大片,我们将分片长度取为 780 个字节,其第一个字节的编号为 0,最后一个字节的编号为 779,偏移量等于 0÷8,结果是 0,

将剩余的 700 字节作为分片二,其第一个字节的编号为 780,最后一个字节的编号为 1479,给其添加相应的 20 字节首部,使之成为分片二的 IP 数据报,片偏移量等于 780÷8,结果为 97.5。

由于偏移量必须为整数,因此这种分片方案不行,我们可将分片的最大长度取为小于 780,且能整出 8 的最大整数,具体方法是将 780÷8 的结果向下取整,然后再乘以 8,结果为 776。

这样分片一的长度为 776 个字节,剩余 704 个字节作为分片 2,分片一的最后 1 个字节编号为 775,分片二的第一个字节编号为 776,这样分片二的片偏移量等于 776÷8,结果为 97。

再来看 2011 年的题 47 的第一问和第四问。

尽管到目前为止,我们还未学习外部请求是用什么应用层协议封装的,也不知道在运输层还会用什么协议进行封装,但是我们知道在网际层一定会用 IP 协议对其进行封装,使之成为 IP 分组。

Web 服务器的 IP 地址就填写在 IP 分组头中的目的 IP 地址字段,IP 分组,还要封装成以太网帧才能发送在 IP 分组头中,目的 IP 地址字段前,还有 16 个字节的内容,在以太网帧中数据载荷前还有 14 字节的内容,因此可知在以太网帧中,从第 31 个字节开始的 4 个字节,实际上就是目的 IP 地址的内容。

题目所给的以太网数据,帧的第一列数据,实际上并不是以太网帧的内容,仅仅作为行号,其增量为 16,表示每行有 16 个字节的内容,这些是以太网帧内容的 16 进制形式,这些是以太网帧内容的 ASCII 这些是以太网帧的前 30 个字节。接下来的 4 个字节就是 WEB 服务器的 IP 地址,其点分 10 进制形式为 64.170.98.32。

从图中可知,主机的默认网关就是路由器 R,主机会将 web 请求发送给默认网关,由默认网关将 WEB 请求转发到因特网。因此以太网帧头中的目的 MAC 地址字段,封装的就是默认网关的 MAC 地址,如图所示。

而目的 MARK 地址字段就是以太网帧的前 6 个字节,其内容就是默认网关的 MAC 地址,写成 MARK 地址的形式为 00-21-27-21-51-EE

再来解答第四问,IP 分组经过路由器 R 时生存时间字段的值被减一,首部检验和会被重新计算,若 IP 分组总长度大于最大传送单元,MTU 的值,则需要进行分片。此时总长度字段、标志字段、片偏移字段都需要修改。

小结:

标签:字节,首部,IP,计算机网络,字段,IPv4,分片,数据
From: https://www.cnblogs.com/PeterJXL/p/18214959

相关文章

  • 计算机网络中的三种通信方式
    计算机网络是现代信息技术的基石,它使得计算机之间可以进行数据传输和共享资源。在计算机网络中,通信方式是指数据在通信系统中的传输方式。根据数据传输的方向和模式,通信方式可以分为三种:单工、半双工和全双工。这三种通信方式各有特点,适用于不同的应用场景。本文将详细介绍这三......
  • 《计算机网络微课堂》3-8 集线器与交换机的区别
    本节课我们介绍集线器与交换机的区别,‍‍我们首先来看早期的总线型以太网,这是我们之前课程中经常用来举例的总线型以太网,‍‍他最初使用粗铜轴电缆作为传输媒体,后来演进到使用价格相对便宜的细同轴电缆。当初认为‍‍这种连接方法既简单又可靠,因为在那个时代普遍认为有源器件不可......
  • 《计算机网络微课堂》3-9 以太网交换机自学习和转发帧的流程
    在上节课中,我们对比了在物理层扩展以太网的集线器,和在数据链路层扩展以太网的交换机。本节课我们介绍以太网交换机自学习和转发帧的流程,以太网交换机工作在数据链路层,当然也包括物理层,需要说明的是目前市场上也有包含网络层部分功能的交换机,称为三层交换机。以太网交换机收到帧......
  • 《计算机网络微课堂》3-10 以太网交换机的生成树协议 STP
    我们介绍以太网交换机生成树协议的基本概念。请大家思考一下,应该如何提高以太网的可靠性呢?例如如图所示的以太网,由三台交换机互联而成,每个交换机上都连接有一些主机,为了简单起见,我们只画出了每个交换机上连接的一台主机,如果交换机A与B之间的链路出现了故障,则交换机B上连接......
  • 《计算机网络微课堂》3-11 虚拟局域网 VLAN
    本节课我们介绍虚拟局域网VLAN的基本概念。‍3.11.1虚拟局域网VLAN概述在之前课程中我们已经介绍过了以太网交换机自学习和转发帧的流程,‍‍以及为避免网络环路而产生的生成树协议。以太网交换机工作在数据链路层,‍‍也包括物理层,使用一个或多个以太网交换机互联起来的交......
  • 《计算机网络微课堂》3-7-2 IP地址
    在上节课中我们介绍了MAC地址的相关知识,‍‍本节课我们介绍IP地址的相关知识,需要说明的是IP地址属于网络层的范畴,‍‍而非数据链路层的范畴。之所以在数据链路层这一章的讲解中引入IP地址,‍‍是因为在我们日常的大多数网络应用中,属于数据链路层的MAC地址和属于网络层的......
  • 《计算机网络微课堂》3-7-1 MAC地址
    从本节课开始,‍‍我们将用三次课的时间分别介绍MAC地址、IP地址、ARP协议:MAC地址是以太网的MAC层所使用的地址IP地址‍‍是TCP/IP体系结构网系层所使用的地址。ARP协议属于TCP/IP体系结构的网际层,‍‍其作用是已知设备所分配到的IP地址,使用ARP协议,就可以通过......
  • 《计算机网络微课堂》3-7-3 ARP 协议
    在之前的课程中,‍‍我们分别介绍了属于数据链路层范畴的MAC地址和属于网络层范畴的IP地址,‍‍以及数据包在传输过程中IP地址和MAC地址的变化情况之后,我们提出了这样一个问题,‍‍那就是如何通过IP地址找到其相应的IP地址?‍‍这就是本节课我们将要介绍的地址解析协议,ARP......
  • 《计算机网络微课堂》1-5 计算机网络的性能指标
    本节课我们介绍计算机网络的性能指标,性能指标可以从不同的方面来度量计算机网络的性能。常用的计算机网络性能指标有8个:速率、带宽、吞吐量、时延、时延带宽积,往返时间、利用率,丢包率。‍速率首先介绍速率。为了能够更好的理解速率,我们需要先了解比特:比特是计算机中数据量的......
  • 《计算机网络微课堂》1-6 计算机体系结构
    常见的计算机网络体系结构从本节课开始,我们要用4次课的时间来介绍有关计算机网络体系结构的知识,具体包含以下内容:一,常见的计算机网络体系结构二,计算机网络体系结构分层的必要性三,计算机网络体系结构分层思想举例四,计算机网络体系结构中的专用术语‍计算机网络体系结构......