Que benefícios / impacto será IPv6 ter no desenvolvimento e design do aplicativo? [fechadas]
-
03-07-2019 - |
Pergunta
Tem havido muita atenção da imprensa sobre o IPv6 e o ??interruptor iminente para o IPv6 do IPv4. Eu tenho alguma compreensão do IPv6, mas eu sempre quis saber quanto impacto IPv6 tem no desenvolvimento e design do aplicativo (especificamente)? ??
Existem algumas / benefícios tangíveis bem conhecidos IPv6 fornece que ainda não tem hoje?
Eu sei Windows Vista e Servidor suporte 2008 IPv6 out-of-the-box, é alguém usando (ou concepção com IPv6 em mente) de hoje, e em caso afirmativo, quais são os benefícios? Devemos considerar IPv6 em projetos atuais e futuros?
Há algum boa exemplos de aplicações IPv6-aware?
Solução
Ele terá impacto sobre o design da interface do usuário para qualquer software onde você entrada um endereço IP, como você vai precisar para deixá-los escolher entre IPv4 e IPv6 de entrada. embora bastante óbvio.
O meu entendimento é que não muito mais vai mudar. A maioria dos programas estão usando instalações de rede fornecidos pelo sistema operacional, por isso, os dados de tempo recebe de volta para o aplicativo todo o endereçamento e transmissão complexidades são removidos. Claro que existem algumas aplicações que serão mais impactadas, mas aqueles vão ser os que trabalham diretamente com a rede ... não é um típico aplicativo de linha de negócios.
Você precisa olhar para onde sua aplicação reside na OSI modelo . Eu acho que os endereços IP são parte da camada 3, por isso, se você estiver acima dessa camada, você é captada a partir das mudanças pela OS.
Uma coisa que pode aspirar é antigos jogos onde você colocar o endereço IP de um jogador que você deseja se conectar (Age of Empires, Starcraft, etc.). Parece que salvo algum tipo de IPv4-IPv6 tunelamento que essa funcionalidade do jogo vai ser quebrado.
Outras dicas
A resposta de Aaron é, eu tenho medo, praticamente incorreta. Sim, as mudanças de interface do usuário será necessária, mas qualquer código usando as APIs de soquete tradicionais é também provável a necessidade de alterações substanciais para suportar IPv6.
A maioria dos códigos mais velho usa um específico "endereço da família" constante (AF_INET
) e um especial estrutura de dados (struct sockaddr_in
). Qualquer código usando ainda que está efetivamente preso em terra IPv4.
código mais recente deve usar chamadas de API modernas, como getaddrinfo()
que é capaz de devolver os valores corretos para o protocolo, família de endereços (ou seja AF_INET6
), endereço, etc, independentemente do host remoto usa IPv4 ou IPv6 (ou ambos).
É um pouco demorado, mas aqui está um exemplo de código a partir da página man Linux para getaddrinfo
. Note como a chamada recebe toda uma lista de potenciais endereços remotos, e tenta um de cada vez até obter êxito:
memset(&hints, 0, sizeof(struct addrinfo));
hints.ai_family = AF_UNSPEC; /* Allow IPv4 or IPv6 */
hints.ai_socktype = SOCK_DGRAM; /* Datagram socket */
hints.ai_flags = 0;
hints.ai_protocol = 0; /* Any protocol */
s = getaddrinfo(hostname, service, &hints, &result);
if (s != 0) {
fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(s));
exit(EXIT_FAILURE);
}
/* getaddrinfo() returns a list of address structures.
Try each address until we successfully connect(2).
If socket(2) (or connect(2)) fails, we (close the socket
and) try the next address. */
for (rp = result; rp != NULL; rp = rp->ai_next) {
sfd = socket(rp->ai_family, rp->ai_socktype,
rp->ai_protocol);
if (sfd == -1)
continue;
if (connect(sfd, rp->ai_addr, rp->ai_addrlen) != -1)
break; /* Success */
close(sfd);
}
if (rp == NULL) { /* No address succeeded */
fprintf(stderr, "Could not connect\n");
exit(EXIT_FAILURE);
}
freeaddrinfo(result); /* No longer needed */
Inicialmente não muito. O interruptor do IPv4 para o v6 deve ser transparente para a maioria das aplicações desktop e web.
Mas, eventualmente, aplicações que os modelos de uso de rede que são feitas mais fácil por IPv6 se tornará mais comum. Por exemplo a maioria dos usuários estão atrás de um NAT tão malha-redes só são viáveis ??para um público técnico. Quem já teve a abrir portas no seu roteador para P2P software sabe que isso não é algo que sua mãe poderia usar.
Streaming e transmissão também são coisas que são feitas mais fácil por IPv6.
Todos os navegadores modernos (Chrome, IE, Safari e Firefox vêm à mente) são todos IPv6 consciente. Também IPv6 consciente é µTorrent.