|
Как определить все IP адреса сервера по доменному имениНемного теории. Каждый компьютер в сети Internet, да и просто в локальной сети имеет IP адрес, который представляет из себя структуру из 4х байт, и уникален для всей сети. IP адрес принято записывать числами в десятичном виде с разделительными точками. Например: 213.180.204.11 Использование IP адресов для обращения к серверу неудобно, т.к. сложно запомнить и вообще выглядит устрашающе, поэтому была введена служба доменных имён, которая сопоставляет каждому IP адресу вполне человеческое имя. Например: 213.180.204.11 это IP www.yandex.ru. По имени (или адресу) www.yandex.ru можно обратиться к серверу и получить запрашиваемый трафик, аналогично можно набрать в строке адреса 213.180.204.11 и получить точно такой же результат. Оказывается одному доменному имени могут соответствовать несколько IP адресов, т.е. по любому из данных IP можно обратиться к серверу или удалённому компьютеру. В сети я не разу не встречал алгоритмов, которые бы
позволяли определить список всех IP адресов домена. Все предлагаемые исподники
позволяли получить лишь один адрес домена. В этой статье я покажу, как
можно получить ВСЕ адреса домена. Использовать будем стандартные функции
библиотеки WinSock2. void DecToString(char byte0, char byte1, char byte2,
char byte3, char ipres[255]) // функция преобразования десятичного IP
адреса в строку Функция DomainToIPList преобразует доменное имя, задаваемое параметром domain в IP адрес, который возвращается через параметры iplistdec (двумерный массив десятичных чисел) и iplist (строка, содержащая все IP адреса, каждый адрес заканчивается символами конца строки и возврата каретки). Функция DomainToIPList возвращает количество адресов домена. Основная идея ресолва доменного имени заключается в использовании API функции gethostbyname, которая возвращает нультерминальный список структур, определяющих параметры удалённого сервера. Использование функции может выглядеть так (при использовании Visual C++ с MFC): char ipl[255]; |
||||
|