educación, informática y demás

Terminando el puzle: Cliente / Servidor, puertos, DNS y URLs

En este apartado se explican los puntos finales para comprender cómo funciona la comunicación en redes de sistemas informáticos. Al final, los actores que se comunican entre los equipos informáticos conectados a una red de computadores son aplicaciones, programas.

Estos programas, que están en el nivel de aplicación, aprovechan todo el software de red que implementa los niveles inferiores de la pila de protocolos TCP/IP para comunicarse con programas en el otro extremo, en equipos remotos, que pueden estar en la misma red o en redes distantes.

El paradigma más utilizado en esta comunicación entre aplicaciones es el de Cliente / Servidor. Este paradigma esta compuesto por dos tipos de aplicaciones, las aplicaciones Cliente y las aplicaciones Servidor. La aplicación servidor recibe peticiones de servicio de una o varias aplicaciones cliente utilizando un protocolo de red de nivel de aplicación para definir las reglas de la comunicación que llevarán a cabo.

Este proceso de comunicación es el que nos permite a los usuarios, a través de las aplicaciones cliente, acceder a los servicios que ofrecen aplicaciones que se están ejecutando en equipos remotos, aplicaciones servidoras, como por ejemplo un servidor de páginas web (HTTP) como puede ser el servidor donde está alojada esta página web o el vídeo que verás a continuación.

Para conseguir esa comunicación, no solo hay que hacer llegar los paquetes de datos del host origen al host destino usando las direcciones IP de las interfaces de red que está utilizando cada equipo, sino que además se necesita utilizar algún tipo de información que permita identificar la aplicación origen del paquete y la aplicación de destino del mismo.

Recuerda, en un mismo equipo podemos tener varias aplicaciones en ejecución que estén comunicándose a través de una misma interfaz de red. De alguna forma el software de red del sistema debe ser capaz de entregar los paquetes recibidos a través de la red con destino este host, la dirección IP asociada a la interfaz de red, a la aplicación de destino correcta y no a otra.

Aquí es donde entra en juego el concepto de puerto o socket en inglés. Gracias al uso de puertos, las aplicaciones pueden abrir puertos solo para recibir o escuchar peticiones, y puertos para enviar y recibir paquetes. Los puestos se identifican con un número de 16 bits que las aplicaciones deberán solicitar al software de red del sistema cuando quieran comunicarse a través de una red TCP/IP. De la misma forma, cuando una aplicación cliente quiera comunicarse con una aplicación servidora, deberá conocer de antemano no solo la dirección IP del host donde está ejecutándose el servidor, que suele llamarse también equipo servidor, sino que debe conocer el puerto donde escucha peticiones el servidor.
¿Cómo puede conocer esta información la aplicación cliente? Gracias al protocolo de red que se utilice para comunicar Cliente y Servidor.

El servidor de un determinado protocolo utiliza un puerto reservado y bien conocido, asignado a dicho protocolo de red por su uso de facto o bien por estandarización. Lo importante, es que al utilizar un protocolo como HTTP, por ejemplo, se conoce que por defecto los servidores HTTP estarán escuchando en el puerto 80, y si el protocolo es HTTPS el servidor estará escuchando en el puerto 443. Los puertos del 0 al 1024 están reservados para estos protocolos de red bien conocidos. El resto de puertos, del 1024 en adelante, pueden ser utilizados por cualquier aplicación, puesto que no están reservados. Por supuesto, en un mismo equipo tan solo una aplicación en ejecución puede utilizar un mismo puerto a la vez.

Las aplicaciones cliente también necesitan abrir un puerto para poder comunicarse con la aplicación servidora. La ventaja es que la aplicación cliente abre cualquier puerto, el primero que esté libre, puesto que solo la aplicación servidora del protocolo en cuestión tiene que escuchar en el puerto reservado, en el caso del protocolo HTTP el 80. La aplicación cliente abre o reserva un puerto disponible y se comunica con la aplicación servidora. Cuando los paquetes de datos lleguen al otro extremo, la aplicación servidora recibirá la información de su interlocutor: dirección IP de origen y puerto de origen, junto con el resto de datos que se envíen en el paquete de información.

En este vídeo, también se muestra el funcionamiento básico del servicio DNS, necesario hoy en día para acceder a los servicios disponibles tanto en Internet como en una Intranet, las partes de un nombre de dominio y qué son y cómo se utilizan las URLs.

El objetivo del vídeo es tratar de proporcionar toda esta información de forma visual y resumida para facilitar su comprensión. Por supuesto, si se quiere profundizar más en la materia se aconseja consultar otras fuentes, como las entradas correspondientes de la wikipedia.