Direcciones IP - bleums/Redes-Comunicaciones GitHub Wiki

DIRECCIONES IP

La dirección IP consiste en un número que permite identificar de forma única a cada equipo dentro de la red y suministra la información necesaria para la localización correcta del equipo dentro de la misma.

El "proceso de enrutamiento" define la ruta o camino que seguirán los mensajes enviados entre dos o más equipos. Este proceso está definido en el protocolo de red.

Direccionamiento en Internet

Cada dirección IP define la identificación de la red y la identificación del host dentro de la misma: Dirección IP = f(Red,Host)

Clases de Direcciones IP

  • Direcciones Classful: Dirección IP = f(Red,Host) Para identificar a los equipos que se encuentran en una misma red, se utiliza la máscara de red, que consiste en un número IP en donde todos los bits que corresponden a la red se colocan en uno (1).
    • Direcciones Clase A (Prefijo /8) Se utiliza para redes con un número muy grande de hosts. Permite definir un máximo de 16.777.214(2^24-2) equipos.

      • En binario= El primer bit es cero, los siguientes siete identifican la red y los 24 restantes identifican al host.
      • En decimal: Números IP: 001.xxx.xxx.xxx a 126.xxx.xxx.xxx | Máscara: 255.0.0.0
    • Direcciones de clase B (Prefijo /16) Se utilizan para redes medianas, pues en cada red/16 se puede direccionar un máximo de 65.534(2^16 -2) equipos. Permite definir 16.384 redes (2^14).

      • En binario, los dos primeros bits siempre son uno y cero, los siguientes 14 bits identifican la red y los 16 restantes identifican al host.
      • En decimal: Números IP: 128.xxx.xxx.xxx a 191.xxx.xxx.xxx | Máscara: 255.255.0.0
    • Direcciones de clase C (Prefijo /24) Se usan para redes LAN pequeñas. Permite direccionar un máximo de 254 (2^8 -2) equipos. Permite definir 2.097.152 redes (2^21).

      • En binario, los tres primeros bits son 110, los siguientes 21 identifican la red y los 8 restantes identifican al host.
      • En decimal, Números IP: 192.xxx.xxx.xxx a 223.xxx.xxx.xxx | Máscara: 255.255.255.0
    • Direcciones de clase D Se usan para implementar el uso de comunicaciones multicast. Permite enviar un mensaje desde un host hacia un grupo de hosts dentro de la red, utilizando una única dirección que los identifica como grupo.

      • En binario, los cuatro primeros bits son 1110, los siguientes 21 identifican la red y los 8 restantes identifican al host. * Direcciones de clase E Se utilizan para fines experimentales y no están disponibles para uso general. Sus primeros cuatro bists tienen los valores 1111

Limitaciones de direccionamiento

Para manejar el problema del agotamiento de direcciones IP se pueden considerar las siguientes opciones:

  • Crear un sub-espacio de direcciones IP (subnetting)
  • Classless Interdomain Routing (CIDR)
  • Direccionamiento privado y Traductor de direcciones de red (NAT)
  • IP versión 6 (IPv6)

Direcciones Classless

Ya no se habla de campo de red y campo de subred, sino únicamente de prefijode red y campo de host. Tampoco de habla de máscara de red, sino de longitud de prefijo o máscara del prefijo.

Dirección de Loopback

Esta interfaz pertenece al bloque reservado entre 127.0.0.0 y 127.255.255.254. La mayoría de los sistemas utilizan la dirección 127.0.0.1 para esta interfaz, mejor conocida como localhost.

Domain Name System: DNS

Fue inventado en 1984 y permite a los usuarios de red utilizar nombres jerárquicos sencillos para comunicarse con otros equipos, en vez de memorizar y usar sus direcciones IP. Precisamente, DNS es una base de datos distribuida que proporciona un sistema jerárquico de nombres para identificar a los equipos en Internet.

¿Cómo trabaja el DNS?

El DNS funciona utilizando tres componentes principales: Resolutores (resolvers) | Servidores de nombres (name servers) | Espacio de nombres de dominio (domain name space)

Comunicación básica:

  • Un cliente DNS o resolver, envía peticiones a un servidor de nombres.
  • El servidor de nombres devuelve la información solicitada
  • El name server dirige la solicitud a otro name server, o devuelve un mensaje de error si la petición no puede ser resuelta.

Domain Name Space

El Espacio de Nombres de Dominio es una estructura tipo "árbol". Cada dominio (nodo) tiene un nombre asignado y puede contener subdominios. El nombre del dominio, identifica la posición del mismo dentro de la base de datos, en relación con su "Dominio padre". Un punto separa cada segmento del nombre de cada nodo de red del dominio DNS.

Nombres de los dominios

Cada subdominio debe tener un nombre único dentro de su dominio padre, lo cual asegura su unicidad dentro del espacio de nombres DNS. Los nombres de los dominios se leen de izquierda a derecha, empezando por el nombre del equipo, hasta llegar al dominio del root.

Jerarquía DNS

Dominio Raíz (Root)

Este dominio es el nodo origen de toda la jerarquía DNS.

Dominios de Alto Nivel (Top Level Domains)

Estos dominios agrupan a las organizaciones, teniendo en cuenta el tipo de servicios que ofrecen.

Manejo de direcciones IP y nombres DNS con Java: Clase InetAddress

La clase InetAdress encapsula tanto las direcciones IP numéricas como el nombre de dominio DNS de esas direcciones. La clase InetAddress proporciona un acceso neutro a las direcciones IP; esto significa que quien utiliza objetos de esta clase no necesita conocer toda la estructura subyacente y funcionamiento de las mismas, sino que solo debe conocer que ese objeto hace referencia a la ubicación de un objeto dentro de la red.

Factory Methods

Los "Métodos de fábrica" de una clase, son aquellos métodos estáticos que devuelven una instancia de esa misma clase. Los Factory Methods de la clase InetAddress son:

  • static InetAddress getLocalHost() throws UnkownHostException
  • static InetAddress getByName(String host $"el nombre o su dirección"$) throws UnknownHostException
  • static InetAddress[] getAllByName(String host) throws UnkownHostException

Introspección: Métodos de Instancia

  • byte[] getAddress() | Devuelve un arreglo de bytes correspondientes a la dirección IP representada por este objeto InetAddress.
  • String getHostName()
  • String getHostAddress()
  • boolean isMulticastAddress()
  • String toString()
  • boolean equals(Object other)

Excepciones

  • UnknownHostException: subclase de IOExcpetion. Indica que el host no pudo identificarse satisfactoriamente.
  • SecurityException: puede lanzarse si el SecurityManager no permite una operación específica.