Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2016, 09:20   #1
lollollollol
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 218
По умолчанию Запрос к DNS на получение IP домена?

Как сделать запрос к DNS серверу на получение IP домена?

Речь не о стандартной функции, т.к. там выполняется запрос к ДНС который прописан в роутере или в настройках инета, я хочу сделать запрос к любому днс.

Т.е. описание функции должно выглядеть примерно так:

Код:
GetIP(DOMAIN,DNS_IP:string):string;
например
Код:
IP := GetIP('vasay.com','8.8.8.8');
lollollollol вне форума Ответить с цитированием
Старый 14.11.2016, 10:31   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Не знаю, что вы имели ввиду под стандартным, но TIdDNSResolver'у можно задать сервер.
p51x на форуме Ответить с цитированием
Старый 14.11.2016, 15:19   #3
lollollollol
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 218
По умолчанию

Нельзя инди Нужно без компонентов
lollollollol вне форума Ответить с цитированием
Старый 14.11.2016, 17:57   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Тогда берите RFC и реализуйте запрос.
p51x на форуме Ответить с цитированием
Старый 14.11.2016, 18:27   #5
lollollollol
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 218
По умолчанию

Я думаю что данный запрос уже реализован раз так тысячу, не меньше.
Особенно в SEO софте, где требуется выполнить множество запросов на получение IP домена за короткое время.
И думаю что этот код наверняка у кого-то валяется, или праскакивал на форуме.
Я конечно искал, но не нашел.
Если кто поможет, буду благодарен
lollollollol вне форума Ответить с цитированием
Старый 14.11.2016, 18:42   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Если вас не пугает АПИ, то можно использовать https://msdn.microsoft.com/ru-ru/lib...(v=vs.85).aspx
p51x на форуме Ответить с цитированием
Старый 15.11.2016, 19:07   #7
lollollollol
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 218
По умолчанию

Так там оно для вин 8 и выше, а мне бы универсальное решение.
А до вин 8, например в вин 7, это уже совсем другая функция с другим синтаксисом.

Может ткнёшь носом где подробно описано что я должен отправить DNS серверу чтобы получить ответ?
Нашел статью
http://www.intuit.ru/studies/courses...re/3361?page=5
Но не могу понять как формировать пакет.

Мне нужна информация, мол первый байт то, второй байт это и т.д.

Вот например первый параметр ID, как он формируется, сколко символов и каким символы допустимы? и как прописать эти параметры AA
TC
RD
RA
lollollollol вне форума Ответить с цитированием
Старый 15.11.2016, 19:09   #8
lollollollol
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 218
По умолчанию

Нашел старые исходники, где из DNS запроса на получение записи A типа парсится домен. Там видно что вначале идёт 12 байт данных, затем домен, затем ещё байты.

Вот что за 12 первых байт, и что после домена слать
lollollollol вне форума Ответить с цитированием
Старый 15.11.2016, 19:53   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Ну я вас же уже посылал на три буквы, на RFC 1034, 1035 кажись

П.С. Посмотрел статью по вашей же ссылке и так не смог понять, как вы не смогли прочитать первый абзац...
Цитата:
Биты ID являются уникальным 16-битовым идентификационным номером пакета запроса. Пакет ответа, формируемый сервером, также использует этот идентификационный номер, чтобы клиент мог сопоставить ответ сервера со своим запросом. Бит QR обозначает тип пакета (пакет запроса — 0, пакет ответа — 1). Поле OPCODE определяет тип запроса — стандартный (0), обратный (1) или запрос о статусе сервера (2).

Следующие четыре бита определяют различные параметры пакета. Бит AA устанавливается, когда ответ является авторитетным (данные поступают напрямую от DNS-сервера, ответственного за зону). Неавторитетные ответы могут поступать от серверов DNS, в кэше которых сохранилась информация об исходных записях от предыдущих запросов. Эта информация считается неавторитетной, так как есть вероятность, что с момента последнего обращения к серверу информация была изменена. Бит TC устанавливается, когда требуется урезать данные в пакете до вида, удобного для передачи по сети. Такое вполне возможно при использовании протокола UDP, согласно которому размер пакета не должен превышать 512 байт. Бит RD включается, когда клиент желает рекурсивно запрашивать DNS-сервер на постоянной основе. Если этот бит установлен, то DNS-сервер будет запрашивать другие DNS-серверы, пока не получит ответ. Если этот бит не установлен, то DNS-сервер будет возвращать на запрос любую информацию, которая у него имеется. Бит RA устанавливается, чтобы уведомить клиента о возможности рекурсивного запроса на данный сервер. Биты Z в настоящее время не используются и зарезервированы на будущее.

Биты RCODE используются только в пакетах ответов. Они отображают состояние ответа — без ошибок (0), ошибки в пакете запроса (1), внутренние ошибки не дали возможности серверу обработать запрос (2), имя, указанное в запросе, не существует (3), данный тип запроса не поддерживается сервером (4) и сервер отказался обработать запрос (5).

Остальные четыре параметра заголовка представляют собой 16-битовые числа и используются в качестве счетчиков. С их помощью ведется учет количества исходных записей, возвращаемых в пакете. QDCOUNT отображает количество запросов (в пакет может включаться более одного запроса). ANCOUNT — количество исходных записей, включенных в ответ. NSCOUNT обозначает число исходных записей об авторитетных серверах имен, а ARCOUNT — число записей в поле дополнительной информации.
Что тут запутанного или туманного?

Последний раз редактировалось p51x; 15.11.2016 в 19:57.
p51x на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить DNS-сервер для делегирования домена? kity Помощь студентам 0 15.06.2011 08:04
Delphi:Получение IP DNS-сервера используя GetNetworkParams из iphlpapi.dll zibman Помощь студентам 2 09.03.2011 15:20
Из DNS-домена , IP адрес Dominatorsha Паскаль, Turbo Pascal, PascalABC.NET 2 30.01.2011 18:52
Получение строки через HTTP запрос Никки JavaScript, Ajax 6 24.04.2008 17:56