2009-05-27 9 views
1

У меня есть небольшая программа для примера udp, написанная с использованием ipv4. Если я изменю код на ipv6, я все равно смогу общаться с кем-либо, использующим прослушиватель с адресом ipv4? Я смотрел на портирование примеры наipv6 обратная совместимость с ipv4?

http://ou800doc.caldera.com/en/SDK_netapi/sockC.PortIPv4appIPv6.html

Я не уверен, если просто изменяя код будет гарантировать, что он работал или если бы я должен написать его в режим дуэли стека.

ответ

7

Да и нет ... IPv6 содержит совершенно другую адресацию, поэтому вам придется перекодировать приложение, чтобы использовать альтернативные заголовки и размеры структуры.

Однако диапазон адресов IPv4 доступен в пределах IPv6, синтаксис состоит в том, чтобы добавить два двоеточия перед стандартным адресом (например: :: 10.11.12.13). Вы также можете embed IPv4 addresses within IPv6 packets.

+1

Этот диапазон адресов действительно полезен, если вы хотите отправить пакет IPv6 на компьютер, если знаете только его IPv4-адрес. Но если эта другая машина не понимает IPv6, ваш пакет v6 до: 10.11.12.13 все равно будет потерян. – MSalters

+5

Правильный синтаксис - это ':: ffff: n.n.n.n'. IPv6-совместимый IPv6-адрес устарел и никогда не может использоваться для связи между приложениями IPv4 и IPv6. – Omnifarious

+0

Я отредактировал вопрос в ваш комментарий. –

1

IPv4 и IPv6 по своей сути несовместимы друг с другом.
Несколько основных причин:

  • адресное пространство полностью отличается (IPv6 имеет 128 бит адреса, IPv4 имеет 32-разрядные адреса)
  • заголовок протокола IPv6 выглядит ничего подобного заголовка протокола IPv4-. если вы попытаетесь разобрать пакет IPv6 как IPv4, вы получите глупость.

Очевидным результатом этого является то, что если вы откроете сокет IPv6, вы не сможете его прослушать с помощью сокета IPv4.

+1

Это строго верно, но вводит в заблуждение. Приложения IPv6 могут разговаривать только с IPv4-узлами несколькими способами. Обратное неверно. Также возможно прослушивать соединения из приложений IPv4 на сокет IPv6. – Omnifarious

+0

Это ответы подчеркивает неправильные вещи. –

5

Не без помощи IPv4/IPv6 gateway в сети, и даже тогда связь будет ограничена typical problems, представленной сетевыми адресами, переводящими шлюзы. Традиционные рекомендации для программистов, которые принимают такие решения, - это рекомендовать одновременно поддерживать как IPv4, так и IPv6.

 Смежные вопросы

  • Нет связанных вопросов^_^