Допустим, я выполняю HTTP-запрос GET к хосту, DNS-запись которого содержит несколько IP-адресов, например twitter.com
:
twitter.com. 45 IN A 104.244.42.1
twitter.com. 45 IN A 104.244.42.65
Предположим, один из этих IP-адресов недоступен по некоторым причинам (например, исходящее соединение заблокировано на брандмауэре).
Будет ли https.get()
пробовать все эти IP-адреса из результатов DNS-запроса или только один из них?
var https = require('https');
https.get('https://www.twitter.com', function(res) { ... }
Я выполнил пример теста с блокировкой одного из этих адресов, и, похоже, он не выполняет повторную попытку к другому IP-адресу, когда первый из них недоступен. Но из-за отсутствия журналов отладки я не уверен на 100%. Могут ли некоторые подтвердить это предположение или опровергнуть его вместо на основании исходного кода библиотеки или официальной документации ?
]$ dig twitter.com
...
;; ANSWER SECTION:
twitter.com. 60 IN A 104.244.42.1
twitter.com. 60 IN A 104.244.42.193
104.244.42.193
заблокирован в брандмауэре
]$ node failovertest.js
Error: connect ETIMEDOUT 104.244.42.193:443
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1137:16) {
errno: -110,
code: 'ETIMEDOUT',
syscall: 'connect',
address: '104.244.42.193',
port: 443
}