Que benefícios / impacto será IPv6 ter no desenvolvimento e design do aplicativo? [fechadas]

StackOverflow https://stackoverflow.com/questions/207838

  •  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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top