8.3 IP地址
网络互连的一个重要前提是要有一个有效的地址结构,并且所有的用户都应遵守这个地址结构。地址结构可以有许多不同的形式、网络地址总是数字式的,但这些数字可以用二进制表示、十进制表示,甚至用十六进制表示。
8.3.1 什么是IP地址
IP地址是TCP/IP的网络层用以标识网络中主机的逻辑地址,其可以唯一标识Internet中的一台主机。
转发设备(如路由器)可以根据分组中的目的IP地址将分组转发到目的网络,然后再根据ARP(地址解析协议)通过目的主机的物理地址(MAC地址)将数据传送给该目的主机。
IP地址是一个32位的二进制数,通常用打点十进制数字表示。每个IP地址分为4段(每段8位二进制数),分别用“.”隔开,如210.33.46.59。
IP的原始版本IPv4,使用32位的二进制地址,每个地址组织成由点分隔的8位数,每个8位数称为8位位组,二进制数表示对计算机很友好,但却不易被用户所理解,因此要提供更直观的使用十进制表示的地址。应该很好地理解二进制与十进制数值系统之间的关系,因为整个IP地址结构是基于二进制和十进制的。
32位的IPv4地址意味着Internet能支持4294967296个可能的IPv4地址,这个数量曾经被认为绰绰有余。但是,这些地址被浪费了许多,包括分配但没被使用的地址、分配不合适的子网掩码等。其中许多原因及其所带来的影响,会随着读者对IPv4地址的深入理解而更加清楚。
IP的新版本是IPv6,它有不同于IPv4的地址结构。IPv6地址有128位,使用全新的分类方法,以使地址的使用效率最大化。考虑到IPv6的广泛使用还需要一些时间,因此本书所举的例子均是IPv4地址结构的。
8.3.2 二进制数和十进制数
以2为基数的数值系统称为二进制数,某一位的1表示的值大小由其位置决定,这非常类似十进制系统。十进制数最右边的数代表1,次右边的数代表10,再次右边的数表示100,依此类推。每一个数位表示的值是其右边数位表示数值的10倍。
然而,十进制数系统提供了10个数字表示不同的值(0~9),而二进制数系统仅有两个有效数字:0和1。数值所在位置决定了数的大小。最右位置在十进制中表示1,在二进制中亦是如此。次右的数位代表2,下一个位置代表4,再下一个代表8,等等。每一个位置上的数表示的值是其右边数位表示数值大小的2倍。
求一个二进制数对应的十进制数可以把二进制数中为1的位对应的数值相加起来即可。从数学上讲,IPv4地址的每个8位位组(共有4个)能表示的最大值为十进制255,若要一个8位的二进制数等于255,需要其中的每一位均为1。表8-1列出了二进制数与十进制数之间的关系。
表8-1 二进制数(11111111)和十进制数(255)
正如读者所看到的,二进制地址中每位的值均为1。因此计算这个二进制数对应的十进制数可以把各位所表示的数值相加,即128+64+32+16+8+4+2+1=255。
表8-2列出了另一个二进制与十进制数转化的例子。在这个例子中,从右边数第五位上是0,这个位置表示的十进制数为16;因此,这个二进制数对应的十进制数应比255少16,即:128+64+32+8+4+2+1=239。
表8-2 二进制数(11101111)和十进制数(239)
二进制与十进制数值之间的关系是整个IP地址结构的基石。记住在每个IPv4地址中有4个二进制8位位组。IP地址结构的其他方面如子网掩码、VLSM以及CIDR均基于这些数值系统。在读者理解各种IP地址实现方式之前,必须明白这些基本的数值系统及其之间的转化。
8.3.3 IP地址组成
一个IP地址由两部分组成:网络地址(网络号、网络标识)和网络中的主机地址(主机号、主机标识),如图8-4所示。网络号用于标识主机所在的网络;主机号用于表示主机在网络中的序号。
由于32位二进制IP地址不容易书写和记忆,通常用十进制表示。32位被分为四个8位组,用小数点分割。
图8-4
8.3.4 IP地址分类
IPv4地址实现标准化后,人们考虑到当时的计算情况,尽量使其具有前瞻性。基本的IP地址是分成8位一个单元(称为8位位组)的32位二进制数。
为了方便人使用,人们将计算机熟悉的二进制地址转变为人们熟悉的十进制地址。IP地址中的每一个8位位组用0~255之间的一个十进制数表示。这些数之间用点“.”隔开,这是所谓的点分十进制格式。因此,最小的IPv4地址值为0.0.0.0,最大的地址值为255.255.255.255,然而这两个值被保留了,没有将其分配给私人的端系统。要想知道其中的原因需要考查实现这个基本地址结构的方式。
点分十进制数表示的IPv4地址分成几类,以适应大型、中型、小型的网络。这些类的不同之处体现了用于表示网络的位数与用于表示主机的位数之间的差别。IP地址分成5类,其表示分别为:
・A类地址;
・B类地址;
・C类地址;
・D类地址;
・E类地址。
每一个IP地址包括两部分:网络地址和主机地址,上面五类地址对所支持的网络数和主机数有不同的组合。Internet指导委员会IAB为IP地址定义了5种类型,分别适应不同规模的网络。每个IP地址都由网络标识和主机标识组成,但标号的长度不同,因此各类IP地址可能容纳的网络数目及每个网络可能容纳的主机数目区别很大。具体分类与格式如8-5图所示。
1.A类地址设计
A类地址用来支持巨型网络,因为对规模巨大网络的需求很小,因此开发了这种结构使主机地址数很大,而严格限制可被定义为A类网络的数量。
一个A类IP地址仅使用第一个8位位组表示网络地址。剩下的3个8位位组表示主机地址。A类地址的第一个位总为0,这一点在数学上限制了A类地址的范围小于127,(64+32+16+8+4+2+1=127)。最左边的位表示128,在这里空缺。因此仅有127个可能的A类网络。
A类地址后面的24位(3个点分十进制数)表示可能的主机地址,A类网络地址的范围为1.0.0.0~126.0.0.0。注意只有第一个8位位组表示网络地址,剩余的3个8位位组用于表示第一个8位位组所表示网络中唯一的主机地址,当用于描述网络时这些位置为0。
提示:从技术上讲,127.0.0.0也是一个A类地址,但是它已被保留作闭环(Look Back)测试之用而不能分配给一个网络。
图8-5
每一个A类地址能支持16777214个不同的主机地址,这个数是由224再减去2得到的。减2是必要的,因为IP把全0保留为表示网络地址,而全1表示网络内的广播地址。A类网络与主机8位位组的比例关系如表8-3所示。
表8-3 A类地址结构
2.B类地址设计
B类地址的目的是支持中到大型的网络。B类网络地址范围为128.1.0.0~191.254.0.0。B类地址蕴含的数学逻辑是相当简单的。一个B类IP地址使用两个8位位组表示网络号,另两个8位位组表示主机号。B类地址的第1个8位位组的前两位总置为10,剩下的6位既可以是0也可以是1,这样就限制其范围小于等于191,由128+32+16+8+4+2+1得到。
最后的16位(2个8位位组)标识可能的主机地址。每一个B类地址能支持64534个唯一的主机地址,这个数由216减2得到。B类网络仅有16382个。
其网络与主机8位位组的比例如表8-4所示。
表8-4 B类地址结构
3.C类地址
C类地址用于支持大量的小型网络。这类地址可以认为与A类地址正好相反。A类地址使用第一个8位位组表示网络号,剩下的3个表示主机号,而C类地址使用3个8位位组表示网络地址,仅用一个8位位组表示主机号。
C类地址的前3位数为110,前两位和为192(128+64),这形成了C类地址空间的下界。第三位对应十进制数32,这一位为0限制了地址空间的上界。不能使用第三位限制了此8位位组的最大值为255-32=223。因此C类网络地址范围为192.0.1.0~223.255.254.0。
最后一个8位位组用于主机寻址。每一个C类地址理论上可支持最大256个主机地址(0~255),但是仅有254个可用,因为0和255不是有效的主机地址。可以有2097150个不同的C类网络地址。
注意在IP地址中,0和255是保留的主机地址。IP地址中所有的主机地址为0用于标识局域网。同样,全为1表示在此网段中的广播地址。C类网络和主机8位位组的比例如表8-5所示。
表8-5 C类地址结构
4.D类地址
D类地址用于在IP网络中的组播(Multicasting,又称为多目广播)。D类组播地址机制仅有有限的用处。一个组播地址是一个唯一的网络地址。它能指导报文到达预定义的IP地址组。因此,一台计算机可以把数据流同时发送到多个接收端,这比为每个接收端创建一个不同的流有效得多。组播长期以来被认为是IP网络最理想的特性,因为它有效地减小了网络流量。
D类地址空间和其他地址空间一样有其限制,D类地址的前4位恒为1110,预置前3位为1意味着D类地址开始于128+64+32=224。第4位为0意味着D类地址的最大值为128+64+32+8+4+2+1=239,因此D类地址空间的范围为224.0.0.0~239.255.255.254。
这个范围看起来有些奇怪,因为上界需要4个8位位组确定。通常情况下,这意味着表示主机和网络的8位位组用来表示一个网络号。这其中是有原因的!D类地址不是用于互连单独的端系统或网络。
D类地址用于在一个私有网中传输组播报文至IP地址定义的端系统组中。因此,没有必要把地址中的8位位组或地址位分开表示网络和主机。相反,整个地址空间用于识别一个IP地址组(A、B或C类)。D类网络和主机8位位组的比例如表8-6所示。
表8-6 D类地址结构
5.E类地址
E类地址虽被定义但却为保留作研究之用。因此Internet上没有可用的E类地址。E类地址的前4位恒为1,因此有效的地址范围为240.0.0.0~255.255.255.255,考虑到E类地址作研究之用且仅在研究内部使用,因此,在这里没有必要作进一步讨论了。
8.3.5 IP地址分配
在分配网络号和主机号时应遵守以下几条准则,不能分配以下地址:
①网络号不能为127。127.0.0.1是为本机做环回测试保留的IP地址。
②不能将网络号和主机号的各位均置1。255.255.255.255指有限广播,只对本网主机。
③主机位全0,表示当前网络。
④全0,0.0.0.0表示当前网络的当前主机。
⑤网络位全0,表示当前网络的某主机。
1.分配网络号
对于每个网络及广域网连接,必须有唯一的网络号,主机号用于区分同一物理网络中的不同主机。如果网络由路由器连接,则每个广域连接都需要唯一的网络号。
2.分配主机号
主机号用于区分同一网络中不同的主机,并且主机号应该是唯一的。所有的主机包括路由器间的接口,都应该有唯一的网络号。路由器的主机号,要配置成工作站的默认网关地址。
有效的主机号:
A类:w.0.0.1~w.255.255.254
B类:w.x.0.1~w.x.255.254
C类:w.x.y.1~w.x.y.254
8.3.6 静态IP地址配置
所谓静态IP地址就是为每个用户指派一个固定的IP地址,这需要管理员手动配置。在Windows系统中可以在“网上邻居”或“控制面板”的“网络连接”选项上右击,在弹出的快捷菜单中选择“属性”命令。或者双击状态栏的网络连接图标等操作都可以打开“网络连接”对话框。IP地址的配置就是在这个对话框中进行的。下面以Windows XP为例进行介绍,其操作步骤如下:
步骤1 在桌面右击“网上邻居”图标,在弹出的快捷菜单中选择“属性”命令,打开如图8-6所示的“网络连接”窗口,此窗口中显示了当前系统所有的网络连接项。
图8-6
步骤2 右击“本地连接”图标,在弹出的快捷菜单中选择“属性”命令,打开如图8-7所示的“本地连接属性”对话框。
步骤3 在“此连接使用下列项目”列表框中选择“Internet协议(TCP/IP)”。单击“属性”按钮,打开如图8-8所示的对话框。
步骤4 在打开的“Internet协议(TCP/IP)属性”对话框中,选中“使用下面的IP地址”单选按钮,并在“IP地址”文本框中输入指派的IP地址192.168.0.22;在“子网掩码”文本框中输入255.255.255.0,这样就配置好该主机的静态IP地址了,再依次单击“确定”按钮关闭对话框即可。
图8-7
图8-8