Форум программистов  
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

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

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

Код:

GetIP(DOMAIN,DNS_IP:string):string;

например
Код:

IP := GetIP('vasay.com','8.8.8.8');

lollollollol вне форума   Ответить с цитированием
Старый 14.11.2016, 11:31   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 10,197
Репутация: 1601

icq: 216409213
По умолчанию

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

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

icq: 216409213
По умолчанию

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

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

icq: 216409213
По умолчанию

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

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

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

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

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

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

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

icq: 216409213
По умолчанию

Ну я вас же уже посылал на три буквы, на 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 в 20:57.
p51x вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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




02:11.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru