IPv6

背景與目標

現今的網際網路發展蓬勃，截至2018年1月，全球上網人數已達40.21億，IPv4僅能提供約42.9億個IP位置。雖然目前的網路位址轉換及無類別域間路由等技術可延緩網路位置匱乏之現象，但為求解決根本問題，從1990年開始，互聯網工程工作小組開始規劃IPv4的下一代協定，除要解決即將遇到的IP位址短缺問題外，還要發展更多的擴充功能，為此IETF小組建立IPng，以讓後續工作順利進行。1994年，各IPng領域的代表們於多倫多舉辦的IETF會議中，正式提議IPv6發展計劃，該提議直到同年的11月17日才被認可，並於1996年8月10日成為IETF的草案標準，最終IPv6在1998年12月由互聯網工程工作小組以網際網路標準規範（RFC 2460）的方式正式公布。
IPv6的計劃是建立未來網際網路擴充的基礎，其目標是取代IPv4，雖然IPv6在1994年就已被IETF指定作為IPv4的下一代標準，由於早期的路由器、防火牆、企業的企業資源計劃系統及相關應用程式皆須改寫，所以在世界範圍內使用IPv6部署的公眾網與IPv4相比還非常的少，技術上仍以雙架構並存居多。預計在2025年以前IPv4仍會被支援，以便給新協定的修正留下足夠的時間。
IPv6能解決的核心問題與網際網路目前所面臨的關鍵問題之間出現了明顯的偏差，難以給網際網路的發展帶來革命性的影響。與IPv4的各種位址復用解決方案相比，IPv6能夠降低複雜性和成本，然而目前卻只有製造商較能夠感受到這個優勢，用戶和運營商​​無法直接感受到，導致產業鏈缺乏推動IPv6的動力。

與IPv4比較

在Internet上，資料以分組的形式傳輸。IPv6定義了一種新的分組格式，目的是為了最小化路由器處理的訊息標頭。由於IPv4訊息和IPv6訊息標頭有很大不同，因此這兩種協定無法互操作。但是在大多數情況下，IPv6僅僅是對IPv4的一種保守擴展。除了嵌入了網際網路位址的那些應用協定（如FTP和NTPv3，新位址格式可能會與目前協定的語法衝突）以外，大多數傳輸層和應用層協定幾乎不怎麼需要修改就可以在IPv6上運行。

無狀態位址自動組態（SLAAC）

當連接到IPv6網路上時，IPv6主機可以使用鄰居發現協定對自身進行自動組態。當第一次連接到網路上時，主機傳送一個鏈路本地路由器請求（solicitation）多播請求來取得組態參數。路由器使用包含Internet層組態參數的路由器宣告（advertisement）報文進行回應。
在不適合使用IPv6無狀態位址自動組態的場景下，網路可以使用有狀態組態，如DHCPv6，或者使用靜態方法手動組態。

IPv6編碼

IPv6具有比IPv4大得多的編碼位址空間。這是因為IPv6採用128位元的位址，而IPv4使用的是32位元。因此新增的位址空間支援2¹²⁸（約3.4×10³⁸）個位址，具體數量為340,282,366,920,938,463,463,374,607,431,768,211,456 個，也可以說成16³²個，因為32位元位址每位可以取16個不同的值。
網路位址轉換是目前減緩IPv4位址耗盡最有效的方式，而IPv6的位址消除了對它的依賴，被認為足夠在可以預測的未來使用。就以地球人口70億人計算，每人平均可分得約4.86×10²⁸（486117667×10²⁰）個IPv6位址。
IPv6從IPv4到IPv6最顯著的變化就是網路位址的長度。RFC 2373和RFC 2374定義的IPv6位址有128位元長；IPv6位址的表達形式一般採用32個十六進制數。
在很多場合，IPv6位址由兩個邏輯部分組成：一個64位元的網路前綴和一個64位元的主機位址，主機位址通常根據實體位址自動生成，叫做EUI-64（或者64-位擴展唯一標識）

IPv6封包

IPv6封包由兩個主要部分組成：頭部和負載。
包頭是包的前64位元，並且包含有源和目的位址，協定版本，通訊類別（8位元，包優先級），流標記（20位元，QoS服務品質控制），分組長度（16位元），下一個頭部（用於入棧解碼，類似IPv4中的協定號），和跳段數限制（8位元，生存時間，相當於IPv4中的TTL）。後面是負載。MTU至少1280位元組長，在常見的乙太網路環境中為1500位元組。負載在標準模式下最大可為65535位元組，如果擴充報頭設定了"jumbo payload"選項，則長度值被置為0。
IPv6曾有兩個有著細微差別的版本；在 RFC 1883 中定義的原始版本（現在廢棄）和 RFC 2460 中描述的現在提議的標準版本。兩者主要在通訊類別這個選項上有所不同，它的位數由4位元變為了8位元。其他的區別都是微不足道的。
由於分片（Fragmentation）只在IPv6的主機中處理，而IPv6也要求實現「MTU路徑發現」來避免封包需要被中間裝置分片，所以IPv4頭涉及分片的欄位從IPv6基本頭移出至專用的分片擴充報頭中。
在IPv6中，可選項都被從標準頭部中移出並在協定欄位中指定，類似於IPv4的協定欄位功能。

網路層安全

網際網路安全協定（Internet Protocol Security，即IPsec）原本為IPv6開發，但是在IPv4中已經大量部署。IPsec最初是IPv6協定的強制要求，但後來改為可選項。

雙堆疊

雙堆疊（Dual IP stack implementation）是將IPv6視為一種IPv4的延伸，以共用程式碼的方式去實作網路堆疊，其可以同時支援IPv4和IPv6，如此是相對較為容易的。如此的實作稱為「雙堆疊」，並且，一個實作雙堆疊的主機稱為「雙堆疊主機」。這步驟描述於RFC 4213。
目前大部分IPv6的實現使用雙堆疊。一些早期實驗性實作使用獨立的IPv4和IPv6堆疊。

穿隧

穿隧（Tunneling）是另一個用來連結IPv4與IPv6的機制。為了連通IPv6網際網路，一個孤立主機或網路需要使用現存IPv4的基礎設施來攜帶IPv6封包。這可由將IPv6封包裝入IPv4封包的穿隧協定來完成，實際上就是將IPv4當成IPv6的連結層。
IP協定號碼的41號用來標示將IPv6資料訊框直接裝入IPv4封包。IPv6亦能加入UDP封包，如為了跨過一些會阻擋協定41流量的路由器或NAT裝置。其它流行的封裝機制則有AYIYA和GRE。

自動穿隧

自動穿隧（Automatic tunneling）指路由設施自動決定穿隧端點的技術。RFC 3056建議使用6to4穿隧技術來自動穿隧，其會使用41協定來封裝。  穿隧端點是由遠端知名的IPv4任播位址所決定，並在本地端嵌入IPv4位元址資訊到IPv6中。現今6to4是廣泛布署的。
Teredo是使用UDP封裝的穿隧技術，據稱可跨越多個NAT裝置。Teredo並非廣泛用於布署的，但一個實驗性版本的Teredo已安裝於Windows XP SP2 IPv6堆疊中。IPv6，包含6to4穿隧和Teredo穿隧，在Windows Vista中預設是啟動的。許多Unix系統只支援原生的6to4，但Teredo可由如Miredoo的第三方軟體來提供。
ISATAP藉由將IPv4位元址對應到IPv6的鏈路本地位址，從而將IPv4網路視為一種虛擬的IPv6區域連線。不像6to4和Teredo是站點間的穿隧機制，ISATAP是一種站點內機制，意味著它是用來設計提供在一個組織內節點之間的IPv6連接性。

組態穿隧（6in4）

在組態穿隧中，如6in4穿隧隧，穿隧端點是要明確組態過的，可以是藉由管理員手動或作業系統的組態機制，或者藉由如tunnel broker等的自動服務。組態穿隧通常比自動穿隧更容易去除錯，故建議用於大型且良好管理的網路。
組態穿隧在IPv4穿隧上，使用網際協定中號碼的41號。

用於只支援IPv6主機的代理和轉譯

在區域網際網路註冊管理機構耗盡所有可使用的IPv4位元址後，非常有可能使新加入網際網路的主機只具有IPv6連接能力。對這些須要向後相容以能存取IPv4資源的客戶端，須要布署合適的轉換機制。
一種轉換技術是使用雙堆疊的應用層代理，如網頁代理伺服器。
一些對於應用程式無法得知但在其低層使用類NAT轉換技術也曾被提出。但因為一般應用層協定所要求的能力其應用太廣，其中大部分都被認定在實際上太不可靠，並且被認為應刪除。