::ffff:
- это префикс подсети для адресов IPv4 (32 бита), которые помещаются внутри пространства IPv6 (128 бит). IPv6 разбит на две части: префикс подсети и суффикс интерфейса. Каждый из них имеет длину 64 бита или 4 группы по 4 шестнадцатеричных символа.
В IPv6 вам разрешено удалить ведущие нули, а затем удалить последовательные нули, что означает, что ::ffff:
фактически переводится 0000:0000:ffff:0000
, этот адрес был обозначен как префикс подсети IPv4 в IPv6, поэтому любой процессор IPv6 поймет, что он работает с адресом IPv4, и обработает его. соответственно.
В ближайшем будущем все IP-адреса будут IPv6, потому что мы почти исчерпали число (4,2 миллиарда, за вычетом некоторого места для разных целей) в адресном пространстве IPv4.
IPv6 позволяет использовать гораздо больше места. «340 ундециллионов должно хватить любому», - говорит Билл Гейтс о IPv6.
Важно начать адресацию IP-адресов с использованием пространства имен IPv6 и, следовательно, включить ::ffff:
в свой код, потому что в будущем между этими двоеточиями будут настоящие шестнадцатеричные данные. Если вы удалите его из эстетических соображений, ваш код сломается, когда он переключится на сеть IPv6 или столкнется с IPv6-адресом.
Некоторые сети в настоящее время используют IPv6, и вскоре вы столкнетесь с IP-адресами IPv6; совершите скачок сейчас или рискуете взломать код в будущем.
TL; DR (краткая) версия вопроса: все работает нормально. Не меняйте его, это версия IPv6 адреса IPv4.
Если вы хотите сделать свой код совместимым с IPv6, все, что вам нужно сделать, это проверить ::ffff:
префикс ... если он существует, удалить его и обработать остаток как IPv4 ... если ::ffff:
не существует, это адрес IPv6 и должны обрабатываться как таковые. Вы можете дважды проверить, есть ли в строке точки, если да, то это IPv4.
Помните обо всем, кроме настроек, которые вам нужно внести в IP-адреса, вы просто записываете IP-адрес, верно? Для агрегатов парсера и журналов будет важно ожидать ::ffff:127.0.0.1
и тому подобное в будущем. Если вам не нужно изменять IP-адрес, просто оставьте его таким, каким вы его получили.
req.ip
илиreq.ips
?