Как проверить, совпадают ли два хоста - PullRequest
3 голосов
/ 25 мая 2010

Я только что натолкнулся на проблему, где я должен был проверить, указывает ли путь в общий ресурс Windows. Частью этой проблемы является проверка того, совпадает ли хост A с хостом B. Где хост A и хост B могут быть одним из следующих {IPv4-адрес, IPv6-адрес, имя хоста, FQDN}. Поскольку мне не нужно быть точным, в моем случае достаточно разрешить и сравнить IP-адреса.

Но есть ли теоретически способ проверить, одинаковы ли хосты?

Ответы [ 2 ]

2 голосов
/ 27 мая 2010

Нет, нет общего метода, чтобы увидеть, идут ли два идентификатора (имена или адреса) на один и тот же хост. Один пример: 192.0.2.1 и 2001:db8::bad:dcaf. Они одинаковы? (Ответ: не могу сказать)

В Интернете нет общей концепции идентификации хоста. Некоторые протоколы имеют такую ​​концепцию, например SSH (подключитесь к хостам, посмотрите, совпадают ли отпечатки пальцев) или HIP (проверьте ключи), но вы зависите от того, активирован ли этот протокол для эти конкретные машины.

Может помочь некоторая эвристика (например, дактилоскопия машины), но она будет далека от 100%.

0 голосов
/ 25 мая 2010

Передайте два адреса в функцию getaddrinfo() и сравните полученные списки для любых совпадений.

В отличие от gethostbyname(), эта функция успешно анализирует литералы IPv6, а также возвращает любые соответствующие A или AAAA записи, связанные с именем хоста.

...