在 IPv6 网络中,IPV6_V6ONLY 标志用于确保套接字仅使用 IPv6,特别是 IPv4 到 IPv6 的映射不会用于该套接字。在许多操作系统上,默认情况下未设置 IPV6_V6ONLY,但在某些操作系统(例如 Windows 7)上,它是默认设置的。
我的问题是:引入这个标志的动机是什么? IPv4 到 IPv6 映射是否存在某些问题,因此人们需要一种方法来禁用它?在我看来,如果有人不想使用 IPv4 到 IPv6 映射,他们可以简单地不指定 IPv4 映射的 IPv6 地址。我在这里缺少什么?
并非所有支持 IPv6 的平台都支持双栈套接字,因此问题是需要最大化 IPv6 兼容性的应用程序如何知道支持双栈或在不支持双栈时单独绑定?唯一通用的答案是 IPV6_V6ONLY。
忽略 IPV6_V6ONLY 或在支持双栈的 IP 栈存在之前编写的应用程序可能会发现在双栈环境中单独绑定到 V4 会失败,因为 IPv6 双栈套接字绑定到 IPv4,从而阻止 IPv4 套接字绑定。由于协议或应用程序级寻址问题或 IP 访问控制,应用程序也可能不期望 IPv4 over IPv6。
这种或类似的情况很可能促使 MS 等人默认为 1,即使 RFC3493 声明 0 为默认值。 1 理论上最大化了向后兼容性。具体来说,Windows XP/2003 不支持双栈套接字。
不幸的是,也不乏需要传递较低层信息才能正确运行的应用程序,因此此选项对于规划最适合要求和现有代码库的 IPv4/IPv6 兼容性策略非常有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)