簡體   English   中英

IPv6 子網划分查詢

[英]Query on IPv6 subnetting

假設給出了兩個 IPv6 地址 ip1 (abc::1/64), ip2 (abc::2/64),確定它們是否屬於同一子網的算法是什么?

對於 IPv4,一個地址中的每個八位字節都用子網八位字節掩碼,並將結果與​​第二個地址的類似練習的結果進行比較。 我們可以對 IPv6 地址中的每個十六進制組做類似的事情嗎?

此外,在 IPv6 中,前綴長度 /64 是否等同於 'ffff:ffff:ffff:ffff::'? 網絡掩碼如何以 IPv6 地址格式表示?

謝謝!

假設給出了兩個 IPv6 地址 ip1 (abc::1/64), ip2 (abc::2/64),確定它們是否屬於同一子網的算法是什么?

如果前 64 位相等,則它們位於同一子網上。 這些是地址中的前四個“塊”。 如果你寫下完整的地址,它們會變成 0abc:0000:0000:0000:0000:0000:0000:0001 和 0abc:0000:0000:0000:0000:0000:0000:0002。 前 64 位(0abc:0000:0000:0000: 部分)是相等的,所以它們在同一個子網上。

對於 IPv4,一個地址中的每個八位字節都用子網八位字節掩碼,並將結果與​​第二個地址的類似練習的結果進行比較。 我們可以對 IPv6 地址中的每個十六進制組做類似的事情嗎?

實際上,您屏蔽的是位,而不是八位字節。 但是您仍然可以使用相同的技術。 將地址轉換為位並使用與前綴長度對應的位序列對其進行掩碼。 因此,/64 將是 64 位,值為 1,后跟 64 位,值為 0。對於 /48,它將是 48 位,值為 1,后跟 80 位,值為 0。

此外,在 IPv6 中,前綴長度 /64 是否等同於 'ffff:ffff:ffff:ffff::'? 網絡掩碼如何以 IPv6 地址格式表示?

通常你不會,但 'ffff:ffff:ffff:ffff::' 對應於 /64 網絡掩碼。

IPv4 網絡掩碼有點虛假,因為它允許人們指定像 255.0.0.255 這樣的掩碼。 IPv6 通過將術語“前綴長度”定義為網絡掩碼中連續位的長度來澄清這一點。

255.0.0.0     ≡ ff00::      ≡ 8-bit prefix
255.255.0.0   ≡ ffff::      ≡ 16-bit prefix
255.255.192.0 ≡ ffff:C000:: ≡ 18-bit prefix

如果您有兩個地址,IP#1 和 IP#2 以及一個網絡掩碼 NETMASK,那么要測試這兩個地址是否在同一網絡中,則以下必須為真:

IP#1 & NETMASK == IP#2 & NETMASK

這適用於 IPv4 和 IPv6,因此所需要做的就是將 IPv6 前綴長度轉換為更易於在測試中使用的網絡掩碼。

路由查找的標准基數樹 (Trie) (Patricia) 實現可用於 IPv6。

網絡掩碼表示如下:

當我們描述 IPv4 IP 和網絡時,我們使用網絡掩碼來定義網絡。 IPv6 已經決定,與其使用舊的 255.255.255.0 表示法,不如使用 /# 表示法。 所以我們的網絡掩碼將是 128 來描述類似於 /32 (255.255.255.255) 或一台主機的東西。 請注意, expr 16 \\* 8給了我們 128。” [1]

[1] http://www.linux-sxs.org/networking/ipv6_for_beginners.html

[2] http://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM