Como os aplicativos clientes sabem usar IPv4 ou IPv6?

18

Como os servidores / computadores / usuários / aplicativos sabem solicitar um recurso pela Internet com um endereço IPv6 vs. endereço IPv4?

Bobby S
fonte

Respostas:

24

A primeira coisa que um cliente determina é quais protocolos estão disponíveis. Vamos supor que o IPv4 e o IPv6 estejam disponíveis (caso contrário, a resposta para qual protocolo escolher é trivial;) Ele fará uma pesquisa de DNS para os registros A (endereço IPv4) e AAAA (endereço IPv6). Se apenas um tipo for retornado, ele será usado. Se os endereços IPv4 e IPv6 forem retornados, o comportamento padrão dependerá um pouco do software cliente. Normalmente, o RFC 3484 é usado.

De acordo com os padrões oficiais, ele deve preferir o IPv6, mas como existem algumas máquinas (0,01% ou menos) que configuraram o IPv6 de maneira incorreta, os clientes se tornaram mais inteligentes. Atualmente, a maioria dos navegadores tentará se conectar pelo IPv6, mas se eles não conseguirem uma conexão operacional em 300 milissegundos, tentarão se conectar pelo IPv4 em paralelo. A primeira conexão bem-sucedida é então usada. Isso é coberto pelo RFC Happy Eyeballs .

A Apple mudou isso no Lion. Lá, o sistema operacional controla o desempenho de todas as conexões e, se determinar que a conexão IPv4 possui uma latência menor que a conexão IPv6, começará a preferir o IPv4. Mas se a conexão IPv4 se tornar mais lenta, poderá voltar para o IPv6. Dê uma olhada neste tópico da lista de discussão para uma discussão sobre esse recurso.

Para o usuário, não importa se o IPv4 ou IPv6 é usado, desde que funcione. IPv4 e IPv6 devem ser fornecidos igualmente bem. Os sites devem funcionar exatamente da mesma maneira em IPv4 e em IPv6 etc.

O IPv4 permanecerá em uso por muitos anos. Ele se tornará inutilizável quando novos serviços (sites, jogos, etc.) forem implantados apenas no IPv6, porque não há mais endereços IPv4 novos a serem usados. E, em algum momento, tudo o que funciona com IPv4 também funcionará com IPv6. Nesse momento, desabilitar o IPv4 economizará tempo e dinheiro (por que manter dois protocolos quando um é suficiente?).

Sander Steffann
fonte
1
Depois que isso foi escrito, o RFC 3484 foi obsoleto pelo RFC 6724 .
Michael Hampton
Como ele determina quais protocolos estão disponíveis? Vi comportamento aleatório em que, apt-get updatepor exemplo, tenta conectar-se a hosts ipv6, mas o próprio host nem sequer possui um endereço IPv6, além do endereço link-local.
Halfgaar 12/12
1
Isso é tratado pela seleção de endereço de origem e destino (RFC 6724). No seu caso, parece que o host vê o registro AAAA no DNS, escolhe esse endereço de destino e descobre que não possui um endereço de origem que pode usar com esse destino e volta ao IPv4.
Sander Steffann
2

A etapa intermediária que está sendo usada agora é conhecida como encapsulamento. Essencialmente, pacotes IPv6 viajam dentro de pacotes IPv4 até atingirem um ponto em que podem ser retirados do encapsulamento IPv4 e enviados para o outro lado em uma rede IPv6 completa. É claro que há muito mais complexidade do que isso, mas o conceito básico em geral é o mesmo em todos os aspectos.

À medida que mais e mais dispositivos se tornam capazes de IPv6, e as pessoas se familiarizam mais com o uso dos endereços, o IPv6 verá um aumento no uso. Não acredito (opinião pessoal) que o IPv6 será realmente adotado e verá uma implantação em larga escala no mercado de pequenas e médias empresas e até que o espaço IPv4 se torne um produto caro.

Em algum momento no futuro bastante distante, quando o IPv6 fornecer uma grande maioria de tráfego, pude ver uma reversão do destino do IPv4, em que o tráfego IPv4 deve ser encapsulado em pacotes IPv6 regulares e os intermediários de túnel desempenham um papel semelhante (mas invertido) devido a a falta de roteamento amplo de IPv4 / atribuições de IP.

Garrett
fonte
1
Acho que isso não responde à pergunta ... Além disso: o encapsulamento está desaparecendo rapidamente na Internet principal do IPv6 porque o IPv6 nativo está disponível em todos os lugares agora. Haverá algum encapsulamento para os clientes, mas isso não tem nada a ver com a escolha que um sistema faz ao conectar. PS: O encapsulamento IPv4-over-IPv6 já está aparecendo. Alguns operadores de internet a cabo estão implantando o DS-Lite este ano, o que faz exatamente isso.
Sander Steffann
Eu trabalho para um grande datacenter e tenho contatos com todo o setor, e minha experiência com o IPv6 definitivamente não está em todo lugar agora. O encapsulamento existe para preencher a lacuna e, considerando que a maioria dos usuários finais ainda não possui atribuições de IPv6, ainda é relevante.
23412 Garrett
3
O encapsulamento está realmente em uso, mas deve ser evitado sempre que possível. Os ISPs que ainda não oferecem IPv6 decente para seus clientes não estão fazendo seu trabalho ... Mas de qualquer maneira: a questão era como os aplicativos clientes escolhem entre IPv4 e IPv6, e isso não tem nada a ver com a maneira como a rede tem sua conectividade IPv6 porque esse é o trabalho do roteador, não o aplicativo cliente. O aplicativo cliente usa apenas o que está disponível na rede local.
Sander Steffann
Cruzada, meu amigo.
Garrett
-2

Acho que você está perguntando como um aplicativo decide como escolher. Do lado do programa, isso depende da implementação do aplicativo. Se o codificador fizer do IPv6 uma prioridade mais alta que o IPv4, por exemplo, ele primeiro tentará usar getipv6addr (). Se isso não estiver configurado ou falhar, ele tentará usar getaddr () etc. Com base nisso, o aplicativo enviará a solicitação pelo IPv6 primeiro ou vice-versa.

MaryOpen.cn
fonte