Мне нужно выяснить, какие клиенты подключены к моему приложению, и я использую для этого команду netstat. Я заметил, что иногда он не сообщает мне правильное имя машины.
Почему это происходит? Есть ли лучший способ получить список клиентов, подключенных к моему серверу?
Я считаю, что netstat получает IP-адрес подключенного хоста и выполняет обратный поиск DNS по этому адресу (я знаю, как работает netstat в Unix, я подозреваю, что так работает netstat в Windows).
Итак, во-первых, имя сети не обязательно имеет какое-либо отношение к имени машины. Во-вторых, внутри DNS сетевые имена и адреса имеют отношения "многие ко многим". То есть поиск данного имени может возвращать список адресов, а поиск адреса может возвращать список имен - но порядок записей в списках может быть другим, и списки могут не совпадать. Кроме того, нередко программное обеспечение не обрабатывает ответы списка DNS правильно и использует только первый элемент в списке.
Таким образом, ваша концепция «правильного» имени для подключенного к сети хоста может не соответствовать тому, что администрация DNS этого хоста считает «правильным» именем. Возможно, вы оба правы с разных точек зрения, но поскольку вы получаете имя в результате поиска DNS, ответ DNS - это то, что вы получаете.