代码之家  ›  专栏  ›  技术社区  ›  RobS

IPv6对应用程序开发和设计有哪些好处/影响?[闭门]

  •  4
  • RobS  · 技术社区  · 18 年前

    IPv6是否提供了一些我们今天还没有的有形/众所周知的好处?

    我知道Windows Vista和Server 2008支持开箱即用的IPv6,现在是否有人在使用(或设计时考虑到IPv6),如果是,有什么好处?我们是否应该在当前和未来的项目中考虑IPv6?

    有吗 好的

    4 回复  |  直到 18 年前
        1
  •  6
  •   Alnitak    17 年前

    亚伦的回答恐怕是非常不正确的。是的,UI更改是必要的,但是任何使用传统套接字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 */
    
        2
  •  3
  •   Mendelt    18 年前

    起初并不多。对于大多数桌面和web应用程序,从IPv4到v6的切换应该是透明的。

    但最终,使用IPv6简化的网络模型的应用程序将变得更加普遍。例如,大多数用户都支持NAT,因此网状网络仅适用于技术受众。任何不得不在路由器上为P2P软件打开端口的人都知道这不是他妈妈可以使用的。

        3
  •  2
  •   Aaron Axvig    18 年前

    我的理解是,其他方面不会有太多变化。大多数程序都使用操作系统提供的网络设施,因此当数据返回到应用程序时,所有寻址和传输的复杂性都已消除。当然,有些应用程序将受到更大的影响,但这些应用程序将直接与网络一起工作……而不是典型的业务线应用程序。

    您需要查看应用程序在应用程序中的位置 OSI model

    有一件事可能很糟糕,那就是在旧游戏中输入你想连接的玩家的IP地址(帝国时代、星际争霸等等)。看来,除非出现某种IPv4-IPv6隧道,否则游戏的功能将被破坏。

        4
  •  1
  •   Brian Knoblauch    17 年前

    所有现代网络浏览器(Chrome、IE、Safari和Firefox)都支持IPv6。IPv6感知的还有Torrent。