计算机网络 网络层 PART2

4.2.5 IP数据报的格式

在TCP/IP的标准中,各种数据常常以32位为单位来描述。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8jtnkHKy-1618473123861)(https://raw.githubusercontent.com/QingYuAnWayne/PicStorage/master/20201027204354.png)]

前部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,长度可变/

1.IP数据报首部的固定部分中的各字段

(1)版本 占4位,指IP协议的版本。通信双方所使用的IP协议的版本必须一致。IPv4的版本号为4,IPv6的版本号为6

(2)首部长度 占4位,可表示的最大十进制数值是15. 首部长度字段所表示数的单位是32位字(4字节)。IP首部的固定长度是20字节,故首部长度字段最小值为5,最大值为15. 当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此IP数据报的数据部分永远在4字节的整数倍时开始。

(3)区分服务 占8位,用来获得更好的服务,但实际上一直没有使用过。

(4)总长度 总长度指首部与数据之和的长度,单位为字节。总长度字段为16位,因此数据报最大长度为 2 16 − 1 = 65535 2^{16}-1=65535 2161=65535字节。然而极少遇到这么长的数据报。

IP层下面的每一种数据链路层协议都规定了一个数据帧中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。当一个IP数据报封装成链路层的帧时,此数据报的总长度一定不能超过下面的数据链路层所规定的MTU值。若所传送的数据报长度超过数据链路层的MTU值,就必须把过长的数据报进行分片处理。

IP协议规定,在互联网中所有的主机和路由器,必须能够接受长度不超过576字节的数据报。即上层交下来的数据长度有512字节,加上最长的IP首部60字节,再加上4字节的富余量,就得到576字节。

在进行分片时,数据报首部中的“总长度”字段是指分片后每一个分片的首部长度与该分片的数据长度的总和。

(5)标识 占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1.并将此值赋给标识字段。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。

(6)标志 占3位,但目前只有两位有意义。

  • 最低位记为MF(More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。
  • 中间一位记为DF (Don’t Fragment) 。意思是“不能分片”。只有当DF=0时才允许分片。

(7)片偏移 占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置,即相对于用户数据字段的起点。片偏移以8个字节为偏移单位。也就是说,每个分片的长度一定是8字节(64位)的整数倍。

(8)生存时间(TTL Time To Live) 占8位。表明数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在互联网中兜圈子。现在TTL字段的功能改为**“跳数限制”(但名称不变)**。路由器在每次转发数据报之前就把TTL值减1。如TTL值减小到0,就丢弃这个数据报,不再转发。TTL的单位是跳数,最大是255。

(9)协议 占8位,指出此数据报携带的数据是何种协议。

(10)首部校验和 占16位。**这个字段只检验数据报的首部,但不包括数据部分。**因为数据报每经过一个路由器,路由器都要重新计算一下首部校验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。

(11)源地址 占32位

(12)目的地址 占32位

4.2.6 IP层转发分组的流程

4.3 划分子网和构造超网

4.3.1 划分子网

1.从两级IP地址到三级IP地址

IP地址的设计确实不够合理:

  • IP地址空间的利用率有时很低

  • 给每一个物理网络分配一个网络号会使路由表太大因而使网络性能变坏

  • 两级IP地址不够灵活

    子网号字段:使两级IP地址变成三级IP地址。这样的做法叫做划分子网,划分子网已成为互联网的正式标准协议。

划分子网的基本思路如下:

  • 一个拥有许多物理网络的单位,可以将所属的物理网络划分为若干个子网。本单位以外的网络看不见这个网络是由多少个子网组成,因为这个单位对外仍然表现为一个网络

  • 划分子网的方法是从网络的主机号借用若干位作为子网号(subnet-id),当然主机号也就相应减少了同样的位数。于是两级IP地址在本单位内部就变成三级IP地址:网络号、子网号和主机号。也可以用以下记法来表示:

    ​ IP地址 ::= {<网络号>,<子网号>,<主机号>}

  • 路由器在收到IP数据报后,再按目的网络号和子网号找到目的子网,把IP数据报交付目的主机。

划分子网只是把IP地址的主机号这部分进行再划分,而不改变IP地址原来的网络号。

2.子网掩码

从IP数据报的首部无法看出源主机或目的主机所连接的网络是否进行了子网划分。因为32位的IP地址本身以及数据报的首部都没有包含任何子网划分的信息。因此必须另想办法,这就是使用子网掩码(subnet mask

把三级IP地址的子网掩码和收到的数据报的目的IP地址逐位相与,可以立即得出网络地址。

子网掩码是一个网络或一个子网的重要属性。路由器在和相邻路由器交换路由信息时,必须把自己所在网络的子网掩码告诉相邻路由器。在路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码。

子网数是根据子网号计算出来的。若子网号有n位,则共有 2 n 2^n 2n种可能的排列。除去全1和全0这两种情况,就得出子网数。而子网号的位数没有0,1,15,16这四种情况,因为没有意义。

随着无分类域间路由CIDR的广泛使用,现在全1和全0的子网号也可以使用了

划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值