Какие преимущества/влияние IPv6 окажет на разработку и проектирование приложений?[закрыто]

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

  •  03-07-2019
  •  | 
  •  

Вопрос

В прессе много говорилось об IPv6 и предстоящем переходе с IPv4 на IPv6.У меня есть некоторое представление об IPv6, но я часто задавался вопросом, какое влияние IPv6 оказывает на разработку и проектирование приложений (в частности)?

Есть ли какие-то ощутимые/хорошо известные преимущества IPv6, которых у нас сегодня еще нет?

Я знаю, что Windows Vista и Server 2008 поддерживают IPv6 «из коробки», использует ли кто-нибудь (или разрабатывает с учетом IPv6) сегодня, и если да, то каковы преимущества?Стоит ли нам рассматривать IPv6 в текущих и будущих проектах?

Есть ли какие-нибудь хороший примеры приложений, поддерживающих IPv6?

Это было полезно?

Решение

Это повлияет на дизайн пользовательского интерфейса любого программного обеспечения, в котором вы вводите IP-адрес, поскольку вам нужно будет разрешить им выбирать между вводом IPv4 и IPv6.Хотя довольно очевидно.

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

Вам нужно посмотреть, где находится ваше приложение в Модель OSI.Я думаю, что IP-адреса являются частью уровня 3, поэтому, если вы находитесь выше этого уровня, вы абстрагируетесь от изменений ОС.

Одна вещь, которая может быть отстойной, — это старые игры, в которых вы вводите IP-адрес игрока, к которому хотите подключиться (Age of Empires, Starcraft и т. д.).Похоже, что если не использовать какое-то туннелирование IPv4-IPv6, функциональность игры будет нарушена.

Другие советы

Боюсь, ответ Аарона во многом неверен.Да, изменения пользовательского интерфейса будут необходимы, но любой код, использующий традиционные API сокетов, также, вероятно, потребует существенных изменений для поддержки IPv6.

В большинстве старых кодов используется определенная константа «семейства адресов» (AF_INET) и конкретную структуру данных (struct sockaddr_in).Любой код, который все еще использует, фактически застревает в зоне IPv4.

Новый код должен использовать современные вызовы API, такие как getaddrinfo() который способен возвращать правильные значения для протокола, семейства адресов (т. AF_INET6), адрес и т. д., независимо от того, использует ли удаленный хост IPv4 или IPv6 (или оба).

Это немного длинно, но вот пример кода со страницы руководства Linux для getaddrinfo.Обратите внимание, что вызов получает целый список потенциальных удаленных адресов и пробует каждый из них по очереди, пока не достигнет успеха:

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

Изначально не очень.Переход с IPv4 на версию 6 должен быть прозрачным для большинства настольных и веб-приложений.

Но со временем приложения, использующие сетевые модели, упрощенные благодаря IPv6, станут более распространенными.Например, большинство пользователей находятся за NAT, поэтому ячеистые сети возможны только для технической аудитории.Любой, кому приходилось открывать порты на своем маршрутизаторе для программного обеспечения P2P, знает, что его мама не могла бы использовать это.

Потоковая передача и вещание также упрощаются благодаря IPv6.

Все современные веб-браузеры (на ум приходят Chrome, IE, Safari и Firefox) поддерживают IPv6.µTorrent также поддерживает IPv6.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top