Я работаю над программой сетевого клиента, которая подключается к публичным серверам, указанным пользователем. Если пользователь дает мне имя хоста для подключения, которое имеет адреса как IPv4, так и IPv6 (обычно это DNS-имя с записями A
и AAAA
), я не уверен, как решить, к какому адресу следует подключаться .
Проблема в том, что машины довольно часто поддерживают как IPv4, так и IPv6, но имеют только глобальное подключение через IPv4. Наиболее распространенный случай этого - когда настроены только локальные адреса IPv6. На данный момент лучшими альтернативами, которые я могу придумать, являются:
- Сначала попробуйте адрес (а) IPv6 - в случае сбоя соединения попробуйте адрес (а) IPv4; или
- Просто позвольте пользователю указать его в качестве параметра конфигурации («предпочитать_ipv6» вместо «предпочитать_ipv4»).
Проблема, которую я вижу в варианте 1, заключается в том, что соединение может не разорваться сразу - для его истечения может потребоваться некоторое время.