IP 与路由(一)

IP(Internet Protocol网际协议) 是 TCP/IP 协议族中最核心的部分。IP 是一个网络层协议,为处于不同网络中的主机提供端到端通信的服务。IP 协议采用分组发送的方式工作,只需要下层协议提供分组交换服务,不需要在通信前建立专用的连接。IP 协议只提供“尽力而为”的分组传送服务,不保证传送的分组不丢失、不重复、不出差错,也不保证分组能按顺序到达。因此,IP 的上层协议还应当视情况实现差错控制、重传等功能。

目前 IP 有两个在互联网中应用的版本,分别是 Internet Protocol version 4(IPv4)Internet Protocol version 6(IPv6),本文主要讨论的是 IPv4,如无特殊说明,下文中的“IP”均指 IPv4。

IP 地址

所有使用 IP 协议互联的主机都配置有 IP 地址,IP 地址是 TCP/IP 网中主机的标识,IP 路由的实现依赖于 IP 地址。IP 地址是一个非常重要的概念,也是 TCP/IP 在日常交流中被提及最频繁的概念,以至于在日常语境中“IP”一词往往特指“IP 地址”。

IP 地址是一个 32 位无符号整数,由 4 个字节组成,因此理论上最多可以有 232 约 42.9 亿个 IP 地址。为了便于表达和记忆,IP 地址通常不直接用整数表示,而用点分十进制的形式表示——从高位到低位依次用 4 个范围为 0~255 的十进制数表示 IP 地址的 4 个字节,中间用点号分隔。例如,本站目前所在服务器的 IP 地址是 107.182.176.178,用十进制数表示这个 IP 地址是 1807134898,用十六进制数表示是 0x6bb6b0b2。

IP 地址是 Internet 上的公共资源,目前由互联网名称与数字地址分配机构(Internet Corporation for Assigned Names and Numbers, ICANN)负责管理和分配。IP 地址的分配是根据地理区域分层次进行的,全球共有如下五个分布在不同地区的区域互联网注册管理机构(Regional Internet Registries, RIRs):

AfriNIC 非洲互联网络信息中心
APNIC 亚太互联网络信息中心
ARIN 美国互联网数字地址注册局
LACNIC 拉丁美洲和加勒比地区互联网络信息中心
RIPE NCC 欧洲互联网络协调中心

下面的地图展示了上述几个区域互联网注册管理机构管辖的范围,图片来源于维基百科 Regional Internet registry 词条。

Regional_Internet_Registries_world_map图 1 全球五个区域互联网注册管理机构管辖的范围

ICANN 将整个 IP 地址空间划分为若干块分配给上述几个区域互联网注册管理机构,区域互联网注册管理机构再将他们所有的 IP 块分成更小的块,分配给所管辖的互联网服务提供商或其他网络机构;互联网服务提供商最终将 IP 地址分配给每一台接入互联网的设备[1]

并不是所有的 IP 地址都应用在 Internet 中,IP 地址空间中还有相当可观数量的 IP 地址被保留用于组建私网、广播、多播及其他用途,以这些地址为目的地址的 IP 报文不会被 Internet 中的路由器转发。下面是这些 IP 地址的列表:

起始地址 终止地址 数目 用途
0.0.0.0 0.255.255.255 16,777,216 当前网络
10.0.0.0 10.255.255.255 16,777,216 私有地址
100.64.0.0 100.127.255.255 4,194,304 共享地址空间
127.0.0.0 127.255.255.255 16,777,216 环回
169.254.0.0 169.254.255.255 65,536 本地链路
172.16.0.0 172.31.255.255 1,048,576 私有地址
192.0.0.0 192.0.0.255 256 IETF 协议分配
192.0.2.0 192.0.2.255 256 文档与示例用
192.88.99.0 192.88.99.255 256 IPv6-IPv4 中继
192.168.0.0 192.168.255.255 65,536 私有地址
198.18.0.0 198.19.255.255 131,072 网络基准测试用
198.51.100.0 198.51.100.255 256 文档与示例用
203.0.113.0 203.0.113.255 256 文档与示例用
224.0.0.0 239.255.255.255 268,435,456 IP 多播
240.0.0.0 255.255.255.254 268,435,455 保留地址
255.255.255.255 1 广播地址

除去上述保留的地址之后,真正用于 Internet 的 IP 地址约有 37.0 亿个。Internet 已经以难以置信的高速度发展了二十多年,过去的十年中,互联网用户数每年都有数以亿计的增长,接入 Internet 的设备越来越多,IP 地址资源变得越来越稀缺,Internet 必须面对 IP 地址即将用尽的现实。相比于 IPv4,IPv6 拥有多得多的地址数,可以解决地址不够用的问题,目前 Internet 已经开始向 IPv6 过渡了。此外,NAT(Network address translation) 技术的广泛运用也一定程度上缓解了 IP 地址数紧张的问题,关于 NAT 的话题将在后续博文中详细讨论。

IP 子网

IP 的设计目标是连接多个本地网络,在多个网络之间建立一个互联系统。网络中的每一台主机都至少拥有一个唯一的 IP 地址,一个 IP 地址由网络号和主机号两部分组成。网络号用于区分整个网络中不同的子网,主机号用于区分同一子网下具体的主机。

将一个 IP 地址截成两段,较高位的一段是网络号,较低位的一段是主机号。划分子网时可以根据具体的情况在已分配的所有 IP 地址范围内任意选取网络号和主机号的长度。值得注意的是,IP 网络是具有层次结构的,一台子网内主机所在的整个网络可能只是另一个更大的网络中子网的一部分。网络的层次结构也表现在 IP 地址上,IP 地址中的主机号可以再次划分为一个子网号和一个子网内的主机号。下图是一个例子。

ip-subnet图 2 IP 地址 125.221.228.23 所对应网络号、子网号和主机号的情况

网络中所有的主机都配置有 IP 地址,但因为 IP 地址是由网络号与主机号两个部分组成的,还需要配置子网掩码使程序能区分 IP 地址中的网络号和主机号。子网掩码的形式与 IP 地址一样也是一个 32 位整数,用点分十进制表示;在一个子网掩码中,网络号部分所在的位全为 1,主机号部分所在的位全为 0。例如,上图中的 IP 地址所在子网的子网俺码是 255.255.255.0。IP 地址和它所对应的子网掩码求按位与运算后得到的结果正好是该地址的网络号;IP 地址和它所对应的子网掩码的反码求按位与运算后得到的结果正好是该地址的主机号。

在需要同时表示 IP 地址和它的子网划分时,还有一种更简便的形式,表示方法是在一个 IP 地址之后加上一个斜杠(/)再写上子网掩码中“1”的个数。如上图中的 IP 地址与子网划分可以这样表示:125.221.228.23/24。

子网号为全 0 的 IP 地址被保留用于表示网络号,不能配置给网络中的主机;另外,子网号为全 1 的 IP 地址也是保留的,它用于表示子网的广播地址。例如上图中的 IP 地址所在的网络号是 125.221.228.0,广播地址是 125.221.228.255。

后续博文将继续讨论 IP 报文的细节及 IP 路由的工作方式。

(允许转载本文,转载请注明出处:http://luodichen.com/blog/?p=402 )

参考文献
[1] ICANN. Beginner’s Guide to INTERNET PROTOCOL (IP) ADDRESSES, 2011.
[2] Wikipedia. IPv4[EB/OL]. https://en.wikipedia.org/wiki/IPv4