计算机网络 (7) 网络层-IPv4地址

238 阅读6分钟

本文引用图片均来自 高军: 计算机网络

概述

TCP/IP体系中,IP地址是最基本的概念,本文侧重于IPv4地址

IPv4地址就是给因特网上每一台主机(路由器)的每一个接口分配的一个在全世界范围内唯一的32比特的标识符

IP地址由因特网名字和数字分配机构ICANN(Internet Corporation for Assigned Names and Numbers)进行分配,在我国个人用户的IP地址一般都是从网络运营商(电信、移动、联通等)处获取的

IP地址是会被耗尽的,IPv4地址数量为232{2^{32}},大约43亿,在2011年2月3日IPv4地址就已经分配完了。我国在2014年至2015年也逐步停止向新用户和应用分配IPv4地址,同时开始部署IPv6地址IPv6地址数量为2128{2^{128}},在可预见的将来都不会耗尽

为了方便使用,IPv4地址采用点分十进制表示法:

image.png

IPv6则将128位划分成8个16位的小段,每段的16位每4位换算成16进制字符,每个小段使用冒号相隔,例如:1050:0000:0000:0000:0005:0600:300c:326b

IPv4编址方法经历了三次迭代:

  1. 分类编址(1981年)
  2. 划分子网(1985年)
  3. 无分类编址(1993年)

下面简单介绍三种编址方法

分类编址

在分类编址中,IPv4地址总共被分为A、B、C、D、E五类,每类地址都是网络号+主机号的格式,每类地址的网络号前几位都是固定

image.png

以上各类地址中只有A、B、C类地址可以分配给网络中的主机或路由器接口。另外,任意一类地址中,主机号为全0全1的地址都是保留地址全0的为网络地址全1的为广播地址,都不能分配

地址指派

A类地址: A类地址中网络号0(7位网络号全0)127(7位网络号全1)保留不指派,其中127作为本地回环测试地址(如常用的127.0.0.1),所以A类地址可指派网络数量为2812=126{2^{8-1}-2}=126个,每个网络可分配的地址数量(可容纳的主机及路由器接口数量)为2242=16777214{2^{24}-2}=16777214(减去主机号全0和全1的)

image.png

B类地址: B类地址没有保留的网络号,网络号范围为128.0(14位网络号全0)191.255(14位网络号全1),可指派的网络数量位2162=16354{2^{16-2}}=16354,每个网络可分配的地址数量为2162=65534{2^{16}-2}=65534(减去主机号全0和全1的)

image.png

C类地址: C类地址没有保留的网络号,网络号范围为192.0.0(21位网络号全0)223.255.255(21位网络号全1),可指派的网络数量位2433=2097152{2^{43-3}}=2097152,每个网络可分配的地址数量为282=254{2^{8}-2}=254(减去主机号全0和全1的)

image.png

下面则是一些特殊的地址:

image.png

划分子网编址

先看例子:一个公司需要组网,内部有500台主机,这时需要申请一个B类地址B类地址可分配地址数量为2162=65534{2^{16}-2}=65534,远超公司主机数量,大量的地址浪费掉了

image.png

假设随着公司发展,需要将原来的网络划分为3个独立网络,那么就需要新申请两个网络地址,这会耗费时间和资金,也会增加网络中路由器的负担

基于以上地址浪费和新申请网络耗费时间和资源等缺点,人们提出了子网的概念。子网就是从原网络地址的主机号中划分一部分作为子网号

在上例中,B类地址16比特网络号16比特主机号,在主机号中划分8个比特作为子网号就能划分出28{2^8}个子网,每个子网有8比特主机号可以使用

image.png

在划分子网后公司就不用申请新的网络地址,且每个子网都有足够的地址分配给主机

子网掩码

子网是概念上的划分,单从IP地址本身是看不出来的,所以需要子网掩码来表明分类IP地址的主机号有多少比特被划分为子网号

子网掩码由连续的比特1后接连续的比特0组成,比特1覆盖住分类IP地址的网络号和子网号,结合IP地址所在分类分析就能得出主机号中有多少比特被用来划分子网,进而知道每个子网有多少主机号等信息。子网掩码IP地址进行与运算就能得到IP地址所在子网的网络地址

image.png

下图是一个划分子网的C类IPv4地址,子网号占1比特,可以发现,划分子网后无非是多了一层子网号,每个子网主机号的分配与普通分类IP地址相同

image.png

一个网络如果没有划分子网,那么将使用默认子网掩码A、B、C类网络的默认子网掩码比特1的长度和网络号长度相同

image.png

无分类编址

无分类编址准确讲应该叫做无分类域间路由选择CIDR(Classless Inter-Domain Routing),它消除了传统的分类地址以及划分子网的概念可以更有效的分配IPv4地址

CIDR地址采用网络前缀+主机号的格式,使用斜线记法,在IPv4地址后加斜线,斜线后写网络前缀所占的比特数

image.png

CIDR网络前缀相同的连续地址称为CIDR地址块,知道了地址块中任意一个地址及网络前缀比特数量,我们就能推断该地址块的全部细节

  1. 地址块的最小地址
  2. 地址块的最大地址
  3. 地址块中的地址数量
  4. 地址块聚合某类(A类、B类、C类)网络的数量
  5. 地址掩码(也可继续称为子网掩码)

下例展示从128.14.35.7/20推断CIDR地址块信息的细节

image.png

路由聚合

路由聚合也称构造超网,简单讲就是找到一系列地址的最长共同前缀并使用共同前缀作为网络前缀构造一个新的CIDR地址块(超网)

路由聚合可以缩减路由表减小路由器负担,在下例中如果采用传统方法路由器R2需要在路由表中增加5条记录

image.png

但是对地址进行聚合后可以构造一个新的地址块(超网)172.1.4.0/22(最长公共前缀+剩余位置全0),此时路由器R2的路由表只需增加一条记录

image.png

另外,如果路由器查表转发时发现有多条路由可选那么将选择网络前缀最长的,称为最长前缀匹配

CIDR地址分配规则和前面章节提到的其他编址方法一样,此时可简单的将网络前缀当作网络号看待

image.png

参考文献