我想使用getaddrinfo()来读取所有地址(IPv4和IPv6)。 我的问题是getaddrinfo()是否返回列表中的IPv4地址后面的IPv6地址。 假设我将AF_UNSPEC传递给getaddrinfo()并使用双栈。getaddrinfo()会首先返回IPv6地址吗?
1
A
回答
2
正如Celada所评论的,RFC 3484给出了返回结果的建议排序。
特别针对GNU libc,订单可以由/etc/gai.conf
控制并定制为本地策略。
1
答案就在这里:
http://tools.ietf.org/html/rfc6724
操作系统应该(而且大多如此)遵循此标准或它的前一个版本。当getaddrinfo()
选择目标地址时,如果应用程序没有绑定到特定的地址,内核会选择源地址。
默认情况下,全局本地IPv6地址优先于所有IPv4地址。
0
这实际上取决于名称服务器和操作系统。 getaddrinfo()从名称服务器获取DNS解析信息。如果您的名称服务器在IPv4地址之前排列IPv6地址,它将在IPv4地址之前返回IPv6地址。
默认情况下,IPv6地址的优先级高于IPv4地址。 @Pavel Simerda写道 - “默认情况下,全局本地IPv6地址优于所有IPv4地址。”
相关问题
- 1. getaddrinfo()返回回送地址
- 2. 的getaddrinfo(3)指定的hints-> ai_socktype不返回IPv6地址
- 3. Java getLocalAddr()返回IPV6地址
- 4. Cloudflare Header返回IPV6地址
- 5. getaddrinfo没有得到ipv6地址
- 6. getaddrinfo可以返回哪些地址族?
- 7. getaddrinfo为ipv6链接本地
- 8. .Net Dns.GetHostAddresses(域) - 返回ipv6地址
- 9. 可以gethostbyname()返回一个IPv6地址吗?
- 10. 即使“java.net.preferIPv4Stack”为“true”,Jersey也会返回IPv6地址
- 11. 的getaddrinfo和IPv6
- 12. 大会返回地址
- 13. angular.element(..)。scope()首先返回undefined
- 14. getaddrinfo()函数返回错误的IP地址
- 15. 'getaddrinfo()'函数,它仅从'etc \ hosts'文件返回IP地址...?
- 16. RxSwift回调首先返回结果
- 17. 代表IPv6地址
- 18. sockaddr和IPv6地址
- 19. IPv6地址范围
- 20. 解析IPv6地址
- 21. 将IPv6回送地址解析到Uri
- 22. ipv6等效于回送地址
- 23. getaddrinfo()与IPv6没有意义
- 24. Java DatagramPacket对象返回IPV6地址,但要求IPv4
- 25. Tomcat中的HttpServletRequest.getRemoteAddr()返回IPv6格式的IP地址
- 26. connect()返回“无效参数”与ipv6地址
- 27. Pinging win2k16返回的是IPv6地址而不是IPv4
- 28. 无法获得从DNS64(iOS)返回的IPv6地址
- 29. 从C#中的DNS服务器返回IPv6地址
- 30. Inet6Address.getByName()是否返回(现有)IPv6,但只有IPv4地址?
测试时它会做什么?文件说什么?答案是“在订购产品时没有保证”。 – Romain
排序目标地址的规则在[RFC 3484](http://www.ietf.org/rfc/rfc3484.txt)的第6部分详细介绍,但我不确定实际上遵循这个规则的典型'getaddrinfo()'实现。这些规则要求预测内核将使用哪个源地址来达到特定的目标地址,这又取决于查询内核以获取实际可用的源地址列表并找出如何定制内核的源地址选择算法。 'getaddrinfo()'实际上会达到这些长度吗? – Celada