| 优先解析 A 地址记录 参考资料
    
    Windows 8 IPv4 与 IPv6 选择的方法:Connecting with IPv6 in Windows8(https://blogs.msdn.microsoft.com/b8/2012/06/05/connecting-with-ipv6-in-windows-8/)
    Windows 当 IPv6 不可用后的回退机制:Is there any setting for connection timeout when IPv6 fallback to IPv4?(https://social.technet.microsoft.com/Forums/en-US/d09e938a-a594-4766-8898-3926a81fc5dc/is-there-any-setting-for-connection-timeout-when-ipv6-fallback-to-ipv4?forum=w7itpronetworking)
    目前广泛使用的 IPv4 与 IPv6 优先选择算法为 Happy Eyeballs(https://en.wikipedia.org/wiki/Happy_Eyeballs):
 
        
        目前使用此算法的项目有:Chrome, Opera 12.10, Firefox version 13, OS X, cURL
        此算法会优先选择 IPv6 链路使用
        此算法的原理可参考 RFC 6555(Happy Eyeballs: Success with Dual-Stack Hosts)(https://tools.ietf.org/html/rfc6555)
        此算法的简略工作流程如下: 
        
        当客户端是双栈环境时,客户端会向缓存 DNS 服务器发起域名 A 记录与 AAAA 记录的解析请求,并受到解析结果,对应下图中的 1-4
        客户端获取到解析地址后,会同时使用 IPv4 与 IPv6 两种链路尝试建立连接,对应下图中的 6-7。当 IPv6 链路比 IPv4 链路先建立连接,或者 IPv4 已经建立连接,但是在很短的时间间隔内,IPv6 也成功建立连接后,则这两种情况下客户端应该使用 IPv6 链路完成后续的网络请求,对应图中的 8-12 
 测试方法
解析域名C/ C ++Linux 
#include <stdio.h>     #include <netdb.h>     #include <arpa/inet.h>      int main(void) {         int i = 0;         char str[32] = {0};          struct hostent* phost = NULL;          phost = gethostbyname("IPv6test.ntes53.netease.com");         printf("%s", inet_ntoa(*((struct in_addr*)phost->h_addr)));                   return 0;     } 
 Windows (编辑:92站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |