Ipv6

為什麼 IPv6 地址不像 IPv4 那樣表示為點分十進制

  • February 3, 2020

也許這不是這個問題的正確位置,但我沒有找到更好的地方。

RFC 2373中定義的 IPv6 地址的文本表示形式指出,地址應表示為相應部分的 8 個十六進制 16 位值,例如2001:0db8:5f62:ab41:0000:0000:0000:0801或(縮寫為形式)2001:db8:5f62:ab41::801

那麼,什麼原因(RFC 2373 沒有說明)不使用帶有 16 位部分的“舊”點分十進製表示法(因此,它的等效表示法是8193.3512.24418.43841.0.0.0.2049)?

這仍然可以很容易地與 IPv4 地址區分開來(只是因為使用了不同數量的單詞和點),並且在指定埠時不需要特殊的語法(例如括號)(例如,$$ 2001:db8:5f62:ab41::801 $$:8080看起來有點尷尬,因為它使用冒號用於不同的目的(將 IP 地址中的單詞和地址本身與埠號分開,所以我們需要括號),並且還混合了十進制(用於埠)和十六進製表示法)。

對於大多數人來說,32 位以 16 為基數的數字比 8 位以 65,536 為基數的數字更容易理解。Hex 相對緊湊,是 2 的冪,並且已經在其他環境中使用,例如 UUID、散列函式和記憶體地址。

當停留在 4 位邊界 = 一個十六進制數字時,位遮罩 CIDR 表示法很容易。

  • 2001:db8:1234::/48
  • 2001:db8:1234:5600::/56
  • 2001:db8:1234:5678::/64

此外,以冒號分隔的十六進制可以明確地使用 IPv4 映射地址。其中 v4 位是未修改的點分十進制。例如:::FFFF:129.144.52.38。更多關於這些在 RFC 4038 中。

當然,支架包裝看起來有點難看。通過名稱解析解決這個問題;您在瀏覽器中輸入的任何內容都應該在 DNS 中。

另請參閱:為什麼 IPv6 以十六進制格式表示?

引用自:https://serverfault.com/questions/1001524