MySQL テーブルに IP アドレスを保存するためのフィールドを作成する必要があります。IP アドレスの最大文字数を知る必要があります。IPv4、IPv6、または有効な IP アドレスを異常に長くする可能性のあるその他のタイプかどうか。文字数制限を何に設定すればよいでしょうか。
私が尋ねているのは、バイト数などではなく、「foo」という単語が 3 文字であるという意味の長さです。
答え1
IPv6 アドレスは、最長で 4 文字のセットが 8 セット (合計 32 文字) あり、各セットはコロンで区切られます。つまり、39 文字になります。
IPv4 アドレスは、最大 4 セットの 3 つの数字 (12 文字) で構成され、各セットはドット (.) で区切られます。つまり、15 文字になります。
これらはすべて、IP アドレスが人間が読める形式で保存されることを前提としています。IP アドレスがどのように使用されるかはわからないため、私は 10 進数形式で IP アドレスを保存することを好みます。結果は人によって異なる可能性があります。
答え2
これは思ったほど簡単ではありません。
ほとんどの場合、あなたは安全です45。
通常の IPv6 アドレス
0000:0000:0000:0000:0000:0000:0000:0000
8 * 4 + 7 =39
IPv4 マッピングされた IPv6 アドレス
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
スコープ ゾーンは数値または文字列 (インターフェイス名) にすることができます。
ff02::5678%5
ff08::9abc%interface10
インターフェース名の長さはシステムによって異なります。Linux では、IFNAMSIZ 定数によって定義されます。一般的な値は 16 です。上記の 45 文字の場合:
45 + 1 + 16 =62
こちらもご覧くださいhttps://stackoverflow.com/questions/166132/ipv6 アドレスのテキスト表現の最大長