Red de conocimiento informático - Material del sitio web - ¿Cómo se realiza la conversión de nombres de dominio y direcciones IP?

¿Cómo se realiza la conversión de nombres de dominio y direcciones IP?

Utilice Java para completar la conversión de nombres de dominio y direcciones IP

Editor responsable: admin Fecha de actualización: 2005-8-6

Utilice Java para completar la conversión de nombres de dominio y direcciones IP Conversión

Para nosotros, los usuarios comunes, los símbolos visuales son mucho más fáciles de recordar que un montón de aburridos códigos numéricos. Por ejemplo, recordaremos fácilmente la cadena "www.oscar.com", pero será difícil recordar 206.17.191.12. Este artículo presenta brevemente las reglas de nomenclatura de Internet y las convenciones de división de direcciones, y luego presenta cómo usar el lenguaje Java para completar la conversión entre nombres simbólicos (arriba de la cadena) y direcciones IP (arriba de la cadena numérica), y brinda un ejemplo, verifique los hosts remotos accesibles .

·Reglas de nomenclatura de Internet y convenciones de división de direcciones

En Internet, los nombres simbólicos se utilizan para nombrar hosts y redes, como www.oscar.com. El "nombre científico" de estos nombres simbólicos se denomina "Nombre de Dominio", que es el nombre de dominio. Aunque los nombres de dominio son mucho más convenientes para nosotros, deben convertirse en direcciones IP (Dirección de Protocolo de Internet) antes de que puedan usarse como identificadores de comunicación. Una dirección IP es un identificador de 32 bits que incluye un identificador de red y un identificador de host para identificar de forma única el host y la red. La conversión de nombres de dominio en direcciones IP se completa mediante un sistema especializado, que es el Sistema de nombres de dominio (Domain Name SystemDNS).

Cuando se envían/reciben datos entre hosts de la misma red o de diferentes redes, la dirección IP entra en juego. Si los datos se transfieren entre hosts en la misma red, solo se utiliza el identificador del host en la dirección IP para determinar la ubicación del host en la red. Por otro lado, si se trata de comunicación entre hosts en diferentes redes, se deben utilizar tanto el ID del host como el ID de la red para determinar el host correspondiente. El proceso de localizar la red y el host y luego transmitir datos se llama enrutamiento. El enrutador de la red contiene una capa IP, que es responsable de ejecutar el algoritmo de enrutamiento y enviar los paquetes de datos al destino. En Internet, enviar una base de datos a su destino es una cuestión de capa IP.

Las direcciones IP son asignadas por el Centro de información de red del departamento de registro de Internet (NIC del Centro de información de red) a diferentes organizaciones, y luego cada organización las delega en varios departamentos. Una dirección IP ocupa 4 bytes.

Los paquetes de datos enrutados también pueden perderse durante la transmisión. Por lo tanto, las personas utilizan el protocolo de transmisión subyacente para juzgar si la transmisión de datos es correcta o no. Por ejemplo, TCP se utiliza para comprobar si hay errores o pérdida de datos, y cuando ocurre un error, la base de datos correspondiente se envía nuevamente hasta que el otro host la recibe correctamente.

Actualmente, existen tres categorías (o tres niveles) de direcciones IP: Clase A, Clase B y Clase C. Además, existe un tipo de dirección IP llamada "Multicast", que se utiliza en algunos hosts de Internet. Estas diferentes categorías de direcciones IP satisfacen las necesidades de diferentes organizaciones. Por ejemplo, las direcciones de Clase A se usan principalmente para sistemas de red grandes con más de 65536 hosts; las direcciones de Clase B se usan para sistemas de red de tamaño mediano con más de 255 hosts, pero se usan menos de 65536 direcciones de Clase C para los pequeños con menos; más de 256 hosts.

La representación decimal de las diferentes categorías de direcciones es la siguiente, donde el número decimal representa el rango de direcciones permitido:

·Clase A

ID de red ID de host

1~127 0~255 0~255 0~255

·Clase B

ID de red ID de host

128~191 0~255 0 ~255 0~255

·Clase C

ID de red ID de host

191~233 0~255 0~255 0~254

Multidifusión

· Multidifusión

191~233 0~255 0~255 0~254

Los números 0 y 255 tienen significados especiales . El número 0 está reservado para hosts cuyas direcciones se desconocen. También pueden ocurrir determinadas situaciones, como una configuración incorrecta del sistema, una identidad de host desconocida o una identidad de red desconocida. Por ejemplo, si la dirección Clase C de un host es 0.0.0.42, significa que su ID de host es 42 y el ID de red de la red en la que se encuentra es el "número desconocido" 0.

El número 255 se utiliza para la transmisión por difusión, es decir, la información enviada por un host se transmitirá a todos los hosts de la red.

· Obtener dirección IP

Para obtener la dirección IP de la red donde estamos ubicados, o las direcciones IP de otros hosts de la red, podemos utilizar java.net .InetAddress en la clase del paquete de software java.net para implementar. Por ejemplo, si queremos obtener la dirección IP de la red en la que estamos, podemos llamar a los métodos getLocalHost() y getAddress() en la clase InetAddress. getLocalHost() devuelve un objeto InetAddress y getAddress() devuelve una matriz de bytes de longitud 4 (la dirección IP es de 4 bytes).

Si queremos compilar una aplicación basada en red, es posible que necesitemos saber el nombre de dominio o la dirección IP del host que va a ejecutar el programa. Si este programa solo se ejecuta en nuestro propio host y también conocemos el nombre de dominio o la dirección IP del host, podemos proceder así: definir una cadena constante, como por ejemplo: string localHost="my-machine-name" . Pero en la mayoría de los casos, compilamos

/*

* Program:sample1.java

*/

import java.net. */;

clase pública GetName {

public static void main (String argv〔〕) arroja una excepción {

InetAddress host=null;

host=InetAddress.getLocalHost();

System.out.println(host.getHostName());

}}

El programa Ejecútelo en diferentes hosts para que tenga valor práctico. Entonces, como se indicó anteriormente, el método para definir una constante localHost no es fácil de usar. Queremos que la aplicación detecte automáticamente el nombre de dominio del host actual. El siguiente procedimiento ilustra cómo lograr esto.

InetAddress es una clase "lista para usar" en el kit de desarrollo de software java.net. En el código anterior, podemos decir que la variable host es InetAddress; InetAddress.getLocalHost() devuelve una InetAddress. Por ejemplo, si el nombre de dominio de un determinado host es "muestra" y su dirección IP es "128.118.2.10", luego de que regrese la llamada InetAddress.getLocalHost(), el valor de la variable host se convierte en "muestra/128.118.2.10 ".

Si solo está interesado en el nombre de dominio del host, puede llamar a getHostname().

En pocas palabras, una dirección IP consta de 4 números. Para obtener la dirección IP en forma numérica, podemos modificar ligeramente el procedimiento anterior.

/*

* Programa:sample2.java

*/

importar java.net.*; p>clase pública GetAddress {

public static void main (String argv〔〕) lanza una excepción {

InetAddress host=null

host=InetAddress.getLocalHost; ();

byte ip〔〕=host.getAddress();

for (int i=0;i

if (i>0 System.out.print(".");

System.out.print(ip〔i〕& 0xff);

}

System.out.println();

}}

getAddress() devuelve una matriz de bytes de longitud 4. Por ejemplo, si la dirección IP es "128.118.2.10 . ”, entonces el contenido final de la variable ip en el programa anterior es:

ip〔0〕=128ip〔1〕=118ip〔2]=2ip〔3]=10

Internet Todas las computadoras en Internet tienen una dirección IP y un nombre de host únicos. En este caso, ¿para qué sirven estas direcciones? Estas direcciones pueden ayudarnos a localizar recursos fijos en Internet y hacer que el enrutamiento funcione sin problemas.

Todos los que están familiarizados con UNIX saben que existe una compleja herramienta nslookup del programa cliente DNS en el sistema UNIX. Usando nslookup, podemos encontrar el nombre de host correspondiente según la dirección IP conocida; Basado en el nombre del host, puede considerarse una herramienta muy útil. El siguiente programa de ejemplo nos permite encontrar las direcciones IP de todos los hosts accesibles en Internet.

/*

* Programa:nslookup.java

*/

importar java.net.*/;

clase pública nslookup {

//Uso: nombre de host de nslookup de Java

public static void main (String argv〔〕) lanza una excepción {

host de cadena =argv〔0〕;

InetAddress dirección=null;

intenta {

address=InetAddress.getByName(host); } catch(UnknownHostException e) {

System.out.println("Host desconocido");

System.exit(0); p>

p>

byte〔〕 ip〔〕=dirección.getAddress();

for (int i=0;i

if ( i>0 System.out.print(".");

System.out.print(ip〔i〕& Oxff);

}

System.out.println();

}}

En JDK 1.0.2 (Java Develop Kit-Java Development Kit), compila un programa para convertir el nombre de host a dirección IP no es fácil Esto se debe a un error en el método getHostName en la clase InetAddress. Este error se solucionó en la versión beta de JDK 1.1, por lo que el siguiente código debería funcionar en JDK 1.1.