Как преобразовать адрес от IPv4 до IPv6

Надо надеяться, не слишком тангенциальный, но вероятно интересный для любого просматривающего ответы на этот вопрос это представление Шаблоны разработки в Динамическом программировании Peter Norvig.

22
задан Chris 12 October 2009 в 16:33
поделиться

3 ответа

Нет значимого сопоставления IPv4 в IPv6. такие вещи, как 0.0.0.0 и 127.0.0.1, являются частными случаями в спецификации, поэтому они имеют эквивалентное значение. Но учитывая адрес IPv4, он ничего не говорит вам о том, каким будет его конкретный адрес IPv6. Вы можете использовать поиск DNS, чтобы увидеть, разрешается ли данный IP-адрес в хост, который, в свою очередь, разрешается в IPv6-адрес в дополнение к IPv4-адресу, но DNS-сервер должен быть настроен для поддержки этого для конкретной машины.

30
ответ дан 29 November 2019 в 03:55
поделиться

Раньше в IPv6 было зарезервированное адресное пространство для адресов IPv4, где вы просто добавляли к IPv4-адресу 96 нулевых битов. Например, 192.168.10.13 -> :: C0A8: 0A0D . Насколько я знаю, это устарело, и прямого преобразования больше нет.

5
ответ дан 29 November 2019 в 03:55
поделиться

Гибридные реализации IPv6 / IPv4 с двойным стеком обычно поддерживают специальный класс адресов - адреса с отображением IPv4. Для получения дополнительной информации перейдите по следующей ссылке:

http://en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses

Для преобразования IPv4 в сопоставленный IPv6 вы можете использовать следующее:

String ip = "127.0.0.1"; 
String[] octets = ip.split("\\.");
byte[] octetBytes = new byte[4];
 for (int i = 0; i < 4; ++i) {
            octetBytes[i] = (byte) Integer.parseInt(octets[i]);
}

byte ipv4asIpV6addr[] = new byte[16];
ipv4asIpV6addr[10] = (byte)0xff;
ipv4asIpV6addr[11] = (byte)0xff;
ipv4asIpV6addr[12] = octetBytes[0];
ipv4asIpV6addr[13] = octetBytes[1];
ipv4asIpV6addr[14] = octetBytes[2];
ipv4asIpV6addr[15] = octetBytes[3];

Также проверьте это

19
ответ дан 29 November 2019 в 03:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: