Впервую очередь, необходимо понять, что на одном IP-адресе может находиться сразу много доменных имён, поэтому какое именно доменное имя Вам, в конечном итоге, вернёт сервер, зависит только от него. Верно и обратное утверждение о том, что одному доменному имени может соответствовать сразу несколько IP-адресов .

Функции для работы с DNS

Впервую очередь, необходимо понять, что на одном 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 конкретный адрес.