gpt4 book ai didi

Node.js http.request 和 ipv6 与 ipv4

转载 作者:太空宇宙 更新时间:2023-11-03 22:44:00 29 4
gpt4 key购买 nike

在 Node.js 4.x 中,函数 http.request the docs

Options

  • family: IP address family to use when resolving host and hostname. Valid values are 4 or 6. When unspecified, both IP v4 and v6 will be used.

未指定 family 时,node.js 将选择 ipv6 或 ipv4 背后的逻辑是什么?

据我所知,当我不指定它时,它默认或更喜欢 ipv4,而浏览器,至少是 chrome,更喜欢 ipv6

有没有办法让node.js 在可用时选择 ipv6 或者我必须手动处理?

如果我手动执行应该做什么?

  • 传入family: 6,如果超时则传入family: 4

  • 发出 DNS 请求并检查是否获得了 ipv6 地址,然后设置系列?

最佳答案

TL;DR:看来 Node 将这个问题留给了操作系统。

更长的故事:http.request() 将在底层使用 net 模块。可以找到该模块如何处理 DNS 查找 here :“如果 family 不是 4 并且 family 不是 6 并且没有提供特殊的 getaddrinfo hints,请使用dns.ADDRCONFIG 作为默认查找提示”

dns.ADDRCONFIG意思是:

Returned address types are determined by the types of addresses supported by the current system. For example, IPv4 addresses are only returned if the current system has at least one IPv4 address configured. Loopback addresses are not considered.

这仍然没有说明 IP 地址选择的顺序,但据我所知,这留给了 getaddrinfo< 的实现.

据我所知,如果您同时拥有 IPv6 和 IPv4 接口(interface),将执行两个 DNS 查询来查找主机名:A 表示 IPv4,AAAA 表示 IPv6。可能(但我在这里猜测)成功的第一个查找将提供传递回 Node 的 IP 地址。

Is there a way to get node.js to choose ipv6 when available or do I have to do with manually?

看起来您无法从 http.request() 执行此操作,所以是的,我认为您必须通过执行 DNS 请求来手动执行此操作家庭:6

关于Node.js http.request 和 ipv6 与 ipv4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37377908/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com