在node.js 4.x中,http.request 文档说这个函数
选项
- family:解析主机名和主机名时使用的IP地址族.有效值为4或6. 如果未指定,将使用IP v4和v6.
当family没有指定node.js选择ipv6或ipv4时,背后的逻辑是什么?
据我所知,当我没有指定它时,它默认为或更喜欢ipv4而浏览器,至少是chrome,更喜欢ipv6
有没有办法让node.js在可用时选择ipv6,还是我必须手动操作?
如果我是手动做的应该做什么?
传入family: 6,如果超时然后传入family: 4?
发出DNS请求并检查我是否收到了ipv6地址,然后设置系列?
TL; DR:似乎Node将其留给操作系统.
更长的故事:http.request()将使用net引擎盖下的模块.该模块如何处理DNS查找可以在这里找到:"如果系列不是,4而系列不是6,并且没有提供特殊getaddrinfo 提示,请使用dns.ADDRCONFIG默认查找提示".
dns.ADDRCONFIG 手段:
返回的地址类型由当前系统支持的地址类型决定.例如,仅当当前系统至少配置了一个IPv4地址时,才会返回IPv4地址.不考虑环回地址.
这仍然没有说明IP地址的选择顺序,但据我所知,这是留给实现的getaddrinfo.
AFAIK,如果您同时具有IPv6和IPv4接口,则将执行两个DNS查询以查找主机名:AIPv4和AAAAIPv6.它可能是(但我猜这里)成功的第一次查找将提供传递回Node的IP地址.
有没有办法让node.js在可用时选择ipv6,还是我必须手动操作?
看起来你不能这样做http.request(),所以是的,我认为你将不得不通过执行DNS请求手动执行此操作family : 6.
| 归档时间: |
|
| 查看次数: |
4050 次 |
| 最近记录: |