viernes, 2 de enero de 2015

Proyecto Redes: Parte IV

Para hoy os traigo un tema que jamas, en todo el tiempo que llevo navegando por Internet, he visto bien explicado: que son los puertos.

Mencioné en la primera parte los paquetes, pero no les he dado mas importancia hasta ahora. Se trata de los bloques de datos que enviamos desde el origen al destino. Aparte de los datos en si, contienen varios elementos (en realidad son mas, pero voy solo a explicar lo que nos interesa) metidos en una "cabecera":

- El tamaño.
- El orden del paquete.
- La IP de origen.
- El puerto de origen
- La IP de destino.
- El puerto de destino.

Lo que es el tamaño, es evidente. La cantidad de datos que van en el paquete, para evitar que se junten dos paquetes de distintos tamaños o que se manden datos "en blanco".

El orden del paquete es un indicador de que parte del mensaje se esta transmitiendo. Si quieres transmitir el mensaje "bienvenido a mi blog" y solo puedes usar paquetes de cuatro letras (los espacios cuentan como letra) los tienes que ir numerando para poder reconstruir el mensaje. Entonces envias "bien"(1), "veni"(2), "do a"(3), " mi "(4), " blo"(5) y "g___"(6). Si por casualidad llegasen desordenados por ir por distinto camino podria reordenarlos.

Ademas, podemos ver que quedan datos en blanco. Si hubiera puesto tambien el tamaño del paquete, esos datos no se habrian emitido.

Las IPs de origen y destino, tambien las hemos explicado, asi que ahora vamos a por los puertos.

Si en un servidor ofrecemos distintos "servicios", como servicio de paginas web, servicios de correo o servicios de base de datos en el mismo equipo. ¿Como sabe el servidor que programa se tiene que hacer cargo de las peticiones que le haga otro equipo? Para eso están los puertos.

Un puerto es una marca adicional que sirve para que un equipo reparta los datos que recibe a los programas correspondientes. Veamoslo de forma mas detallada: el puerto 80 por defecto esta asignado al servidor web. Entonces si accedemos a la tienda online del ejemplo hacemos la solicitud a 12.34.56.78:80 (o sea, IP:Puerto) para poder entrar en su servidor web. El servidor ve que se lo han mandado al puerto 80 y automaticamente lo manda al programa que hace de servidor web. No lo manda al servidor de base de datos o al de correo electronico, que se preguntarian "¿y esto que es?" aparte de malgastar recursos en algo que solo va a dar error.

Pero esto que hemos visto es el puerto de destino, y hemos visto tambien que existe un puerto de origen. ¿Cual es su funcion? Exactamente la misma, pero a la hora de recoger las respuestas.

Ampliamos el ejemplo, ahora llevandolo mucho mas alla. Nuestro Amigo 1 coge su telefono movil (al que le vamos a poner la IP 1.2.3.4) y teclea la direccion de "tiendavirtual.com". Como en principio no sabe a que IP corresponde "tiendavirtual.com", pregunta a su servidor DNS cual es la IP correspondiente, y este le responde que es 12.34.56.78. El telefono de nuestro Amigo 1 ahora manda una peticion a 12.34.56.78:80 compuesta por uno o mas paquetes, que van cada uno por su camino. En esos paquetes pone como remitente 1.2.3.4:9999 (el puerto de origen en muchas ocasiones se escoge de manera aleatoria, en este caso he escogido 9999). El servidor que tiene la IP 12.34.56.78 recibe la peticion, mira que tiene el puerto 80 y envia esos datos al programa que funciona de servidor web, y este responde con los datos que pidio al remitente de los paquetes, esto es, a 1.2.3.4:9999. Al ver los paquetes, el telefono movil recuerda que el navegador habia lanzado una peticion con ese puerto y le envia el mensaje correspondiente, y se muestra en pantalla lo que Amigo 1 habia pedido.

Termino esta parte explicando un concepto nuevo, el firewall. Un firewall es un programa que bloquea las peticiones a un determinado puerto o a un determinado programa para protegerlo de ataques (entre otras posibles razones). Tambien puede bloquear los accesos restringiendo las IPs de origen (si bien un equipo determinado puede tener acceso a una base de datos, no debe permitirse el acceso a cualquiera).

Bueno, ya toca descansar un poco la cabeza. En la siguiente parte explicaré por que he usado como ejemplo a un equipo fuera de una red local y que es "abrir los puertos".

No hay comentarios:

Publicar un comentario