关于IPv6和即将从IPv4转到IPv6的消息已经有了很多媒体。我对IPv6有一些了解,但我经常想知道IPv6对应用程序开发和设计(具体来说)有多大的影响?
IPv6是否提供了一些我们今天还没有的有形/众所周知的好处?
我知道Windows和Server 2008支持IPv6开箱即用,现在有人在使用(或考虑到IPv6 )吗?如果是的话,有什么好处呢?我们应该在当前和未来的项目中考虑IPv6吗?
对IPv6 6敏感的应用程序有什么好的例子吗?
发布于 2008-10-16 17:09:15
它将影响您输入IP地址的任何软件的UI设计,因为您需要让他们在IPv4和IPv6输入之间进行选择。不过很明显。
我的理解是,其他方面不会有太大变化。大多数程序都使用操作系统提供的网络设施,所以当数据返回到应用程序时,所有的寻址和传输复杂性都被删除了。当然,有些应用程序会受到更大的影响,但这些应用程序将直接与network...not (您的典型业务应用程序)一起工作。
您需要查看应用程序在OSI模型中的位置。我认为IP地址是第三层的一部分,所以如果您位于该层之上,您将从操作系统的更改中抽象出来。
有一件事可能很糟糕,那就是老游戏,你把你想连接的玩家的IP地址(帝国时代,星际争霸等等)放进去。看来,除非有某种IPv6 4-IPv6 6隧道,否则游戏的功能就会被破坏。
发布于 2008-12-18 15:38:59
恐怕亚伦的回答很不正确。是的,UI更改是必要的,但是使用传统套接字API的任何代码也可能需要大量的更改才能支持IPv6。
大多数旧代码使用特定的“地址族”常量(AF_INET)和特定的数据结构(struct sockaddr_in)。任何仍在使用的代码实际上都卡在IPv4中。
较新的代码应该使用现代API调用,例如getaddrinfo(),它能够返回协议、地址家族(即AF_INET6)、地址等的正确值,而不管远程主机是使用IPv4还是IPv6 (或者两者都使用)。
这有点长,但是这里有一个来自getaddrinfo的Linux手册页面的代码示例。请注意调用如何获得潜在远程地址的完整列表,并依次尝试每个地址,直到成功为止:
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 */发布于 2008-10-16 10:31:49
一开始不多。对于大多数桌面和web应用程序来说,从IPv4切换到v6应该是透明的。
但最终,使用IPv6更容易使用的网络模型的应用程序将变得更加普遍。例如,大多数用户都在NAT的后面,所以mesh网络只对技术用户是可行的。任何不得不在路由器上为P2P软件打开端口的人都知道,这不是他妈妈可以使用的。
流媒体和广播也是IPv6使之变得更容易的东西。
https://stackoverflow.com/questions/207838
复制相似问题