IP地址的概念及层次结构
目录
1. IP地址 1
1.1 物理地址和逻辑地址 1
1.2 IP地址的结构、分类与表示 2
1.2.1 IP地址的结构 2
1.2.2 IP地址的表示 2
1.2.3 IP地址分类 3
1.2.4 IP地址具有的特点 4
1.3 保留IP地址 4
1.3.1 网络地址 4
1.3.2 广播地址 5
1.3.3 回送地址 5
1.3.4 所有地址 5
1.4 公用地址和私有地址 6
1.5 子网划分 6
1.5.1 子网编址模式下的地址结构 6
1.5.2 子网掩码 7
1.5.3 子网划分的方法 8
2. 可变长子网掩码(VLSM) 9
2.1 无类别域间路由CIDR 9
2.2 IP地址的规划与分配 10
1. IP地址
为了使Internet的主机在通信时能够相互识别,Internet的每一台主机都分配有一个唯一的IP地址,也称为网络地址。
1.1 物理地址和逻辑地址
每一个物理网络中的网络设备都有其真实的物理地址。物理网络的技术和标准不同,其物理地址编码也不同。以太网物理地址用48位二进制数编码。因此可以用12个十六进制数表示一个物理地址。一般格式为00-10-5a-63-aa-99。物理地址也叫MAC地址,它是数据链路层地址,即二层地址。以太网就是利用MAC地址标识网络中的一个结点,两个以太网结点的通信需要知道对方的MAC地址。物理地址通常是由网络设备的生产厂家直接烧入设备的网络接口卡的EPROM中的,它存储的是传输数据时真正用来标识发出数据的源端设备和接收数据的目的端设备的地址。也就是说,在网络底层的物理传输过程中,是通过物理地址来标识网络设备的,这个物理地址一般是全球唯一的。物理地址只能够将数据传输到与发送数据的网络设备直接连接的接收设备上。对于跨越互联网的数据传输,物理地址不能提供逻辑的地址标识手段。在互联网中传输信息,必须实现结点的统一表示方法。
互联网对各种物理网络地址的统一是在IP层完成的。IP协议提供了一种互联网通用的地址格式,该地址目前的版本是IPv4,由32位的二进制数表示,用于屏蔽各种物理网络的地址差异。IP协议规定的地址叫做IP地址。IP地址由IP地址管理机构进行统一管理和分配,保证互联网上运行的设备(如路由器、主机等)不会产生地址冲突。
在互联网上,IP地址指定的不是一台计算机,而是计算机到一个网络的连接。因此 ,具有多个网络连接的互联网设备就应具有多个IP地址,如路由器。
IP地址是第三层地址,所以有时又称为网络地址,该地址是随着设备所处网络位置不同而变化的,即设备从一个网络被移到另一个网络时,其IP地址也会相应地发生改变。也就是说,IP地址是一种结构化的地址,其可以提供关于主机所处的网络位置信息。
总之,逻辑地址放在IP数据报的报头,而物理地址则放在MAC帧的报头。物理地址是数据链路层和物理层使用的地址,而逻辑地址是网络层和以上各层使用的地址。如图1所示,简要示意了IP地址和MAC地址的关系。

图1 OSI中IP地址和MAC地址的关系
1.2 IP地址的结构、分类与表示
1.2.1 IP地址的结构
一个互联网包括了多个网络,而一个网络又包括了多台主机,因此,互联网是具有层次结构的。互联网使用的IP地址也采用了层次结构。IP地址以32位二进制位的形式存储于计算机中。32位的IP地址结构由网络ID和主机ID两部分组成,如图2所示。其中,网络ID(又称为网络标识、网络地址、网络号)用于标识互联网中的一个特定网络,标识该主机所在的网络,而主机ID(又称为主机地址、主机号)则标识该网络中的一个特定连接,在一个网段内部,主机ID必须是唯一的。IP地址的编址方式携带了位置信息。通过一个具体的IP地址,马上就能知道它位于哪个网络。正是因为网络标识所给出的网络位置信息才使得路由器能够在通信子网中为IP分组选择一条合适的路径,寻找网络地址对于IP数据报文在互联网中进行路由选择极为重要。地址的选择过程就是通过互联网络为IP数据报文选择目标地址的过程。

图2 IP地址的组成
由于IP地址包含了主机本身和主机所在的网络的地址信息。所以在将一个主机从一个网络移到另一个网络时,主机IP地址必须进行修改,否则,就不能与互联网上的其它主机正常通信。
1.2.2 IP地址的表示
在计算机内部,IP地址使用二进制数表示的,共32位。
例如:11000000.10101000.00000001.01100100;

图3 IP地址的表示方法
为了表示方便,国际运行一种“点分十进制表示法(dotted decimal notation)”。即将32位的IP地址按字节分为4段,高字节在前,每个字节用十进制数表示,并且各字节之间用圆点“.”隔开,表示成w.x.y.z。这样IP地址表示成了一个用点号隔开的4组数字,每组数字的取值范围只能是0~255。上例用二进制表示的IP地址可以用点分十进制192.161.100表示。如图3所示。
1.2.3 IP地址分类
为适应不同规模的网络,可将IP地址分类,称为有类地址。每个32位的IP地址的最高位或起始几位标识地址的类别。InterNIC将IP地址分为A、B、C、D和E五类,如图8.4所示。其中A、B、C类被作为普通的主机地址,D类用于提供网络组播服务或作为网络测试之用,E类保留给未来扩充使用。每类地址中定义了它们的网络ID和主机ID各占用32位地址中的多少位,就是说每一类中,规定了可以容纳多少个网络,以及这样的网络中可以容纳多少台主机。
(1)A类地址
如图8.4所示,A类地址用来支持超大型网络。A类IP地址仅使用第一个8位组标识地址的网络部分,其余的3个8位组用来标识地址的主机部分。用二进制表示时,A类地址的第1位(最左边)总是0。因此,第1个8位组的最小值为00000000(十进制数为0),最大值为01111111(十进制数为127)。但是0和127两个数保留使用。不能用作网络地址。任何IP地址第1个8位组的取值范围从1到126之间都是A类地址。

图4 IP地址的组成
(2)B类地址
如图8.4所示,B类地址用来支持中大型网络。B类IP地址使用4个8位组的前2个8位组标识地址的网络部分。其余的2个8位组用来标识地址的主机部分。用二进制表示时,B类地址的前2位(最左边)总是10。因此,第1个8位组的最小值为10000000(十进制数为128),最大值为10111111(十进制数为191)。任何IP地址第1个8位组的取值范围从128到191之间都是B类地址。
(3)C类地址
如图8.4所示,C类地址用来支持小型网络。C类IP地址使用4个8位组的前3个8位组标识地址的网络部分。其余的1个8位组用来标识地址的主机部分。用二进制表示时,C类地址的前3位(最左边)总是110。因此,第1个8位组的最小值为11000000(十进制数为192),最大值为11011111(十进制数为223)。任何IP地址第1个8位组的取值范围从192到223之间都是C类地址。
(4)D类地址
如图8.4所示,D类地址用来支持组播。组播地址是唯一的网络地址,用来转发目的地址为预先定义的一组IP地址的分组。因此,一台工作站可以将单一的数据流传送给多个接收者。用二进制表示时,D类地址的前4位(最左边)总是1110。D类IP地址的第1个8位组的范围是从11100000到11101111,即从224到239。任何IP地址第1个8位组的取值范围从224到239之间都是D类地址。
(5)E类地址
如图8.4所示,Internet工程任务组保留E类地址作为科学研究使用。因此Internet上没有发布E类地址使用。用二进制表示时,E类地址的前4位(最左边)总是1111。E类IP地址的第1个8位组的范围是从11110000到11111111,即从240到255。任何IP地址第1个8位组的取值范围从240到255之间都是E类地址。
1.2.4 IP地址具有的特点
(1) IP地址是一种非等级的地址结构和电话号码的结构不一样,也就是说IP地址不能反映任何有关主机位置的物理地理信息。
(2) 当一个主机同时连接到两个网络上时(如作路由器用的主机),该主机就必须同时具有两个相应的IP地址,其网络号码(net-id)是不同的,这种主机称为多地址主机(multihomed host)。
(3) 按照Internet 的观点用转发器或网桥连接起来的若干个局域网仍为一个网络,因此,这些局域网都具有同样的网络号码。
(4) 在IP地址中,所有分配到同一网络号码的网络不管是小的局域网还是很大的广域网都是平等的。
1.3 保留IP地址
在IP地址中,有些IP地址是被保留作为特殊之用的,不能用于标识网络设备。这些保留地址空间如下:
1.3.1 网络地址
用于表示网络本身,具有正常的网络号部分,主机ID部分为全“0”的IP地址代表一个特定的网络,即作为网络标识之用,如102.0.0.0、137.1.0.0和197.10.1.0分别代表了一个A类、B类和C类网络。
1.3.2 广播地址
IP协议规定,主机ID为全“1”的IP地址是保留给广播用的。广播地址又分为两种:直接广播地址和有限广播地址。
(1)直接广播
如果广播地址包含一个有效的网络号和一个全“1”的主机号,那么称之为直接广播(Directed Broadcasting)地址。在IP互联网中,任意一台主机均可向其它网络进行直接广播。
例如 C类地址211.91.192.255就是一个直接广播地址。互联网上的一台主机如果使用该IP地址为数据报的目的IP地址,那么这个数据报同时发送到211.91.192.0网络上的所有主机。直接广播在发送前必须知道目的网络的网络号。
(2)有限广播
32位全为“1”的IP地址(255.255.255.255)用于本网广播,该地址叫做有限广播(Limited Broadcasting)地址。有限广播将广播限制在最小的范围内。在主机不知道本机所处的网络时(如主机的启动过程中),只能采用有限广播方式,通常由无盘工作站启动时使用,希望从网络IP地址服务器处获得一个IP地址。
1.3.3 回送地址
A类网络地址127.0.0.0是一个保留地址,也就是说任何一个以 127 开头的 IP地址(127.0.0.0~127.255.255.255)是一个保留地址,用于网络软件测试以及本地机器进程间通信。这个IP地址叫做回送地址(loop back address),最常见的表示形式为127.0.0.1。
在每个主机上对应于IP地址127.0.0.1有个接口,称为回送接口(loop back interface)IP协议规定,无论什么程序,一旦使用回送地址作为目的地址时,协议软件不会把该数据包向网络上发送,而是把数据包直接返回给本机。
1.3.4 所有地址
0.0.0.0代表所有的主机,路由器用0.0.0.0地址指定默认路由。
表1列出了所有特殊用途地址。
表1 特殊用途地址

由此可见,每一个网段都会有一些IP地址不能用作主机的IP地址。例如C类网段211.81.192.0,有8个主机位,因此有28个IP地址,去掉一个网络地址211.81.192.0,一个广播地址211.81.192.255不能用作标识主机,那么共用28-2个可用地址。A、B、C类的最大网络数目和可以容纳的主机数信息参见表2。
表2 关于A、B、C类的最大网络数和可容纳的主机数

1.4 公用地址和私有地址
公有IP地址是唯一的,因为公有IP地址是全局的和标准的,所以没有任何两台连到公共网络的主机拥有相同的IP地址。所有连接Internet的主机都遵循此规则。公有IP地址是从Internet服务供应商(ISP)或地址注册处获得。
另外,在IP地址资源中,还保留了一部分被称为私有地址(private address)的地址资源供内部实现IP网络时使用。REC1918留出3块IP地址空间(1个A类地址段,16个B类地址段,256个C类地址段)作为私有的内部使用的地址,即10.0.0.0-10.255.255.255、172.16.0.0-172.31.255.255和192.168.0.0-192.168.255.255。根据规定,所有以私有地址为目标地址的IP数据包都不能被路由至外面的因特网上,这些以私有地址作为逻辑标识的主机若要访问外面的因特网,必须采用网络地址翻译(Network address translation,简称NAT)或应用代理(proxy)方式。
1.5 子网划分
为了解决IP地址资源短缺的问题,同时也为了提高IP地址资源的利用率,引入了子网划分技术。
1.5.1 子网编址模式下的地址结构
子网划分(sub networking)是指由网络管理员将一个给定的网络分为若干个更小的部分,这些更小的部分被称为子网(subnet)。当网络中的主机总数未超出所给定的某类网络可容纳的最大主机数,但内部又要划分成若干个分段(segment)进行管理时,就可以采用子网划分的方法。为了创建子网,网络管理员需要从原有IP地址的主机位中借出连续的高若干位作为子网络ID,如图5所示。也就是说,经过划分后的子网因为其主机数量减少,已经不需要原来那么多位作为主机ID了,从而可以将这些多余的主机位用作子网ID。

图5 关于子网划分的示意
1.5.2 子网掩码
前面讲过,网络标识对于网络通信非常重要。但引入子网划分技术后,带来的一个重要问题就是主机或路由设备如何区分一个给定的IP地址是否已被进行了子网划分,从而能正确地从中分离出有效的网络标识(包括子网络号的信息)。通常,将未引进子网划分前的A、B、C类地址称为有类别(classful)的IP地址,对于有类别的IP地址,显然可以通过IP地址中的标识位直接判定其所属的网络类别并进一步确定其网络标识。但引入子网划分技术后,这个方法显然是行不通了。例如,一个IP地址为102.2.3.3,已经不能简单地将其视为是一个A类地址而认为其网络标识为102.0.0.0。因为若是进行了8位的子网划分,则其就相当于是一个B类地址且网络标识成为102.2.0.0;如果是进行了16位的子网划分,则又相当于是一个C类地址并且网络标识成为102.2.3.0;若是其他位数的子网划分,则甚至不能将其归入任何一个传统的IP地址类中,即可能既不是A类地址,也不是B类或C类地址。换言之,引入子网划分技术后,IP地址类的概念已不复存在。对于一个给定的IP地址,其中用来表示网络标识和主机号的位数可以是变化的,取决于子网划分的情况。将引入子网技术后的IP地址称为无类别的(classless)IP地址,并因此引入子网掩码的概念来描述IP地址中关于网络标识和主机号位数的组成情况。
子网掩码(subnetmask)通常与IP地址配对出现,其功能是告知主机或路由设备,IP地址的哪一部分代表网络号部分,哪一部分代表主机号部分。子网掩码使用与IP地址相同的编址格式,即32位长度的二进制比特位,也可分为4个8位组并采用点分十进制来表示。但在子网掩码中,与IP地址中的网络位部分对应的位取值为“1”,而与IP地址主机部分对应的位取值为“0”。这样通过将子网掩码与相应的IP地址进行求“与”操作,就可决定给定的IP地址所属的网络号(包括子网络信息)。例如,102.2.3.3/255.0.0.0表示该地址中的前8位为网络标识部分,后24位表示主机部分,从而网络号为102.0.0.0;而102.2.3.3/255.255.247.0则表示该地址中的前21位为网络标识部分,后11位表示主机部分。显然,对于传统的A、B和C类网络,其对应的子网掩码应分别为255.0.0.0、255.255.0.0和255.255.255.0。表3给出了C类网络进行不同位数的子网划分后其子网掩码的变化情况。
表3 C类进行子网划分后的子网掩码
划分位数 2 3 4 5 6
子网掩码 255.255.255.192 255.255.255.224 255.255.255.240 255.255.255.248 255.255.255.252
为了表达的方便,在书写上还可以采用诸如“X.X.X.X/Y”的方式来表示IP地址与子网掩码,其中每个“X”分别表示与IP地址中的一个8位组对应的十进制值,而“Y”表示子网掩码中与网络标识对应的位数。如上面提到的102.2.3.3/255.0.0.0也可表示为102.2.3.3/8,而102.2.3.3/255.255.247.0则可表示为102.2.3.3/21。
1.5.3 子网划分的方法
在子网划分时,首先要明确划分后所要得到的子网数量和每个子网中所要拥有的主机数,然后才能确定需要从原主机位借出的子网络标识位数。原则上,根据全“0”和全“1”IP地址保留的规定,子网划分时至少要从主机位的高位中选择两位作为子网络位,而只要能保证保留两位作为主机位,A、B、C类网络最多可借出的子网络位是不同的,A类可达22位、B类为14位,C类则为6位。显然,当借出的子网络位数不同时,相应可以得到的子网络数量及每个子网中所能容纳的主机数也是不同的。表4给出了A、B、C3类网络的子网络位数和子网络数量、有效子网络数量之间的对应关系,所谓有效子网络是指除去那些子网络位为全“0”或全“1”的子网后所留下的可用子网。

图6 211.81.192.73/27的网络ID的计算过程
表4 子网划分与子网掩码对应表
A类网络划分子网数与对应的子网掩码
占用主机号位数 子网数量 有效子网数量 子网掩码 子网中可容纳的主机数
1 21=2 2-2=0 255.128.0.0 8 388 606
2 22=4 4-2=2 255.192.0.0 4 194 302
3 23=8 8-2=6 255.224.0.0 2 097 150
4 24=16 16-2=14 255.240.0.0 1 048 574
5 25=32 32-2=30 255.248.0.0 524 286
6 26=64 64-2=62 255.252.0.0 262 142
7 27=128 128-2=126 255.254.0.0 131 070
8 28=256 256-2=254 255.255.0.0 65 534
B类网络划分子网数与对应的子网掩码
占用主机号位数 子网数量 有效子网数量 子网掩码 子网中可容纳的主机数
1 21=2 2-2=0 255.255.128.0 32 766
2 22=4 4-2=2 255.255.192.0 16 382
3 23=8 8-2=6 255.255.224.0 8 190
4 24=16 16-2=14 255.255.240.0 4 094
5 25=32 32-2=30 255.255.248.0 2 046
6 26=64 64-2=62 255.255.252.0 1 022
7 27=128 128-2=126 255.255.254.0 510
8 28=256 256-2=254 255.255.255.0 254
C类网络划分子网数与对应的子网掩码
占用主机号位数 子网数量 有效子网数量 子网掩码 子网中可容纳的主机数
1 21=2 2-2=0 255.255.255.128 126
2 22=4 4-2=2 255.255.255.192 62
3 23=8 8-2=6 255.255.255.224 30
4 24=16 16-2=14 255.255.255.240 14
5 25=32 32-2=30 255.255.255.248 6
6 26=64 64-2=62 255.255.255.252 2
2. 可变长子网掩码(VLSM)
如果把网络分成多个不同大小的子网,可以使用可变长子网掩码,每个子网可以使用不同长度的子网掩码。例如,如果按部门划分网络,一些网络的掩码可以为255.255.255.0(多数部门),其他的可为255.255.252.0(较大的部门)。
在使用有类别路由协议时,因为不能跨主网络交流掩码,所以必须连续寻址且要求同一个主网络只能用一个网络掩码。对于大小不同的子网,只能按最大子网的要求设置子网掩码,造成了浪费。尤其是网络连接路由器时,两个串口只需要两个IP地址,分配的地址却和最大的子网一样。使用可变长子网掩码VLSM(Variable Length Subnet Masking),或者说VLSM可以改变同一主网络的子网掩码的长度。
在使用无类别路由协议(Classless Routing Protocol)如OSPF、RIPv2、EIGRP协议时,就可以使用VLSM。使用可变长子网掩码可以让位于不同端口的同一网络编号采用不同的子网掩码,能节省大量的地址空间,允许非连续寻址则使网络的规划更灵活。
2.1 无类别域间路由CIDR
路由器的增多不但让路由表变大,增加查找的时间,而且加大了数据处理转发的过程。
通过用通配掩码代替地址类别来判定地址的网络部分,无类别域间路由CIDR(Classless Inter-Domain Routing)使路由器能够聚合或者归纳路由信息,并且因此可以缩小路由表的大小。换句话说,只用一个地址和掩码的组合就能表示到多个网络的路由。在地址连续下,路由器可以根据IP地址的前几位决定将数据发向目的地,以加快路由转发的处理过程。
超网和路由聚合实际上是同一过程的不同名称。当被聚合的网络是在共同管理控制之下时,更常用超网这个术语。超网和路由聚合实质上是子网划分的反面。
超网就是将多个网络聚合起来,构成一个单一的、具有共同地址前缀的网络。也就是说,把一块连续的C类地址空间模拟成一个单一的更大一些的地址空间,模拟一个B类地址。
超网的合并过程为:首先获得一块连续的C类地址空间。然后从默认掩码(255.255.255.0)中删除位,从最右边的位开始,并一直向左边处理,直到它们的网络ID一致为止。
假设已经获得了下列的16个C类网络地址:
211.81.16.0
211.81.17.0
……
211.81.31.0
这16个C类网地址分别是独立的C类网络,它们的默认掩码为255.255.255.0。通过从右向左删除位,可得它们相同的网络ID为211.81.16.0。子网掩码为255.255.240.0,过程如图8.7所示。
2.2 IP地址的规划与分配
当在网络层采用IP协议组建一个IP网络时,必须为网络中的每一台主机分配一个唯一的IP地址,也就是要涉及IP地址的规划问题。通常IP地址规划要参照下面步骤进行。
首先,分析网络规模,包括相对独立的网段数量和每个网段中可能拥有的最大主机数。

图7 超网合并
其次,确定使用公用地址还是私有地址,并根据网络规模确定所需要的网络号类别,若采用公有地址还需要向网络信息中心(Network Information Center,NIC)提出申请并获得地址使用权。
最后,根据可用的地址资源进行主机IP地址的分配。
在为互联网上的主机和路由器分配具体IP时需要注意:
(1)连接到同一网络上所有主机的IP地址的网络标识要相同。
(2)路由器可以连接多个物理网络,每个连接都应该拥有自己的IP地址,而且该IP地址的网络标识应与分配给该网络的网络标识相同。每个连接要具有不同的网络标识。
IP地址的分配可以采用静态分配和动态分配两种方式,所谓静态分配是指由网络管理员为用户指定一个固定不变的IP地址并手工配置到主机上;而动态分配则通常以客户机/服务器模式通过动态主机控制协议(dynamic host control protocol,简称DHCP)来实现。无论选择何种地址分配方法,都不允许任何两个接口拥有相同的IP地址,否则将导致冲突,使得两台主机都不能正常运行。
静态分配IP地址时,需要为每台设备配置一个IP地址。每种操作系统有自己配置TCP/IP的方法,如果使用重复的IP地址,会导致网络故障。有些操作系统,如Windows 9X、Windows XP和Windows NT在初始化时会发送ARP请求来检测是否有重复的IP地址,如果发现重复的地址,操作系统不会初始化TCP/IP,并发送错误消息。
某些类型的设备需要维护静态的IP地址,如Web服务器、DNS服务器、FTP服务器、电子邮件服务器、网络打印机和路由器等都需要固定的IP地址。