首页 > 代码库 > IPv4地址

IPv4地址

TCP/IP协议簇中,用于在IP层识别每一个连接到因特网设备的标识符称为IP地址。IPv4地址是一个32为的地址,唯一地且全球地定义一台主机或路由器与因特网之间的一个连接。IPv4的地址空间是232 4294967296


1.分类编址

1.1 分类

分类编址时,IP地址空间被分为A~E五类,每一类地址空间占用情况:

网络标识和主机标识

对于A类地址,前一个字节用于定义网络标识;对于B类地址,前两个字节用于定义网络标识;对于C类地址,前三个字节用于定义网络标识


1.2 地址类和地址块

A类地址,一个字节定义网络标识,而且最左一位始终为0,剩下7位可变。所以,A类地址共有27=128个地址块,每个地址块包含16777216个地址,存在大量的地址浪费

B类地址,两个字节定义网络标识,而且最左两位始终为10,剩下14可变。所以,B类地址共有214=16384个地址块,每个地址块包含65536个地址,存在很多地址浪费

C类地址,三个字节定义网络标识,而且最左三位始终为110,剩下21可变。所以,C类地址共有221=2097152个地址块,每个地址块有256个地址,对于大多数机构来说不够用

D类地址用来进行多播,只有一个地址块。E类地址只有一个地址块,设计为保留地址


1.3 两级编址

分类编址时,同一个网络中的所有地址都属于同一个地址块,且每个地址都包含两部分:网络标识和主机标识。网络标识指明了网络,主机标识指明了连接到网络上的一台特定的主机

提取一个地址块中的信息:一个地址块就是一段地址。给定地址块中的任意一个地址,获取地址块的三个信息:地址数、首地址和末地址:

  • 地址块的地址数N可以用N=232-n求取

  • 要求出首地址,保持最左边的n位不变,并将右边的32-n位全部置0

  • 要求出末地址,保持最左边的n位不变,并将右边的32-n位全部置1

网络地址

给定任意一个地址可以求出有关该地址的所有信息。其中首地址就是网络地址,用来为分组选择路由,使其能够到达目的地址。假设一个互联网由m个网络组成,且一个路由器有m个接口。当来自任意源主机的一个分组到达路由器,路由器根据分组首部包含的目的地址找出网络地址之后,咨询路由表找出响应的接口转发分组。网络地址实际上就是网络的标识,所有网络都要通过网络地址来识别

网络掩码

因特网上的路由器通常用一种算法从分组的目的地址提取网络地址。要做到这一点,需要一个网络掩码。分类地址的网络掩码或默认掩码是一个32位的数,左边n位全部置1,右边32-n位全部置0:


1.4 三级编址:子网划分

IP地址最初的设计为两级编址,要想抵达因特网的一台主机,首先必须抵达其网络,然后才能找到主机。然而,两级编址不够,原因有两点:首先,一个被授权使用A类或B类地址的组织,处于安全性和管理方便考虑,有必要将自己的大网络进一步划分为若干个子网。其次,因为A类和B类地址几近耗尽,而C类地址又太小,无法满足大多数组织的需要,所以已经拥有A类或B类地址使用权的组织可以将地址块进一步划分为多个较小的子地址块,并与其他组织一起分享一个地址块分割为若干较小地址块的思想称为子网划分。一个网络被划分为若干个较小的子网络,每个子网都有自己的子网地址。网络地址中出现的/16表示的是网络标识的长度

子网掩码

当一个网络没有子网划分时,使用的是网络掩码。而当一个网络划分为若干子网后,需要为每个子网建立一个子网掩码。一个子网又子网标识和主机标识两部分组成。子网划分增加了网络标识的长度,同时减少了主机标识的长度。当一个网络划分为s个子网且每个子网的主机数相同时,计算每个子网的子网标识:Nsub=N+log2S。N是网络标识的长度,Nsub是各子网标识的长度,而S是子网的数目,它必须是2的乘方

例如:一个B类网络划分为四个子网,因此N的值为16,而N1=N2=N3=N4=16+log24=18。意味着子网掩码有18个1和14个0组成,即子网掩码是255.255.192.0,不同于B类的网络掩码255.255.0.0

子网地址

当一个网络划分子网后,子网的首地址就是它的子网标识符,也是路由器为分组选择路由到达正确子网时要用到的。给定某个子网的一个任意地址,路由器可以找出其子网掩码。用子网掩码与给定的地址做与运算,可以求出子网地址。例如一个B类网络划分为四个子网,已知子网2的一个地址为141.14.120.77,可以求出子网掩码为255.255.192.0,进而算出子网地址为141.14.64.0


2. 特殊地址

IPv4地址