IP 地址分类与 TCP/UDP 端口
要想使网络设备或者主机能够连接到 Internet,必须为网络设备配置 IP 地址。由于在 Internet 上 IP 地址是全世界唯一的,IP 地址可以标识一个主机。目前应用范围最广泛的因特网地址使用的是 IPv4( IP 第 4 版本)的 IP 地址,长为 32 位,由 4 组十进制数组成,每组数值的范围为 0〜255,中间用点号隔开,称之为四组 “ 点分二进制 ”。例如,IP 地址 172.16.12.204 对应的二进制表达方式为:
10101100 00010000 00001100 11001100
1. 因特网中 IP 地址的分类
一个 IP 地址由 IP 地址类型、网络 ID 和主机 ID 组成。网络类型标识本 IP 地址所属的类型,网络 ID 标识 IP 表示设备或主机所在的网络,主机 ID 标识网络上的工作站、服务器或路由选择器。每个网络设备对应的网络 ID 必须唯一,在同一个网络中各网络设备的主机 ID 不能重复。IP 地址的一般格式为:
类别 + 网络标识 + 主机标识
█ 类别:用来区分 IP 地址的类型;
█ 网络标识(Network ID):表示主机所在的网络;
█ 主机标识(Host ID):表示主机在网络中的标识。
1. IP 地址的分类
IP 地址通常分为 5 类:A 类、B 类、C 类、D 类、E 类。
█ A 类地址:如下图(A 类 IP 地址)所示,网络标识占 1 个字节,最高位为 0。A 类网络地址有 128 个,允许支持 127 个网络,每个 A 类网络大约允许有 1670 万台主机存在。此类地址通常分配给拥有大量主机的网络,如一些大公司(如IBM公司等)和因特网主干网络,这些地址中大约 1/3 已经被分配,想得到这类地址是很困难的。
█ B 类地址:如下图(B 类 IP 地址)所示,B 类地址的高两位用于标识这种 IP 地址的类型,即为 10,中间的 14 位用于标识网络,最后的两个字节(16 位)用做主机标识。B 类地址允许有 16000 个网络,每个网络大约允许有 66000 台主机。B 类地址通常分配给结点比较多的网络,如区域网,此类 IP 地址大约己经分配了 5000个。
█ C 类地址:C 类 IP 地址是最常见的地址,如下图(C 类 IP 地址)所示。网络标识占 3 个字节,3 个高位用于地址类型识别,值为 110。左边 3 个字中的其余 21 位用于表示网络寻址,C 类地址支持大约 209715 个网络。最后一个字节用来标识主机,允许有 254 台主机。C 类地址通常分配给结点比较少的网络,例如,一些大的校园网可以拥有多个 C 类地址。
█ D 类地址:D 类地址是相当新的,前 4 位为 1110,此类地址用于组播,例如路由器修改、视频会议等应用系统都采用了组播技术实现,其格式参见下图(D 类 IP 地址)。
█ E 类地址:此类地址为保留地址,目前没有使用,前 4 位为 1111。 这 5 类 IP 地址的开始字段如下表(IP 地址的分类开始字段)所示。
地址类型 | 开始字段值(十进制) | 地址类型 | 开始字段值(十进制) |
---|---|---|---|
A 类 | 000〜127 | D 类 | 224〜239 |
B 类 | 128〜191 | E 类 | 240〜255 |
C 类 | 192〜233 |
2. 因特网规定的一些特殊地址
在 IP 地址中有一些特殊的地址,含义如下:
█ 主机 ID 全为 0 的 IP 地址,它不分配给任何主机,仅用于表示某个网络的网络地址,例如 192.168.1.0,表示网络为 192.168.1.0,其中的主机为 192.168.1.1〜192.168.1.254。
█ 主机 ID 全为 1 的 IP 地址,这个地址也不分配给任何主机,仅用做广播地址。目的地址为这个 IP 地址的分组数据发送给该网络中的所有结点,至于能否执行广播,则要依赖于其物理网络是否支持广播的功能。例如,192.168.1.255 为网络 192.168.1.0 的广播值,向此 IP 地址发送的分组数据,全网络的主机都接受。
█ IP 地址的 32 位全为 1 的地址,即 255.255.255.255,为有限广播地址,这个地址通常由无盘工作站启动时使用,从网络 IP 地址服务器获得一个分配给工作站的 IP 地址。
█ IP 地址的 32 位全为 0 的地址(即 0.0.0.0),表示主机本身,发往此 IP 地址的数据分组由本机接收。
█ IP 地址 127.0.0.1 是一个特殊的回环接口,它常用于在本地进行软件测试。例如在 Linux 操作系统下有一个配置文件 /etc/hoste,其中一行代码定义了 localhost 的 IP 地址:
127.0.0.1 localhost
3. IP 地址的申请
在局域网上的一个主机用户要想接入因特网,需要获得授权的 IP 地址,IP 地址由 IP 地址授权机构分配,此授权机构通常称为网络信息中心(NIC)。组网用户根据网络规模的大小,向较高层次的网络管理中心申请 IP 地址;通常情况下,网络中心根据申请者的规模进行评估,分配若干连续地址的 IP 地址,形成一个网络 ID,网络 ID 内部的 IP 地址由申请者的网络管理员进行管理,给子网内的各主机使用。
例如中国的大量 IP 地址申请由中国互联网络信息中心(CNNIC)受理,但 CNNIC 受理的仅仅为批量的 IP 地址,例如仅受理 8 个 C 类网络以上的 IP 地址申请,并且要保证一定的使用条件,申请地址较少的用户,需要向附近的互联网服务提供商(ISP)申请,由 ISP 对其申请到的 IP 地址进行再分配。
教育网是一个特殊的机构,IP 地址可以优先供给科研用途。教育网内 IP 的申请向中国教育科研网(edu.cn)网络中心提交,教育网将从亚太地区网络中心(APNIC)申请的 IP 地址进行再次分配。
2. 子网掩码(subnet mask address)
子网掩码指的是一个 32 位字段的数值,利用此字段来屏蔽原来网络地址的划分情况,从而获得一个范围较小的、可以实际使用的网络。
1. 子网掩码的含义
网络的子网掩码设置主要用来屏蔽原来网络的划分情况。使用子网掩码,网络设备可以分析得出一个 IP 地址的网络地址和子网地址,以及主机地址。网络的路由器根据目的地址的网络号和子网号可以做出路由寻址决策,IP 地址的主机 ID 不参与路由器的路由寻址操作,它用于在某个网段中识别一个网络设备。
子网掩码使用与 IP 相同的点分四段式的编址格式,其中值为 0 的部分对应于 IP 地址的主机 ID 部分,值为 1 的部分对应于 IP 地址的网络地址部分。子网掩码与 IP 地址进行与运算后,所得到的值为网络地址和子网地址,主机 ID 部分将不再存在。利用此特性可以计算两个 IP 地址的网络地址和子网地址判断是否处于同一个子网中。
例如,某个网络 IP 分组数据的目的地址为 192.168.1.151,如果其子网掩码为 255.255.255.128,IP 地址与子网掩码与运算后的结果为 192.168.1.128,则该 IP 地址的网络 ID 和子网号的值为 192.168.1.128。
其实,如果网络系统中只有 A、B、C 这 3 种类型的 IP 地址,判断 IP 地址的第一个字节的数值范围就可以判断此 IP 地址属于 A、B、C 中的哪一类网,从而得到该 IP 地址的网络部分和主机部分,不需要子网掩码的辅助。3 类网的子网掩码如下:
█ A 类地址网络的子网掩码地址为255.0.0.0;
█ B 类地址网络的子网掩码地址为255.255.0.0;
█ C 类地址网络的子网掩码地址为255.255.255.0。
子网掩码主要有如下用处:
█ 便于网络设备的尽快寻址,区分本网段地址和非本网段的地址。
█ 划分子网,进一步缩小子网的地址空间,充分利用目前紧缺的 IP 地址。
2. 利用子网掩码确定网段
利用子网掩码可以确定两个 IP 地址是否属于同一个网段。比较两台计算机的 IP 地址与子网掩码进行与运算后的值,如果结果相同,则说明两台计算机处于同一个子网络上。在以太网结构的网络中,同一子网内的两台计算机可以直接通信,而不用路由器对 IP 分组进行转发。
例如,主机 A 的 IP 地址为 192.168.1.151,子网掩码为 255.255.255.128;主机 B 的 IP 地址为 192.168.1.150,子网掩码为 255.255.255.128,对两个主机的计算如下表(A、B 主机的网络地址计算
)所示。
主机( IP/Netmask ) | A(192.168.1.151/255.255.255.128) | B(192.168.1.150/255.255.255.128) |
---|---|---|
IP 地址(二进制) | 11000000. 10101000.00000001.10010111 | 11000000.10101000.00000001.10010111 |
子网掩码(二进制) | 11111111.11111111.11111111.10000000 | 11111111.11111111.11111111.10000000 |
网络地址(二进制) | 11000000.10101000.00000001.10000000 | 11000000.10101000. 00000001.10000000 |
对两个主机的 IP 地址和子网掩码进行按位与运算,得到两个主机的网络地址均为 11000000.10101000.00000001.10000000,即 192.168.1.128,可知两个主机在同一个网络上。
对计算的过程进行分析可知。子网掩码 255.255.255.128 的网络上,所有最后一个字节的值为 128〜255 的 IP 地址与子网掩码进行运算的时候,其结果都相同。可以确定对于子网掩码为 255.255.255.128 的子网上,IP 地址从192.168.1.128〜192.168.1.255 都在同一个子网 192.168.1.128 上。由于 192.168.1.128 地址用于表示网络,192.168.1.255 用于广播。所以实际可用的 IP 地址数量为 128-2=126 个。
3. 用子网掩码进行网络划分
使用 A、B、C 类进行 IP 地址划分的方法对目前有限的 IP 地址来说有点浪费,所以出现了使用子网掩码进行网络划分的方法。使用子网掩码进行网络划分的基本原理是子网掩码与 IP 地址与运算结果相同的 IP 地址在同一个网络上。
例如,有 50 个主机,需要为其划定网络,而目前 IP 地址段空闲的为 192.168.1.0。如果全部使用上述的地址段,50 个主机占用 254 个有用地址显然太浪费了,可以对网络地址 192.168.1.0 进行重新划分,建立一个能够容纳 50 个主机的网络。
█ 首先计算需要的 IP 地址,50 个主机占用 50 个 IP 地址,加上 1 个网络地址和 1 个广播地址,建立网络需要 IP 地址 52 个。
█ 子网掩码的数值通常以 2 的 n 次方进行取值,所以取掩码值为 64。
█ 子网掩码为 255.255.255.64,IP 地址的范围是 192.168.1.0〜192.168.1.64,最多可以容纳 64 个主机,可以满足 50 个主机的需要。
3. IP 地址的配置
在 Linux 下,进行网络配置的命令是 ifconfig,它用于显示、设置网络设备的 IP 地址和子网掩码。ifconfig 的命令格式为:
ifconfig 网络编号 IP 地址 netmask 子网掩码
将当前主机的网络设备 eth0 配置成 IP 地址为 192.168.1.151,子网掩码为 255.255.255.128。命令为:
#ifconfig ethO 192.168.1.151 netmask 255.255.255.128
配置完毕后可以使用 ifconfig 命令进行查看,不带参数时,会显示所有激活的网络接口的当前配置信息。
4. 端口
TCP 和 UDP 协议是以 IP 协议为基础的传输,为了方便多种应用程序,区分不同应用程序的数据和状态,引入了端口的概念。
端口是一个 16 位的整数类型值,通常称这个值为端口号。如果是服务程序,则需要对某个端口进行绑定,这样某个客户端可以访问本主机上的此端口来与应用程序进行通信。由于 IP 地址只能对主机进行区分,而加上端口号就可以区分此主机上的应用程序。实际上,IP 地址和端口号的组合,可以确定在网络上的一个程序通路,端口号实际上是操作系统标识应用程序的一种方法。
端口号的值可由用户自定义或者由系统分配,采用动态系统分配和静态用户自定义相结合的办法。一些常用的服务程序使用固定的静态端口号,例如,Web 服务器的端口号为 80,电子邮件 SMTP 的端口号为 25,文件传输 FTP 的端口号为 20 和 21 等。
对于其他的应用服务,特别是用户自行开发的客户端应用程序,端口号采用动态分配方法,其端口号由操作系统自动分配。通常情况下,对端口的使用有如下约定,小于 1024 的端口为保留端口,由系统的标准服务程序使用;1024 以上的端口号,用户应用程序可以使用。如下图(Linux 下常用服务的端口号)所示为 Linux 下常用的端口及绑定的服务。
在 Linux 系统的文件 /etc/services 中列出了系统提供的服务,以及各服务的端口号等信息。