我有一个需要转换的网络应用程序,以便它适用于 ipv6 网络。您能否让我知道我需要做什么(替换套接字 API)?
还有一件事,我如何测试我的应用程序?
谢谢。
核心套接字系统调用是协议中立的。您将需要使用 AF_INET6 而不是标准的 AF_INET 地址系列,以及 PF_INET6、sockaddr_in6 和其他适当的地址。
我建议阅读“ipv6”手册页或“ipv6 的套接字接口扩展”RFC:http ://www.ietf.org/rfc/rfc3493.txt
类似且可能相关的问题:ipv6 是否与 ipv4 向后兼容?
《Unix 网络编程》第 3 版有大量示例和一整章介绍 IPv4/IPv6 互操作性。
看看http://gsyc.escet.urjc.es/~eva/IPv6-web/ipv6.html - 这是一个相当全面的资源,并且对 RFC 有一些有用的参考。
出于测试考虑,如果您的应用程序将是双栈的,请考虑以下故障场景:IPv6 流量可能由于各种原因成为黑洞,一个示例场景是用户使用 6to4 任播隧道,但他们的流量往返于 192.99.88.1(任播 6to4中继地址)被丢弃。尝试测试这种情况并确保应用程序在不破坏用户体验的情况下优雅地回退,这将在以后节省一些支持电话。
(注意:我专门谈论黑洞,因为在路由问题等“正常”错误的情况下,错误通常会很快返回。因此,您可以考虑在主机之间放置某种路由器,您可以将其配置为静默丢弃数据包)
对于测试,您可以使用 Microsoft Virtual PC(或类似设备)创建一堆虚拟机并在它们之间测试应用程序 - 您可以轻松地将它们放在只能相互看到的专用网络上。