Впервую очередь, необходимо понять, что на одном IP-адресе может находиться сразу много доменных имён, поэтому какое именно доменное имя Вам, в конечном итоге, вернёт сервер, зависит только от него. Верно и обратное утверждение о том, что одному доменному имени может соответствовать сразу несколько IP-адресов .
Впервую очередь, необходимо понять, что на одном IP-адресе может находиться сразу много доменных имён, поэтому какое именно доменное имя Вам, в конечном итоге, вернёт сервер, зависит только от него. Верно и обратное утверждение о том, что одному доменному имени может соответствовать сразу несколько IP-адресов.
В связи с этим, не всегда функции для работы с DNS будут вести себя корректно, но всё-таки знать их полезно:
<?php
$ip = gethostbyname("vk.com");
echo $ip;
echo "<br />";
echo gethostbyaddr($ip);
echo "<br />";
print_r(gethostbynameL("vk.com"));
?>
Функция gethostbyname() принимает имя узла и возвращает IP-адрес. А функция gethostbyaddr() принимает IP-адрес и возвращает имя узла (имя сервера). Как я уже говорил, у одного имени узла может быть много IP-адресов, и чтобы получить список всех IP-адресов у данного узла, существует функция gethostbynameL(). В примере весь массив выводится через отладочную функцию print_r().
Таким образом, использовать функции для работы с DNS не составит никакого труда. Использовать же их можно, например, для защиты от ddos-атак, когда программно можно заблокировать все IP-адреса злоумышленников, а не 1 конкретный адрес.
