IP地址

网际协议地址（Internet Protocol Address）是网际协议中用于标识发送或接收数据报的设备的一串号码。

## 概述

当设备连接网络，设备将被分配一个IP地址，用作标识。通过IP地址，设备间可以互相通讯，如果没有IP地址，我们将无法知道哪个设备是发送方，无法知道哪个是接收方。IP地址有两个主要功能：标识设备或网络和寻址。

常见的IP地址分为IPv4与IPv6两大类，IP地址由一串数字组成。IPv4为32位长，通常书写时以四组十进制数字组成，并以点分隔，如：`172.16.254.1`；IPv6为128位长，通常书写时以八组十六进制数字组成，以冒号分割，如：`2001:db8:0:1234:0:567:8:1`。

## 功能

IP地址有两个主要的功能：

- 标识主机：更具体地说，标识其网络接口，并且提供主机在网络中的位置。
- 网络寻址：网际协议（缩写：IP）的一个重要机制就是网络寻址（internet address）。该功能的目的是将数据报从一个网络模块送到目的地。在发送的整个过程，IP地址（address）充当着目的地的位置，域名（name）意味着我们要找什么，路由（route）代表着如何到达目的地的这个过程。每个IP数据包的标头包含了发送主机的IP地址和目的主机的IP地址。

## 历史

1981年，IETF定义了32位IP地址的IPv4。随着互联网的发展，网络位置（IPv4）渐渐被消耗殆尽，虽然当前的网络地址转换及无类别域间路由等技术可延缓网络位置（IPv4）匮乏之现象，但为求解决根本问题，从1990年开始，互联网工程工作小组开始规划IPv4的下一代协议，除要解决即将遇到的IP地址短缺问题外，还要发展更多的扩展，为此IETF小组创建IPng，以让后续工作顺利进行。1994年，各IPng领域的代表们于多伦多举办的IETF会议中，正式提议IPv6发展计划，该提议直到同年的11月17日才被认可，并于1996年8月10日成为IETF的草案标准，最终IPv6在1998年12月由互联网工程工作小组以互联网标准规范（RFC 2460）的方式正式公布。

IP地址空间 是由互联网号码分配局（Internet Assigned Numbers Authority，简称：IANA）以及其他5个区域互联网注册管理机构（Regional Internet Registry，简称：RIR）在其指定区域内分配给本地Internet注册表，例如网络服务提供商（Internet Service Providers，简称：ISP）和其他最终用户。IPv4地址被IANA以`/8`块为单位分布给RIR，每个地址块长24位，大约有1678万个地址，但自2011年以来在IANA级别已用尽。在非洲，RIR中只有1个RIR仍然可以给当地分配。

## IP版本

当今，Internet上普遍使用两种版本的Internet协议。Internet协议的原始版本于1983年在ARPANET（Internet的前身，中文：阿帕网）中首次部署，其版本是Internet协议版本4（IPv4）.

直到1990年代初，可供分配给Internet服务器提供商（ISP）和最终用户组织的IPv4地址空间迅速的消耗殆尽，促使Internet工程任务组（IETF）探索新的技术以扩展在Internet上的寻址能力。结果是对Internet协议进行重新设计，该协议最终在1995年被称为Internet协议版本6（IPv6）。IPv6技术处于各个测试阶段，一直到2000年代中期开始商业生产部署。

今天，这两个版本的Internet协议（网际协议）在同时使用。除了其他的技术性更改之外，每个版本对地址的格式定义都不同。由于IPv4的历史悠久，通用术语IP地址仍通常指IPv4定义的地址（即IPv4地址）。IPv4和IPv6之间的版本顺序差距是由1979年将版本5分配给实验性Internet流协议而引发的，但是从未将其称之为IPv5。

虽然定义了其他的协议版本，版本1（v1）到版本9（v9），但是只有v4和v6得到了广泛的使用，v1和v2是1974年和1977年的TCP协议（传输控制协议）的名称，因为当时IP规范是分开的。v3于1978年定义，而v3.1是TCP与IP分离的第一个版本。v6是几个建议的版本的集合，其中包括v6 简单Internet协议，v7 TP/IX：下一个互联网，v8 PIP（P Internet协议）和v9 TUBA（TCP&UDP和大的地址）。

## 子网

IP网络可以在IPv4和IPv6中划分子网。为此，将IP地址识别成由两部分组成：网络前缀（高位）和其余的位（称为其余字段，主机标识符或者接口标识符（IPv6）），用于网络内的主机编号。子网掩码（subnet mask）或无类别域间路由（Classless Inter-Domain Routing，简称：CIDR）表示法确定了IP地址如何分为网络部分和主机部分。

子网掩码一词仅用于IPv4地址中。但是，两个版本的IP地址都使用CIDR概念和符号。在此，在IP地址后面加斜杠和用于标识网络部分的位数（十进制），也称路由前缀。例如：IPv4地址及其子网掩码分别可以是 `192.0.2.1` 和 `255.255.255.0`。因为IP地址的前24位表示网络和子网，所以相同的IP地址和子网的CIDR表示法为`192.0.2.1/24`。

## IPv4

IP地址由32位二进制数组成，为便于使用，常以XXX.XXX.XXX.XXX形式表现，每组XXX代表小于或等于255的10进制数，该表示方法称为点分十进制。例如维基媒体的一个IP地址是208.80.152.2。在1981年起使用的分类网络中，IP地址可分为A、B、C、D和E共五类。1993年，互联网工程任务组于引入无类别域间路由（CIDR）取代此过时的架构。单播地址不再区分A类、B类和C类。

公共IP地址是唯一的。IPv4技术可能使用的地址数目最多可有4,294,967,296个（232）。由于早期编码和分配上的问题，很多区域的编码实际上被空出或不能使用。加上互联网的普及，使大部分家庭都至少有一部电脑，连同公司的电脑，以及连接网络的各种设备都消耗大量IPv4地址资源。

随着互联网的快速成长，IPv4地址于2011年用尽。互联网号码分配局在2011年1月把最后两个`/8`地址块指派给亚太互联网络信息中心。在2月，根据原有的计划及政策，IANA把保留的（reserved）五个`/8`地址块平分给五个区域互联网注册管理机构。

网络号｜主机号｜是否可以作为源地址｜是否可以作为目的地址｜备注/描述

全为0｜全为0｜允许｜禁止｜表示本网主机

全为0｜Host ID｜允许｜禁止｜表示特定主机

全为1｜全为1｜禁止｜允许｜定向广播地址

127｜任意合法的值｜允许｜允许｜迂回地址，用于本地测试

Network ID｜全为1｜禁止｜允许｜直接广播地址

### 子网划分的历史

在Internet协议开发的早期阶段，网络号始终是最高阶的八位元组（最高且有效的八位）。由于此方法仅允许256个网络使用，所以很快被证明这样是不够的，因为所开发的其他网络都独立于已经由网络号指定的现有网络。1981年，随着分类网络体系结构的引入，对寻址规范进行了修订。

一流的网络设计允许进行大量的单独网络分配和细颗粒的子网设计。IP地址的最高的有效的八位元组的前三位被定义为地址的类别位。为通用单播寻址定义了三个类别（A类、B类和C类）。根据派生的类，网络标识基于整个地址的八位字节边界段。每个类别在网络标识符中依次使用其他八位元组，从而减少高阶类别（B类和C类）中的主机数量。上表概述了这个过时的系统。

分类网络的设计在Internet启用阶段就达到了这个目的，但是对于20世纪90年代的网络的迅速发展，它缺乏可扩展性。地址空间的类系统在1993年被无类别域间路由（CIDR）取代。CIDR基于可变长子网掩码（VLSM），允许基于任意长度前缀来分配以及路由。当今，分类网络的残余概念仅仅在有限的范围内用于某些网络的软件和硬件（例如子网掩码）的默认配置参数，以及用于网络管理员们讨论中使用的术语。

## IPv6

### IP编址

从IPv4到IPv6最显著的变化就是网络地址的长度。RFC 2373和RFC 2374定义的IP地址，就像下面章节所描述的，有128位长；IP地址的表达形式，一般采用32个十六进制数。

IPv6地址有约3.4×1038个，或是43亿×43亿×43亿×43亿。

在很多场合，IP地址由两个逻辑部分组成：64位的网络前缀和64位的主机地址。主机地址通常根据物理地址自动生成，叫做EUI-64（或者64位扩展唯一标识）。

### 私有地址

就像IPv4为专用的网络保留的地址一样，在IPv6中也有被预留的地址。在IPv6中，这些地址被称为唯一本地地址（ULA）。路由前缀：fc00::/7 就是为这个块保留的，且被分为2个 /8 块，都具有不同的隐藏策略。这些地址包括一个40位的伪随机数，如果站点合并或者数据包被错误的路由，则可以将地址冲突的风险降到最低。

以fe80::开头的地址，我们称之为本地链路地址，将这类地址分配给链路上的通信接口，这些地址由操作系统为每个接口自动生成。这为在链路上的所有的IPv6的主机之间提供了即时通信。此功能适用于IPv6网络中的管理的较低的层，例如邻居发现协议。

专用地址前缀和本地链路地址不得在公共互联网中进行路由。

## IP地址的分配

IP地址是在主机加入网络时动态分配的，或是通过主机硬件/软件的配置永久分配给主机的。永久性的配置也称为使用静态IP地址。相反，在每次重新启动时分配的IP地址，称为使用动态IP地址。

动态IP地址是通过网络使用动态主机配置协议（DHCP）分配的。DHCP是分配地址最常用的技术。它避免了为网络上的每台设备分配特定静态地址的管理负担。如果某些设备在特定的时间处于联机状态，它还允许设备共享网络上有限的地址空间。通常，在现代的台式计算机操作系统中，默认情况下会启用动态IP地址分配。

DHCP分配的地址于租约相关联，并且一般都是具有有效期。如果主机在到期前未能续订租约，则可以将该地址分配给其他设备中的一台设备。某些DHCP实现会在主机每次加入网络时根据其MAC地址尝试将相同的IP地址重新分配给该主机。网络管理员可以通过基于MAC地址分配特定的IP地址来配置DHCP。

DHCP并不是唯一一种动态IP地址分配技术。Bootstrap协议是DHCP的类似协议和前身。拨号和某些宽带网络使用点对点协议的动态地址功能。

用于网络设施的计算机和设备（例如：路由器或者邮件服务器等），通常配置为静态地址分配。

在动态或者静态地址分配失效的情况下，操作系统可以将无状态地址自动配置，将链接本地的地址分配给主机。

## 地址转换

NAT设备会将专用网络上的不同IP地址映射为公共互联网上的不同的TCP或者UDP的端口号。在家用网络中，NAT功能通常是在家庭网络的网关中实现的。在这种情况下，连接到网关的计算机具有专用的IP地址，并且网关会在外部接口上进行Internet通信。内部的计算机共享这一个公共的IP地址。