IPv4
IPv4分组
IPv4 即现在普遍使用的 IP(版本4)。IP 定义数据传送的基本单元——IP 分组及其确切的数据格式。IP 也包括一套规则,指明分组如何处理、错误怎样控制。特别是 IP 还包含非可靠投递的思想,以及由此关联的分组路由选择的思想。
IPv4 分组的格式
一个 IP 分组由首部和数据两部分组成。首部前一部分的长度固定,共 20 B,是所有 IP 分组必须有的。在首部固定部分的后面是一些可选字段,其长度可变,用来提供错误检测及安全等机制。IP 数据报的格式如图所示:
IP 首部的部分主要字段含义如下:
版本
指 IP 的版本,目前广泛使用的版本号为 4
首部长度
占 4 位
长度的单位是 32 位,最大值为 60 B(15 × 4 B)
最常用的首部长度是 20 B,此时不使用任何选项(即可选字段)
总长度
占 16 位
指首部和数据之和的长度,单位为字节
标识
占 16 位
它是一个计数器,每产生一个数据报就加 1,并赋值给标识字段。但它并不是“序号”,因为 IP 是无连接服务
标志
占 3 位
标志字段的最低位为 MF,MF = 1 表示后面还有分片,MF = 0 表示最后一个分片
标志字段中间的一位是 DF,只有当 DF = 0 时才允许分片
片偏移
占 13 位
它只出较长的分组在分片后,某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位,即每个分片的长度一定是 8 B(64 位)的整数倍
生存时间(TTL)
占 8 位
数据报在网络中可通过的路由器数的最大值,路由器在转发分组前,先把 TTL 减 1,若 TTL 被减为 0,则该分组必须丢弃
协议
占 8 位
指出此分组携带的数据使用何种协议,即分组的数据部分应交给哪个传输层协议,如 TCP、UDP 等。其中值为 6 表示 TCP,值为 17 表示 UDP
首部校验和
占 16 位
IP 数据报的首部校验和只校验分组的首部,而不校验数据部分
源地址
发送方的 IP 地址
目的地址
接收方的 IP 地址
网络层转发分组的流程
- 从数据报的首部提取目的主机的 IP 地址 D,得出目的网络地址 N
- 若网络 N 与此路由器直接相连,则把数据报直接交付给目的主机 D,这称为路由器的直接交付;否则是间接交付,执行步骤 3
- 若路由表中有目的地址为 D 的特定主机路由(对特定的目的主机指明一个特定的路由,通常是为了控制或测试网络),则把数据报传送给路由表中所指明的下一跳路由器;否则执行步骤 4
- 若路由表中有到达网络 N 的路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行步骤 5
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行步骤 6
- 报告转发分组错误
IPv4 地址
连接到因特网上的每台主机(或路由器)都分配一个 32 bit 的全球唯一标识符,即 IP 地址
传统的 IP 地址是分类的地址,分为 A、B、C、D、E 五类
无论哪类 IP 地址,都由网络号和主机号组成,简单来说就是网络地址和主机地址
分类的 IP 地址如下图所示:
在各类 IP 地址中,有些 IP 地址具有特殊用途,不用做主机的 IP 地址:
- 主机号全为 0 表示网络本身,如 202.98.174.0
- 主机号全为 1 表示本网络的广播地址,如 202.98.174.255
- 127.0.0.0 保留为环路自检地址,此地址表示任意主机本身,目的地址为环回地址的 IP 数据报永远不会出现在任何网络上
- 32 位全为 0,即 0.0.0.0 表示本网络上的本主机
- 32 为全为 1,即 255.255.255.255 表示整个 TCP/IP 网络的广播地址
实际使用时,用于路由器对广播域的隔离,255.255.255.255 等效为本网络的广播地址。
IP 地址有以下重要特点:
IP 地址是一种分等级的地址结构,分两个等级的好处是:
- IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配,这样就方便了 IP 地址的管理
- 路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间
IP 地址是标志一个主机(或路由器)和一条链路的接口
当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的
由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址
用转发器或网桥连接起来的若干个局域网仍为一个网络(同一个广播域),因此这些局域网都具有同样的网络号 net-id,但 host-id 必须不同
所有分配到网络号 net-id 的网络,范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的
在同一个局域网上的主机或路由器的 IP 地址中的网络号必须是一样的,路由器总是具有两个或两个以上的 IP 地址,路由器的每个端口都有一个不同网络号的 IP 地址
子网划分与子网掩码
子网划分
两级 IP 地址的缺点:
- IP 地址空间的利用率有时很低
- 给每个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏
- 两级的 IP 地址不够灵活
从 1985 年起,在 IP 地址中又新加了一个“子网号”字段,使两级 IP 地址变成了三级 IP 地址,这种做法称为子网划分
子网划分的基本思路如下:
- 子网划分纯属一个单位内部的事情,单位对外仍然表现为没有划分子网的网络
- 从主机号借用若干比特作为子网号,当然主机号也就相应减少了相同的比特。三级 IP 地址的结构如下: IP 地址 = {<网络号>, <子网号>, <主机号>}
- 凡是从其他网络发送给本单位某台主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号,先找到连接本单位网络上的路由器。然后该路由器在收到 IP 数据报后,按目的网络号和子网号找到目的子网。最后把 IP 数据报直接交付给目的主机。
子网掩码
为了告诉主机或路由器对一个 A 类、B 类、C 类网络进行了子网划分,使用子网掩码来表达对源网络中主机号的借位
子网掩码是一个与 IP 地址相对应的、长 32 bit 的二进制串,它由一串 1 和跟随的一串 0 组成,其中, 1 对应于 IP 地址中的网络号及子网号,而 0 对应于主机号,计算机只需将 IP 地址和其对应的子网掩码进行按位与运算,就可得出相应子网的网络地址
现在的因特网标准规定:所以的网络都必须使用子网掩码
若果一个网络未划分子网,那么就采用默认的子网掩码:
- A 类地址:255.0.0.0
- B 类地址:255.255.0.0
- C 类地址:255.255.255.0
无分类域间路由选择(CIDR)
无分类域间路由选择是在变长子网掩码的基础上提出的一种消除传统 A、B、C 类网络划分,并且可以在软件的支持下实现超网构造的一种 IP 地址划分方法
CIDR 的主要特点如下:
消除传统 IP 分类划分概念,更有效利用 IPv4 的地址空间
CIDR 使用“网络前缀”的概念代替子网络的概念,因此,IP 地址的无分类两级编址为:IP::= {<网络前缀>, <主机号>}
CIDR 还使用“斜线记法”(或称 CIDR 记法),即 IP 地址/网络前缀所占比特数
例如,对于
128.14.32.5/20
这个地址,它的掩码是 20 个连续的 1 和 后续 12 个连续的 0,通过逐位“与”的方法,可以得到该地址的网络前缀:IP =
10000000.00001110.00100000.00000101
,掩码=11111111.11111111.11110000.0000
网络前缀=
10000000.00001110.00100000.00000000
=128.14.32.0
将网络前缀都相同的连续 IP 地址组成“CIDR地址块”
一个 CIDR 地址块可以表示很多地址,这种地址的聚合称为路由聚合,或称构成超网
路由聚合是的路由表中的一个项目可以表示多个原来传统分类地址的路由,有利于减少路由器直接的路由选择信息的交换,从而提高网络性能
CIDR 地址块中的地址数一定是 2 的整数次幂,实际可指派的地址数通常为 2N-2,N 表示主机号的位数,主机号全 0 代表网络号,主机号全 1 为广播地址
CIDR 的优点就在于网络前缀长度的灵活性,由于上层网络的前缀长度较短,因此相应的路由表的项目较少,而内部又可采用延长网络前缀的的方法来灵活地划分子网
网段的划分
一个网络 主机号有 x 位,则这个网络可以分配给主机的 IP 地址有多少个?
该网络共包含 2x 个地址,去除网络地址和广播地址,可分配给主机的 IP 地址是 2x - 2 个。
子网划分的核心思想是:网络号不变,借用部分主机号来产生新的网络。
【例】某公司要将一个地址块 192.168.5.0/24 平分给公司的四个部门使用,要求部门见不能互相访问,每个部门内部的所有员工可以互相访问,请做规划。
【分析】
- 考虑因素
- 可能表示的子网个数:2n ≥ 4 (包括网络地址和广播地址)
- 每个子网可分配给主机的 IP 数(假设每个部门 50 台电脑,则有 28-n - 2 ≥ 50)
- 得 出 n= 2 即划分以后 子网号 2 位可表示 4 个子网主机号 6 位 每个子网可分配主机个数为 26 - 2 = 62
TIP
每个子网的掩码为:11111111. 11111111. 11111111. 11000000
(255.255.255.192
)
子网的网络地址
192.168.5.0/26、192.168.5.64/26、192.168.5.128/26、192.168.5.192/26
子网的广播地址
192.168.5.63/26、192.168.5.127/26、192.168.5.191/26、192.168.5.255/26