8.2.1.7.- Puertos de red

Además de la dirección del ordenador al que queremos contactar, hace falta otro tipo adicional de direccionamiento: el emisor debe tener una dirección para un programa específico en el sistema remoto, por ejemplo, supongamos que tenemos un navegador web, puede que el ordenador del servidor web esté ejecutando otros servidores, como por ejemplo SMTP o FTP. Agregaremos otro número a las direcciones IP para dirigir el tráfico al servidor web. Este número es el puerto de red, los programas que acceden a una red TCP/IP suelen hacerlo a través de uno o más puertos. Los números de puerto son características de UDP y TCP,  hay protocolos como ICMP que no usan número de puerto.

Los servidores se asocian automáticamente a puertos específicos definidos por convención y asociados a programas específicos del servidor. Un cliente puede dirigir su petición a un puerto específico y esperar a contactar con el servidor apropiado, el número de puerto del cliente no es fijo, sino que lo asigna el SO. Ya que es el cliente quien inicia la transferencia, incluye su propio número de puerto en la petición de conexión, por lo que los clientes no necesitan números de puerto fijos. Esta asignación dinámica del puerto del cliente permite a un ordenador ejecutar varias instancias de un mismo cliente de modo que no compitan por un único puerto.

num_puerto

Una diferencia clave de los puertos TCP/IP es la existente entre puertos con y sin privilegios. Los puertos con privilegios son los inferiores a 1024, puertos que tienen restringido el acceso, sólo root puede acceder a ellos. La intención es que un cliente se conecte a un puerto con privilegios con la seguridad de que el servidor que se ejecuta en ese puerto está configurado por el administrador del sistema. Hoy en día, la confianza no se puede basar únicamente en el puerto, por lo que esta distinción no resulta muy útil. Los usuarios pueden acceder a los puertos superiores al 1024.

tux_maestro_derClientes y servidores.- Un cliente es un programa que inicia una conexión de red para intercambiar datos. Un servidor escucha dichas conexiones y responde a ellas. Los términos cliente y servidor también se pueden aplicar a ordenadores enteros que operen como tales la mayor parte del tiempo.

 En un funcionamiento básico no tendremos que hacer nada para configurar los puertos en un sistema Linux, aunque puede que lo necesitemos si utilizamos servidores poco usuales que necesitan una configuración para que el servidor pueda enlazarse con los puertos correctos. Esto implica, a veces, la modificación del fichero /etc/services, que asocia números de puerto a nombres, permitiendo utilizar dichos nombres en las configuraciones de servidores y en otros sitios, este fichero contiene líneas que empiezan con un nombre y terminan con un número de puerto, incluyendo el tipo de protocolo utilizado (TCP o UDP):

etc_services