Maximum length of the textual representation of an IPv6 address?
I want to store the data returned by $_SERVER["REMOTE_ADDR"]
in PHP into a DB field, pretty simple task, really. The problem is that I can't find any proper information about the maximum length of the textual representation of an IPv6 address, which is what a webserver provides through $_SERVER["REMOTE_ADDR"]
.
I'm not interested in converting the textual representation into the 128 bits the address is usually encoded in, I just want to know how many characters maximum are needed to store any IPv6 address returned by $_SERVER["REMOTE_ADDR"]
.
A slightly incorrect, naive option would be:
8 * 4 + 7 = 39
8 groups of 4 digits with 7 ':' between them.
But to take into account the IPv4-mapped IPv6 addresses feature, eg. [::ffff:192.168.0.1]
, written out fully:
(6 * 4 + 5) + 1 + (4 * 3 + 3) = 29 + 1 + 15 = 45
Note, this is an input/display convention - the amount of data is the same and for storage it would probably be best to standardise on the raw colon separated format, ie. [0000:0000:0000:0000:ffff:7fa8:0001]
for the address above.
On Linux, see constant INET6_ADDRSTRLEN
(include <arpa/inet.h>
, see man inet_ntop
). On my system (header "in.h"):
#define INET6_ADDRSTRLEN 46
The last character is for terminating NULL, as I belive, so the max length is 45, as other answers.
Answered my own question:
IPv6 addresses are normally written as eight groups of four hexadecimal digits, where each group is separated by a colon (:).
So that's 39 characters max.
链接地址: http://www.djcxy.com/p/40608.html下一篇: IPv6地址的文本表示的最大长度?