引言
我们把整个因特网看成是一个单一的,抽象的网络。IP地址就是给因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围是唯一的32位的标识符。IP地址的编址方法共经历了分类、改进分类、无分类三个历史阶段,本文将介绍基础的分类编址方式,以辅助后面第四、第五篇笔记介绍改进分类(子网划分)及无分类(超网构成)
IP层次结构
层次化IP地址
以前人们打座机电话前面都要加几位区号,你一拨前面的区号,电话交换机才知道转到哪去。回到上图,假设现在有一个数据包的目的地址是192.168.1.0
,路由器收到数据包,只要看到192.168.1
,就往第一个网段发送了。路由器根本不管到某一台计算机怎么走,他只关心到某一个网段怎么走。这就是将IP地址分成网络ID和主机ID的意义。
分类的IP地址结构
所谓的“分类的IP地址”就是将IP地址划分为若干类,每一类地址都由两个固定长度的字段组成,其中第一个字段是网络号(net-id),它标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内是唯一的。第二个字段是主机号(host-id),它标志该主机(或路由器)。一个主机号在它前面的网络号所指明的网络范围内是唯一的。由此可见,一个IP地址在整个网络范围内是唯一的
这种两级的IP地址可以记为:IP 地址 ::= { <网络号>, <主机号>},图1给出了各种IP地址的网络号字段和主机号字段,这里A类、B类和C类地址都是单播地址,是最常用的
由上图可以得到以下信息:
- A类、B类和C类地址的网络号字段,分别是8、16和24位,而在网络号字段的最前面有1~3位的类别号,其数值分别规定为0、10和110
- A类、B类和C类地址的主机号字段分别为24、16和8个字节长
- D类地址(前4位1110)用于多播(一对多通信)
- E类地址(前四位1111)保留为以后用
A、B、C类常用地址及划分依据
从IP地址的结构来看,IP地址并不仅仅指明一个主机,而且还指明了主机所连接到的网络
把IP地址划分为A、B、C三个类别,当初是这样考虑的,各种网络的差异很大,有的网络拥有很多主机,有的网络上主机则很少。把IP地址划分为A类、B类、C类是为了更好满足不同用户的要求。当一个单位申请到一个IP地址时,实际上是获得了同样网络号的一块地址。其中具体的各个主机号则由该单位自行分配,只要做到单位管辖的范围内无重复的主机号即可
IP地址分类示意图
要想记住每类IP地址的范围非常简单,首先画出0~255,取一半就是128,所以[0,127]就是A类地址;再将128~255取一半就是192,所以[128,191]就是B类地址;再将192~255取一半就是224,所以[192,223]就是C类地址。以此类推
A类地址
A类地址的网络号字段有8位,只有7位可供使用(该字段第一位固定为0),但可指派的网络号是126个(即128-2)。减2的原因是:第一,网络号字段为全0的IP地址是个保留地址,意思是“本网络”。第二,网络号为127即(01111111)保留作为本地软件环回测试本主机的进程之间通信之用
若主机发送一个目的地址为环回地址(如127.x.x.x)的IP数据报,则本主机中的协议软件就处理数据报中的数据,不会把数据报发送到任何网络。目的地址为环回地址的IP数据报永远不会出现在任何网络上,因为网络号为127的地址根本不是一个网络地址
A类地址的主机号占24位,因此每一个A类网络中的最大主机号为$2^{24}-2$,即16777214。这里减2的原因是:全0的主机号字段表示该IP地址是“本主机”所连接到的单个网络地址(例如一主机IP地址为5.6.7.8,则该主机所在的网络地址就是5.0.0.0)。全1表示所有的(all),因此全1的主机号字段表示该网络上的所有主机
IP地址空间共有$2^{32}$即4294976296个地址。整个A类地址空间共有$2^{31}$个地址,占有整个地址空间的50%
B类地址
B类地址的网络号字段有16位,但前面两位(10)已经固定了,只剩下14位可以进行分配。因为网络号字段后面的14位无论怎样取值也不可能出现使整个2字节网络号字段称为全0或者全1,因此这里不存在网络总数减2的问题。但实际上B类网络地址128.0.0.0是不指派的,可以指派的B类最小地址为128.1.0.0.因此B类地址可指派的网络数为$2^{14}-1$,即16383。B类地址的每一个网络上最大主机数是$2^{16}-2$,即65534,减去的是全0和全1的主机号。整个B类地址空间共约有$2^{30}$个地址,占整个IP地址空间的25%
C类地址
C类地址有24位网络号字段,最前面的3位是(110),还有21位可以进行分配。C类网络地址192.0.0.0也是不指派的,可以指派的C类地址最小是192.0.1.0,因此C类地址可指派的网络总数是$2^{21}-1$,即2097151.每一个C类地址最大主机数是$2^8-2$,即254。整个C类地址空间共约有229个地址,占整个IP地址的12.5%
IP地址的指派范围
IP地址的一些重要特点
IP 地址是一种分等级的地址结构。分两个等级的好处是:
- IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了IP地址的管理
- 路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间
- 实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口
当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多归属主机(multihomed host)
由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址
- 按照因特网的定义,一个网络是指具有相同网络号net-id的主机的集合,因此用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id
- 在IP地址中,所有分配到网络号 net-id 的网络,不论是范围很小的局域网,还是覆盖很大地理范围的广域网,都是平等的
一个实际的例子
图中画出了三个局域网LAN1、LAN2、LAN3。这三个局域网通过三个路由器(R1、R2、R3)互连起来构成了一个互联网(用虚线圆角方框表示)。其中局域网LAN2是通过网桥B互连的。图中圆圈表示需要一个IP地址
结合上面内容及IP地址特点,我们应该注意到:
- 在同一个局域网上的主机或路由器的IP 地址中的网络号必须是一样的。图中的网络号就是 IP 地址中的 网络号字段的值
- 路由器总是具有两个或两个以上的 IP 地址。路由器的每一个接口都有一个不同网络号的 IP 地址
- 两个路由器直接相连的接口处,可指明也可不指明 IP 地址。如指明IP地址,则这一段连线就构成了一种只包含一段线路的特殊“网络”(如图中N1、N2、N3)。之所以称之为网络,因为他们有IP地址、但为了节省IP地址,对于这种仅由一段连线构成的特殊“网络”,现在常不指明 IP 地址。称为无编号网络或者无名网络
- 用网桥(它只在数据链路层工作)互连的网段仍然是一个局域网,只能有一个网络号
备注:实际可以分配的IP数量 = 可指派的网络号数量*单个网络最大主机数,以A类地址为例,(27 - 2) *(224-2),可以粗略记为$2^{31}$
保留的IP地址
- 主机ID全为0的地址:特指某个网段,比如192.168.10.0 255.255.255.0,指192.168.10.0网段
- 主机ID全为1的地址:特指该网段的全部主机,如果你的计算机发送数据包使用主机ID全是1的IP地址,数据链层地址用广播地址FF-FF-FF-FF-FF-FF
- 127.0.0.1:是本地环回地址,指本机地址,一般用来测试使用
- 回送地址(127.x.x.x)是本机回送地址(Loopback Address),即主机IP堆栈内部的IP地址
- 169.254.0.0:169.254.0.0-169.254.255.255实际上是自动私有IP地址
- 0.0.0.0:如果计算机的IP地址和网络中的其他计算机地址冲突,使用ipconfig命令看到的就是0.0.0.0,子网掩码也是0.0.0.0