在TCP/IP的四层模型中,每一层中的对等实体为了标识自己,需要拥有一个唯一的名字。在模型的最底层-主机到网络层,使用网络适配器的物理地址(MAC地址)标识处于同一个网段的不同主机;在网络互连层,使用IP地址来标识整个网络中不同的主机;在传输层,使用端口号来标识运行在某台主机上的不同网络应用程序;在应用层,使用易于辨别、易于记忆的主机地址来标识整个因特网中的不同主机。如图1所示。
图1 不同的层使用不同的名字 这里,我们将主要讨论网际互连层的地址-IP地址。
1 IP地址的格式 在目前广泛使用的IPv4中,IP地址由32位二进制数字组成。这32位二进制数字可以分为4个位域(octets)。每个位域8位二进制数,各位域之间被点号分开。
有时,为了便于识别、记忆,我们经常将每个位域的8位二进制数转化成为在0到255(00000000到11111111=28-1)范围内的十进制数字,称为点分十进制。如图2所示(为了便于计数,我们将每个位域中的8位二进制数用逗号分隔为两部分。在实际计算机内部表示时,并没有任何分隔符)。
图2 IP地址的格式 2 IP地址的种类 为了实现层次化管理,32比特的IP地址又被划分为两个部分:一部分用来标识网络,称为网络号(Network ID,NID);另一部分用来表示网络中的主机,称为主机号(Host ID,HID)。如图2中的IP地址210.31.233.1,210.31.233为网络号; 1为主机号,表示210.31.233网络中编号为1的主机。
IPv4中定义了5类IP地址,即:A、B、C、D、E类地址。不同类别的IP地址对网络号及主机号范围的规定是不同的,用于匹配不同规模的网络。
2.1 A类
图3 A类地址 A类地址的特点是第1个位域的8位二进制数用来标识网络号,且第1个位域的最高位为0,它和第1个位域的其余7位共同组成了网络号。剩余的24位二进制位代表主机号。如图3所示。
网络号全为0的地址不能使用。因此,最小的A类网络号为1,最大的A类网络号为127(01111111=27-1)。但网络号127被保留做循环测试使用,不能分配给任何一台主机。所以A类地址的网络号范围为:1-126。
对于A类网络来说,因为可以用24位二进制数标识主机号,所以每个A类网络可以容纳224-2=16777214台主机(IPv4中规定主机号的各位不能全为0或全为1)。
可见,可以用于分配的A类IP地址范围是:1.x.y.z-126.x.y.z,其中x、y、z的各个二进制位不能全为0或全为1。例如,10.255.255.255是不正确A类IP地址,不能分配给主机使用,而10.255.255.254是合法的A类IP地址。
2.2 B类
图4 B类地址 B类地址的特点是第1、2个位域的16位二进制数用来标识网络号,且第1个位域的最高两位为10,它和其余的14位二进制数共同组成了网络号。剩余的16位二进制数代表主机号。如图4所示。
最小的B类网络号为128.0,最大的B类网络号为191.255。
对于B类网络来说,因为可以用除了最高两位以外的14位二进制数来标识网络号,所以一共可以有214=16384个B类网络。同时,因为可以用16位二进制数标识主机号,所以每个B类网络可以容纳216-2=65534台主机。
可见,可以用于分配的B类IP地址范围是:128.0.y.z-191.255.y.z,其中y、z的各个二进制位不能全为0或全为1。
2.3 C类
图5 C类地址 C类地址的特点是第1、2、3个位域的24位二进制数用来标识网络号,且第1个位域的最高三位为110,它和其余的21位二进制数共同组成了网络号。剩余的8位二进制位代表主机号。如图5所示。
最小的C类网络号为192.0.0,最大的C类网络号为223.255.255。
对于C类网络来说,因为可以用除了最高三位以外的21位二进制数标识网络号,所以一共可以有221=2097152个C类网络。同时,因为可以用8位二进制数标识主机号,所以每个C类网络可以容纳28-2=254台主机。
可见,可以用于分配的C类IP地址范围是:192.0.0.z-223.255.255.z,其中z的各个二进制位不能全为0或全为1。
2.4 D类
图6 D类地址
D类地址的第1个位域的最高位4位为1110。因此,第1个位域的取值范围是224~239。如图6所示。
D类地址属于比较特殊的IP地址类,它不区分网络号和主机号,也不能分配给具体的主机。
D类地址主要用于多播(multi-casting),用于向特定的一组(多台)主机发送广播消息。在RIPv2和OSPF动态
路由协议中采用多播方式在一组路由器间传送和路由相关的信息。
2.5 E类
图7 E类地址 E类地址的第1个位域的最高位5位为11110。因此,第1个位域的取值范围是240~247。如图7所示。
E类地址被保留作为实验用。
2.6 其他 对于第1个位域的取值范围在248~254之间的IP地址保留不用。
2.7 IP地址的分配注意事项 在为主机分配IP地址时,必须注意以下问题:
网络号不能为127
网络号127被保留作为本机循环测试使用。例如,我们可以使用命令ping 127.0.0.1测试TCP/IP协议栈是否正确安装。如图8所示。在路由器中,同样支持循环测试地址的使用。
图8 本机循环测试地址的使用 主机号不能全为0或255
全0的主机号代表本网络,如210.31.233.0代表网络号为210.31.233的C类网络。全1的主机号代表对本网络的广播,如210.31.233.255代表对C类网络210.31.233.0的广播,称为直接广播。如果一个数据包中的目标地址是一个广播地址,它要求该网段中的所有主机必须接收此数据包。如果IP地址的32位全为1,即255.255.255.255,则代表有限广播,它的目标同样是网络中的所有主机。
0.0.0.0
IP地址0.0.0.0通常代表未知的源主机。当主机采用DHCP动态获取IP地址而无法获得合法IP地址时,会用IP地址0.0.0.0来表示源主机IP地址未知。如图9所示。
图9 未知的源主机 3 子网掩码 3.1 子网 子网(subnetwork)将网络划分为不同的部分,每一部分是一个独立的逻辑网络,称为子网。处于同一子网中的各主机的网络号是相同的,它们可以直接互相通信而不用经过路由器中转。
将网络划分为多个子网可以减小广播域的规模,减少广播对网络的不利影响。将网络划分为多个子网也便于实现层次化的管理。另外,将网络划分为多个子网也便于每个子网使用不同类型的网络架构。
3.2 子网掩码 子网掩码(subnetwork mask)用来与IP地址的各位按位进行"逻辑与"的运算,用来分辨网络号和主机号。
IPv4规定了A类、B类、C类的标准子网掩码:
A类:255.0.0.0
B类:255.255.0.0
C类:255.255.255.0
例如,对于标准的C类IP地址210.31.233.1来说,其标准子网掩码是:255.255.255.0。我们将IP地址210.31.233.1和其对应的子网掩码255.255.255.0分别化为二进制形式。然后,按位进行"逻辑与"运算,得到的结果中,被子网掩码中的"0"屏蔽掉的部分就是主机号,而被子网掩码中的"1"保留下来的部分就是网络号。如图10所示。即IP地址210.31.233.1表示C类网络210.31.233.0中的编号为1的主机。
图10 子网掩码的应用-1 又如,对于标准的B类IP地址160.133.50.131来说,其标准子网掩码是:255.255.0.0。我们将IP地址160.133.50.131和其对应的子网掩码255.255.0.0分别化为二进制形式。然后,按位进行"逻辑与"运算。从结果可看出IP地址160.133.50.131表示B类网络160.133.0.0中的编号为50.131的主机。如图11所示。
图11 子网掩码的应用-2 由此可见,子网掩码的主要作用是用来分辨网络号与主机号的边界。