Я пишу программу, которая позволяет пользователям предоставлять список имен хостов или IP-адресов, которые затем я узнаю, подключение к каким хостам происходит быстрее, и подключаюсь к нему.
И когда я набираю вопрос в заголовке, я подумал, что пинг может быть возможным, но какие еще методы я могу использовать, поскольку не все хосты отвечают на пинги?
Есть несколько веб-сайтов, которые рассчитывают расстояние между двумя IP-адресами, как это работает?
Расстояние до сети измеряется количеством переходов. Инструмент вроде traceroute
отправляет пакеты ICMP с разными значениями TTL. Значения TTL уменьшаются всякий раз, когда они перенаправляются другим переходом (маршрутизатором). Когда TTL достигает нуля, отправитель уведомляется другим пакетом ICMP (ошибка «Превышено время»). Посмотри на эта страница.
Другой вариант - измерить задержку между двумя узлами. Это сильно зависит от используемого протокола и не дает одинакового результата для всех протоколов по нескольким причинам. Например, разные протоколы не имеют одинакового приоритета. Кроме того, разные протоколы имеют разную природу подключения (без подключения или ориентированного на подключение) и так далее.
Я думаю, что вы проделаете долгий путь, чтобы решить проблему. Если вы берете список IP-адресов, предоставленных пользователем, а затем выясняете, какой из них имеет наименьшую задержку, вы должны решить, какие службы на этих хостах вы будете использовать. Я предполагаю Ping, но, как вы указываете, они могут не ответить на это. Так на что они отвечают? HTTP? Тогда время это.