IPV6 HOW TO

看板IPv6作者 (...)時間21年前 (2004/02/24 08:46), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
2. 什麼是IPv6? IPv6是新的第三層傳輸協議(參考http://www.linuxports.com/howto/ intro_to_networking/c4412.htm#PAGE103HTML),它將用來取代IPv4(也叫做IP). IPv4是很早以前設計的,現在對IPv4提供更多的地址和性能方面有著更高的要求. 在IPv6中主要的變革是重新設計了報頭. 包括將地址位的大小從32 bits 增加到 128 bits. 因為第三層傳輸主要負責end-to-end(端對端)基於地址的數據包路由. 它必需包含新的IPv6地址(來源和目標),這點就像IPv4一樣. 下面這個連結提供了更多有關IPv6的資訊, 和RFC 的例表等等: http://www.switch.ch/lan/ipv6/references.html 2.1 IPv6在Linux作業系統上的歷史 將要做的: 更好的時間排列, 更多的內容... 2.2 開始 第一次將與IPv6有關的代碼加入 Linux kernel 2.1.8 的工作是由Pedro Roque 在1996年11月完成的. 它基於BSD API: --------------------------------------------------------------------------- diff -u --recursive --new-file v2.1.7/linux/include/linux/in6.h linux/include/linux/in6.h --- v2.1.7/linux/include/linux/in6.h Thu Jan 1 02:00:00 1970 +++ linux/include/linux/in6.h Sun Nov 3 11:04:42 1996 @@ -0,0 +1,99 @@ +/* + * Types and definitions for AF_INET6 + * Linux INET6 implementation + * + * Authors: + * Pedro Roque <******> + * + * Source: + * IPv6 Program Interfaces for BSD Systems + * <draft-ietf-ipngwg-bsd-api-05.txt> --------------------------------------------------------------------------- 以上的代碼來自patch-2.1.8 (e-mail 地址在複製&貼上時漏掉了) 2.3 其間 因為缺少人手, 在核心加入IPv6的計劃不能按照討論的或新的RFCs執行. 在2000年的10月, 一個叫做USAGI(http://www.linux-ipv6.org/)的計劃在日本正式啟動. 目標是執行所有不見了的, 擱淺的(IPv6 support in Linux)計劃. 計劃緊隨 KAME project (http://www.kame.net/) 的腳步. 依據 vanilla Linux 核心源 代碼進行遂步的改動. 2.4 現在 不幸的是 USAGI 的 patch(補丁)很大, Linux networking 維護人員無法將它包含 進現在Linux 2.4.x 系列的源代碼當中去. 因此2.4.x 失去了一些(多數)括展性, 並且不支持所有當前的設計和RFCs. 這導致了它和其它作業系統會產生一些協同問題. 2.5 將來 USAGI 現在正在將當前的括展加入到 Linux 2.5.x 核心當中. 希望2.6.x 系列核心能有一個真正和最新的IPv6功能. 2.6 IPv6 的地址會是什麼樣 ? 剛才提過, IPv6 的地址有128 bits 長. 這樣的 bits 可以產生39個十進字數字: -------------------------------------------------------------------------------- 2^128-1: 340282366920938463463374607431768211455 -------------------------------------------------------------------------------- 這樣的地址很難記得住. IPv6的地址是逐位定位的(就像IPv4, 但這個觀點不是公認的). 所以十六進制能更好地代表這些數字, 4 bits(也叫做"nibble")表現為數字(0-9)或字符 a-f(10-15). 這種格式將IPv6的地址長度縮減到個32字符. -------------------------------------------------------------------------------- 2^128-1: 0xffffffffffffffffffffffffffffffff --------------------------------------------------------------------------- 這種表現形式仍然很不方便. (可能混淆或遺漏單個十六進制數字), 所以IPv6的設計者 將地址形式定為每16bit就用":"區分開來. 開頭的"0x"(在程式設計當中用來表示十六 進制數值)被移除了: --------------------------------------------------------------------------- 2^128-1: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff --------------------------------------------------------------------------- 一個有效的地址(稍後請看地址類型)如下: --------------------------------------------------------------------------- 3ffe:ffff:0100:f101:0210:a4ff:fee3:9566 --------------------------------------------------------------------------- 為了簡化, 每個16bit開頭的0可以被省略: --------------------------------------------------------------------------- 3ffe:ffff:0100:f101:0210:a4ff:fee3:9566 -> 3ffe:ffff:100:f101:210:a4ff:fee3:9566 --------------------------------------------------------------------------- 連續的並且數值為0的16bit地址段可以用"::"表示. 但是一個IPv6地址當中只能出現 一次, 不然這種方法保持不了多久. --------------------------------------------------------------------------- 3ffe:ffff:100:f101:0:0:0:1 -> 3ffe:ffff:100:f101::1 --------------------------------------------------------------------------- 簡化得最短的IPv6 localhost地址: --------------------------------------------------------------------------- 0000:0000:0000:0000:0000:0000:0000:0001 -> ::1 --------------------------------------------------------------------------- 這種方法也叫做 compact (base85 coded) representation defined RFC 1924 / A IPv6緊湊地址表示法(定於1996), 但沒有提起過, 例如: --------------------------------------------------------------------------- # ipv6calc --addr_to_base85 3ffe:ffff:0100:f101:0210:a4ff:fee3:9566 Itu&-ZQ82s>J%s99FJXT --------------------------------------------------------------------------- 資訊: ipv6calc 是一個IPv6地址格式的計算和轉換的計劃, 您可以在這裡找到: http://www.bieringer.de/linux/IPv6/ipv6calc/ 2.7 FAQ(基礎) 為什麼叫IPv6,而不能成為IPv4之後的IPv5 ? 在任何IP頭, 前4bits 是為協議版本號所保留的. 所以理論上一個協議的版本號在 0和15之間是有效的: 4 己經為IPv4所使用. 5 為 Stream 協議所保留(STP, RFC 1819 http://rfc.net/rfc1819.html 沒有公開過) IPv4之後可用的版本號是6, 因此 IPv6 就這樣旦生了! IPv6 地址: 為什麼會有這麼長的bits 在設計IPv4的時候,人們認為32bit的長度足夠全世界使用. 看一看這些年, 32bit 就現在和未來幾年來說是足夠的. 然而, 32bits 不能在將來滿足全球各種網路設備 對IP地址的需求.想一想將來要連結網路的移動電話, 汽車(包括電子總控系統), 烤麵包機,冰箱, 照明開關... 所以設計者採用了128bits, 是今天IPv4 大小(2^96)與長度的4倍. 實際使用的大小可能比它看起來的還要小. 因為現在的定義地址設計, 64bits 用於 interface identifiers(界面標識). 另外64bits用於路由. 寄於現在嚴格的層數集 合(/48, /35, ...), IPv6 所能提供的地址空間還是可能不夠, 希望這種情況不要在 往後的幾年裡發生. IPv6 地址: 為什麼在新的設計裡bits這麼小? 雖然, (可能)有些人(在Internet裡)考慮IPv8和IPv6, 設計無論從接受和執行都是 那麼的遙遠. 在此其間128bit對於報頭和數據傳輸來說是最佳的選擇. 考慮到在IPv4里和IPv6里的最大/最小傳輸單位(MTU,它們分別是576byte 和 1280 byte), IPv4 的報頭是20 byte(最小值,可以通過調節IPv4的選項增大到60byte), IPv6 的報頭 是48 byte(固定不變的), 報頭分別占它們MTU的3.4%和3.8%, 這意昧著報頭佔了很大一 部分開銷.更大bits的地址需要更大的報頭,因而佔據更大的開銷. 同樣,顧及到MTU正常連結的最大值(像現在的以太網): 1500byte(除了特別的列子: 9k byte 應用在 Jumbo frames 當中). 最終,如果要傳輸在第三層數據包中占10%或 20%報頭, 這樣的IP地址在設計上也就沒有意義了. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.168.214 ※ 編輯: iLucifer 來自: 61.229.168.214 (02/24 09:22)
文章代碼(AID): #10Efxzy_ (IPv6)
文章代碼(AID): #10Efxzy_ (IPv6)