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位址。