我想使用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