Quali benefici / effetti avrà IPv6 sullo sviluppo di applicazioni e amp; design? [chiuso]

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

  •  03-07-2019
  •  | 
  •  

Domanda

C'è stata molta stampa su IPv6 e l'imminente passaggio a IPv6 da IPv4. Ho una certa comprensione di IPv6, ma mi sono spesso chiesto quanto impatto ha IPv6 sullo sviluppo di applicazioni e amp; design (in particolare)?

Ci sono alcuni benefici tangibili / ben noti che IPv6 offre che non abbiamo già oggi?

So che Windows Vista e Server 2008 supportano IPv6 immediatamente, qualcuno sta usando (o progettando pensando a IPv6) oggi, e se sì, quali sono i vantaggi? Dovremmo prendere in considerazione l'IPv6 nei progetti attuali e futuri?

Esistono buoni esempi di applicazioni compatibili con IPv6?

È stato utile?

Soluzione

Avrà un impatto sulla progettazione dell'interfaccia utente per qualsiasi software in cui si inserisce un indirizzo IP, poiché sarà necessario consentire loro di selezionare tra l'input IPv4 e IPv6. Abbastanza ovvio però.

La mia comprensione è che non cambierà molto altro. La maggior parte dei programmi utilizza le funzionalità di rete fornite dal sistema operativo, quindi quando i dati tornano all'applicazione vengono rimosse tutte le complessità di indirizzamento e trasmissione. Naturalmente ci sono alcune applicazioni che avranno un impatto maggiore, ma quelle saranno quelle che funzionano direttamente con la rete ... non la tipica app line-of-business.

Devi guardare dove si trova la tua applicazione nel modello OSI . Penso che gli indirizzi IP facciano parte del livello 3, quindi se ti trovi sopra quel livello, sei sottratto alle modifiche dal sistema operativo.

Una cosa che può fare schifo sono i vecchi giochi in cui hai inserito l'indirizzo IP di un giocatore a cui vuoi connetterti (Age of Empires, Starcraft, ecc.). Sembra che escludendo una sorta di tunneling IPv4-IPv6 che tale funzionalità del gioco verrà interrotta.

Altri suggerimenti

La risposta di Aaron è, temo, praticamente errata. Sì, saranno necessarie modifiche all'interfaccia utente, ma è probabile che anche qualsiasi codice che utilizza le API socket tradizionali abbia bisogno di modifiche sostanziali per supportare IPv6.

Il codice più vecchio utilizza una specifica "famiglia di indirizzi" costante ( AF_INET ) e una particolare struttura di dati ( struct sockaddr_in ). Qualsiasi codice ancora in uso è effettivamente bloccato nella terra IPv4.

Il codice più recente dovrebbe usare le moderne chiamate API come getaddrinfo () che è in grado di restituire i giusti valori per protocollo, famiglia di indirizzi (es. AF_INET6 ), indirizzo, ecc. , indipendentemente dal fatto che l'host remoto utilizzi IPv4 o IPv6 (o entrambi).

È un po 'lungo, ma ecco un esempio di codice dalla pagina man di Linux per getaddrinfo . Nota come la chiamata ottiene un intero elenco di potenziali indirizzi remoti e prova ciascuno a turno fino a quando non riesce:

         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 */

Inizialmente non molto. Il passaggio da IPv4 a v6 dovrebbe essere trasparente per la maggior parte delle applicazioni desktop e Web.

Ma alla fine le applicazioni che usano modelli di rete resi più facili da IPv6 diventeranno più comuni. Ad esempio, la maggior parte degli utenti si trova dietro un NAT, quindi le reti mesh sono fattibili solo per un pubblico tecnico. Chiunque abbia dovuto aprire le porte sul proprio router per il software P2P sa che questo non è qualcosa che sua madre potrebbe usare.

Anche lo streaming e la trasmissione sono semplificati da IPv6.

Tutti i moderni browser Web (vengono in mente Chrome, IE, Safari e Firefox) sono tutti a conoscenza di IPv6. Anche IPv6 consapevole è & # 181; Torrent.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top