IPv4数据报


网际协议版本4(英语:Internet Protocol version 4IPv4),又称互联网通信协议第四版,是网际协议开发过程中的第四个修订版本,也是此协议第一个被广泛部署的版本。IPv4是互联网的核心,也是使用最广泛的网际协议版本,其后继版本为IPv6,直到2011年,IANA IPv4位址完全用尽时,IPv6仍处在部署的初期

[TOC]

网络层的主要任务是实现网络互连,进而实现数据包在网络之间的传输

实现网络层的任务,需要解决以下主要问题:

  1. 网络层向运输层提供怎样的服务
  2. 网络层寻址问题
  3. 路由选择问题

IPV4数据报的首部形式

image-20210404154103172

  1. 首部长度:占4比特,表示IP数据报首部的长度,该字段的取值以4字节为单位。

    1. 最小十进制取值为5,表示IP数据报首部只有20字节固定部分
    2. 最大十进制取值为15,表示IP数据报首部包含20字节固定部分和40字节的可变部分
  2. 可选字段:长度从1到40字节不等,用来支持排错,测量及安全措施

  3. 填充字段:确保首部长度为4字节的整数倍,使用全0进行填充

  4. 总长度:占16比特,表示IP数据报的总长度(首部+数据载荷),最大取值65535字节

  5. 标识、标志、片偏移:共同用于IP数据报分片,当IP数据报长度超过MUT(首部+数据载荷)时将数据报分成几份

    1. 标志:占3比特,各比特含义如下:
      1. DF位:1表示不允许分片。0表示允许
      2. MF位:1表示后面还有分片,0表示这是最后一个分片
      3. 保留位:必须为0
    2. 标识:占16比特,属于同个数据报的数据报分片应该具有相同的标识。IP软件维持一个计数器,每产生一个数据报,计数器值加1,并将该值赋给标识字段
    3. 片偏移:占13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有几个单位
  6. 生存时间TTL:8比特,路由器转发IP数据报时,将IP数据报首部中的该字段的值减去IP数据报在本路由器所耗费的时间,若不为0就转发,否则就丢弃

  7. 协议:占8比特,指明IPv4数据报部分是何种协议数据单元,常用的一些协议和相应的协议字段值如下

    1. ICMP:1
    2. IGMP:2
    3. TCP:6
    4. UDP:17
    5. IPv6:41
    6. OSPF:89
  8. 首部检验和:占16比特,用来检测首部在传输过程中是否出现差错,成为因特网检验和,IPv6中路由器不在计算首部校验和,从而更快的转发IP数据报。由于转发过程中标识等字段可变,所有首部校验和可变

IPv4地址概述

因为32比特的IPv4地址不方便阅读、记录以及输入等,因此IPv4地址采用点分十进制表示方法以方便用户使用

将32比特的IPv4按每8位分为一组,写出每组的十进制数,在四个组间加上小数点

分类编址的IPv4地址:

  1. A类地址:8位网络号,24位主机号,网络号的最高位固定位0
  2. B类地址:16位网络号,16位主机号,网络号的最高两位固定为10
  3. C类地址:24位网络号,8位主机号,网络号的最高三位固定为110
  4. D类地址:多播地址. 网络号的最高四位固定为1110
  5. E类地址:保留为今后使用,网络号的最高四位固定为1111

只有A,C,B类地址可分配给主机或路由器的各接口

A类地址:最大网络号127作为本地唤回测试地址,不指派。最小网络号0,保留不指派。可指派的网络数量是$2^8 - 2 = 126$,则可配分的IP地址位$2^{24} - 2 = 16777214$(减去2是除去主机号全0的网络地址和全1的广播地址)

B类地址:最小网络号也是第一个可指派的网络号128.0。最大网络号也是最后一个可指派网络号为191.255。可指派的网络号为$2^{(16-2)} = 16384$,每个网络可指派的IP地址为$2^{16} - 2 = 65534$

C类地址:最小网络号也是第一个可指派的网络号为192.0.0。最大网络号也是最后一个可指派网络号为223.255.255。可指派的网络号为$2^{(24-3)} = 2097152$。每个网络可指派的IP地址为$2^8 - 2 = 254$

一些特殊的IP地址

地址0.0.0.0是一个特殊的IPv4地址,只能作为源地址使用,表示“在本网络上的本主机”,封装有DHCP DIscovery报文的IP分组的源地址使用0.0.0.0,不能作为目的地址

受限广播地址:地址255.255.255.255是一个特殊的IPv4地址,只能作为目的地址使用,表示”在本网络上进行进行广播“,各路油器不转发

直接广播地址是主机号全为1的地址

127.X.X.X是环回地址,127.0.0.1 特指本机地址。

224.0.0.1 组播地址。从224.0.0.0到239.255.255.255都是这样的地址。224.0.0.1特指所有主机,224.0.0.2特指所有路由器。

0.X.X.X。该系列地址仅用来标识主机

169.256.X.X。该系列地址是本地地址,是由操作系统分配,路由器不转发

划分子网的IPv4地址

为新增网络申请新的网络号会带来以下弊端:

  1. 需要等待和花费更多费用
  2. 会增加其他路由器中路由表记录的数量
  3. 浪费原有网络中剩余的大量IP地址

所以我们可以从主机号部分借用一部分作为子网号

计算机如何知道分类地址中主机号有多少比特被用作子网号?

32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号

  1. 子网掩码使用连续的比特1来对应网络号和子网号
  2. 子网掩码使用连续的比特0来对应主机号
  3. 将划分子网的IPv4地址与相对应的子网掩码进行逻辑与运算就可以得到IPv4地址所在的子网的网络地址

默认子网掩码:指在未划分子网的情况下使用子网掩码。A类地址未255.0.0.0,B类地址为255.255.0.0,C类地址为255.255.255.0

无分类编址的IPv4地址

无分类域间路由选择CIDR。

  1. CIDR消除了传统A,B ,C类地址以及划分子网的概念
  2. CIDR可以更有效地分配IPv4的地址空间

CIDR使用斜线记法,在IPv4地址后面加上斜线”/“,在斜线后面写上网络前缀(网络号)所占的比特数量

CIDR实际上是将网络前缀都相同的连续IP地址组成一个”CIDR地址块“

只要知道CIDR地址块的任何一个地址,就可以知道该地址块的全部细节:

  1. 地址块的最小地址
  2. 地址块的最大地址
  3. 地址块的地址数量
  4. 地址块聚合某类网络的数量
  5. 地址掩码

路由聚合(构造超网)

如何构造:找出路由表中目的地址的共同前缀,然后将找到的共同前缀的后一个字节写成2进制的形式,找出地址的共同前缀,然后计算共同前缀的比特位,并将共同前缀写成点分十进制的形式。在斜杠后写上刚才计算的比特位,得到聚合地址块

网络前缀越长,地址块越小,路由越具体

若路由器查表转发分组时发现有多条路由可选,则选择网络前缀最长的那条,因为这样的路由更具体

IPv4的应用规划

定长子网掩码FLSM

变长子网掩码VLSM

在一个网络划分成n个子网时,计算出每个子网所需的主机地址,路由器接口地址,网络地址,广播地址,算出所有需要的主机号数目。得出每个子网所需主机号的位数,计算出每个子网对应的网络前缀位数。

分配过程中,每个子块的起点位置不能随意选取,只能选取块大小整数倍地址作为起点,一般先给大的子块分配

IP协议的主要特点:

①IP协议是一种无连接、不可靠的分组传送服务的协议。

②IP协议是点-点线路的网络层通信协议。

③IP协议屏蔽了网络在数据链路层、物理层协议与实现技术上的差异。