Как вручную получить ip-адрес веб-сайта с помощью Google DNS, OpenDNS … путем отправки и получения пакетов

#java #sockets #dns #ip #packet

#java #сокеты #dns #ip #пакет

Вопрос:

Я хочу написать небольшую программу для получения IP-адресов некоторых веб-сайтов путем ручной отправки и получения пакета данных из Google DNS, Open DNS.

Как мне помочь.

Я написал это, но не работает должным образом.

 public static void main(String args[]) throws Exception
{
    String str="stackoverflow.com";
    DatagramPacket dp=new DatagramPacket(str.getBytes(),str.length());
    DatagramSocket ds=new DatagramSocket();

    dp.setAddress(InetAddress.getByName("8.8.8.8"));
    dp.setPort(53);

    ds.send(dp);
    System.out.println("SENDED");

    byte[] receive=new byte[1024];
    dp.setData(receive);

    System.out.println("PREPARING FOR RECEIVE : ");
    ds.receive(dp);

    System.out.println(new String(receive));
}
  

Ответ №1:

Если вы не хотите внедрять протокол DNS, вас может заинтересовать dnsjava.

Ответ №2:

вам нужно будет реализовать протокол DNS — отправной точкой может бытьhttps://www.rfc-editor.org/rfc/rfc1035

Комментарии:

1. Если вы не знакомы с тем, как работает DNS, стоит также заглянуть в Википедию: en.wikipedia.org/wiki/Domain_Name_System

2. Я знаю это, но я не знаю структуру данных, которые отправляются на dns-сервер. Можете ли вы мне помочь

3. Я не собираюсь писать код для вас, если вы это имеете в виду. Я бы начал с просмотра библиотеки dnsjava, которую опубликовал @Thor, и вы, скорее всего, найдете там необходимые структуры.

4. О, большое спасибо. Я никогда не надеюсь, что вы напишете код для меня. У меня нет этой идеи.

Ответ №3:

Протокол DNS определен в RFC 1034.