IP 位址可以有多少個字元?

IP 位址可以有多少個字元?

我必須在 mysql 表中建立一個欄位來儲存 ip 位址。我需要知道 IP 位址的最大字元數。無論是 ipv4、ipv6 或其他一些可以呈現異常長的有效 IP 位址的類型。那麼我應該將字元限制設為多少呢?

我要求的長度是指「foo」這個字有 3 個字符,而不是位元組或類似的東西。

答案1

IPv6 位址最長為 8 組,每組 4 個字元(總共 32 個),每組以冒號分隔。總共有 39 個字元。

IPv4 位址最多為 4 組,每組 3 個數字(12 個字元),每組之間以點 (.) 分隔。總共有 15 個字元。

所有這些都假設 IP 位址應該以人類可讀的形式儲存。我更喜歡以十進制形式儲存 IP 位址,因為您永遠不知道它將如何使用。你的旅費可能會改變。

答案2

這並不像人們想像的那麼容易。

在大多數情況下你是安全的45

普通 IPv6 位址

0000:0000:0000:0000:0000:0000:0000:0000

8 * 4 + 7 =39


IPv4 映射的 IPv6 位址

RFC4291

0000:0000:0000:0000:0000:ffff:192.168.100.228

(6 * 4 + 5) + 1 + (4 * 3 + 3) = 29 + 1 + 15 =45


頭檔將 INET6_ADDRSTRLEN 定義為46


具有範圍區域的 IPv6

RFC4007

範圍區域可以是數字,甚至可以是字串(介面名稱)。

ff02::5678%5
ff08::9abc%interface10

介面名稱的長度取決於系統。在 Linux 中,它由 IFNAMSIZ 常數定義。 16是一個共同的值。上面的 45 個字元:

45 + 1 + 16 =62


另請參閱https://stackoverflow.com/questions/166132/maximum-length-of-the-textual-representation-of-an-ipv6-address

相關內容