Aunque normalmente nos referimos a Puertos TCP y UDP, en realidad más que de puertos debemos hablar de protocolos, ya que no se trata de diferentes tipos de puertos, sino de diferentes protocolos utilizados para su gestión.
TCP (Transport Control Protocol) y UDP (User Datagram Protocol) son dos protocolos de puertos de comunicaciones que resultan imprescindibles para éstas y que se comportan de forma diferente.
Entre estos dos tipos de protocolos, o más bien entre su comportamiento en cuanto al tratamiento de transmisión de datos se refiere, hay una serie de diferencias que es conveniente conocer. Vamos a ver cuales son esas diferencias:
Protocolo TCP:
El protocolo TCP o Transport Control Protocol proporciona un transporte fiable de flujo de bits entre aplicaciones. Se utiliza para enviar de forma fiable grandes cantidades de información, liberando al programador de aplicaciones de tener que gestionar la fiabilidad de la conexión (retransmisiones, pérdidas de paquetes, orden en que llegan los paquetes, duplicados de paquetes...), encargándose el propio protocolo de su gestión. Para ello, cada paquete de datos dedica 20 bytes al envío de información.
Esto hace que las transmisiones por TCP sean muy seguras... pero también lentas, ya que cada paquete hace una serie de comprobaciones sobre la integridad de los datos enviados, a lo que hay que añadir que al ser los paquetes de tamaño fijo, si aumentamos el tamaño dedicado al envío de información vamos a asegurarnos una mayor fiabilidad, pero también enviamos menos datos.
Protocolo UDP:
El protocolo UDP, o User Datagram Protocol en cambio proporciona un nivel no fiable de transporte de datagramas, ya que añade muy poca información sobre los mismos (8 bytes, frente a los 20 bytes que vimos en el protocolo TCP). La primera consecuencia de esto es que por cada paquete enviado se envía una mayor cantidad de datos, pero también al reducir la información y comprobaciones de estos se aumenta la velocidad a la que se transfieren.
Este sistema lo utilizan, por ejemplo, NFS (Network File System) y RCP, que es un comando utilizado para transferir ficheros entre ordenadores, pero sobre todo es muy utilizado en la transferencia tanto de audio como de vídeo.
El protocolo UDP no usa ningún retardo para establecer una conexión, no mantiene estado de conexión y no hace un seguimiento de estos parámetros. Esto hace que un servidor dedicado a una aplicación determinada pueda soportar más clientes conectados cuando la aplicación corre sobre UDP en lugar de sobre TCP.
Rango de los puertos:
El campo de puerto tiene una longitud de 16 bits, lo que permite un rango que va desde 0 a 65535, pero no todos estos puertos son de libre uso. Veamos algunas normas sobre ellos:
El puerto 0 es un puerto reservado, pero es un puerto permitido si el emisor no permite respuestas del receptor.
Los puertos 1 a 1023 reciben el nombre de Puertos bien conocidos, y en sistemas Unix, para enlazar con ellos, es necesario tener acceso como superusuario.
Los puertos 1024 a 49151 son los llamados Puertos registrados, y son los de libre utilización.
Los puertos del 491552 al 65535 son puertos efímeros, de tipo temporal, y se utilizan sobre todo por losclientes al conectar con el servidor.
Importancia de la apertura de estos puertos:
La importancia de la apertura de estos puertos viene dada porque muchos programas de muy diferente tipo los utilizan, y necesitan tenerlos abiertos y, en el caso de redes, correctamente asignados. En general, cualquier programa o servicio que necesite comunicarse necesita un puerto (o varios) por el que hacerlo. Los más habituales (y conocidos) son:
- 20 (TCP), utilizado por FTP (File Transfer Protocol) para datos
- 21 (TCP), utilizado por FTP (File Transfer Protocol) para control
- 25 (TCP), utilizado por SMTP (Simple Mail Transfer Protocol)
- 53 (TCP), utilizado por DNS (Domain Name System)
- 53 (UDP), utilizado por DNS (Domain Name System)
- 67 (UDP), utilizado por BOOTP BootStrap Protocol (Server) y por DHCP
- 68 (UDP). utilizado por BOOTP BootStrap Protocol (Client) y por DHCP
- 69 (UDP), utilizado por TFTP (Trivial File Transfer Protocol)
- 80 (TCP), utilizado por HTTP (HyperText Transfer Protocol)
- 88 (TCP), utilizado por Kerberos (agente de autenticación)
- 110 (TCP), utilizado por POP3 (Post Office Protocol)
- 137 (TCP), utilizado por NetBIOS (servicio de nombres)
- 137 (UDP), utilizado por NetBIOS (servicio de nombres)
- 138 (TCP), utilizado por NetBIOS (servicio de envío de datagramas)
- 138 (UDP), utilizado por NetBIOS (servicio de envío de datagramas)
- 139 (TCP), utilizado por NetBIOS (servicio de sesiones)
- 139 (UDP), utilizado por NetBIOS (servicio de sesiones)
- 143 (TCP), utilizado por IMAP4 (Internet Message Access Protocol)
- 443 (TCP), utilizado por HTTPS/SSL (transferencia segura de páginas web)
- 631 (TCP), utilizado por CUPS (sistema de impresión de Unix)
- 993 (TCP), utilizado por IMAP4 sobre SSL
- 995 (TCP), utilizado por POP3 sobre SSL
- 1080 (TCP), utilizado por SOCKS Proxy
- 1433 (TCP), utilizado por Microsoft-SQL-Server
- 1434 (TCP), utilizado por Microsoft-SQL-Monitor
- 1434 (UDP), utilizado por Microsoft-SQL-Monitor
- 1701 (UDP), utilizado para Enrutamiento y Acceso Remoto para VPN con L2TP.
- 1723 (TCP). utilizado para Enrutamiento y Acceso Remoto para VPN con PPTP.
- 1761 (TCP), utilizado por Novell Zenworks Remote Control utility
- 1863 (TCP), utilizado por MSN Messenger
Esta es una pequeña lista de los principales puertos, aunque hay bastantes más. A todos ellos hay que añadir aquellos que utilizan otros programas, ya sean del tipo P2P, de acceso remoto a terminales, de juegos OnLine y un largo etcétera.
Apertura de puertos:
Un puerto se puede abrir a dos niveles, a nivel del sistema y a nivel salida de comunicación.
A nivel del sistema se trata de autorizar en el Firewall el tráfico por un determinado puerto.
A nivel salida de comunicación se trata básicamente de configurar un enrutador, o Router para que dirija el tráfico de un puerto determinado a un terminal especificado.
No vamos a entrar aquí en detalle de como abrir un puerto en un router, ya que esto depende del modelo de router del que se trate. La información necesaria para abrirlos la pueden ver en el manual del router que tengan, y también en nuestra sección de Tutoriales tienen una amplia colección de documentos sobre como configurar diferentes routers (ver el tutorial Todo lo que necesites saber sobre configuración de routers), lo que sí vamos a ver es una serie de consideraciones de carácter general que se deben tener en cuenta a este respecto:
- Antes de abrir un puerto debemos ser plenamente conscientes de los riesgos que esto supone.
- En un router, un puerto solo se pude redirigir a un terminal (IP) concreto. En el caso de tratarse de un programa que tenga que estar instalado en más de un ordenador de la red, se debe configurar el/los puertos del programa de forma que sean diferentes en cada una de las instalaciones.
- Debemos asegurarnos de que un puerto que vayamos a abrir queda operativo a ambos niveles. De nada nos sirve asignar un puerto en el router si luego nos lo cierra el Firewall.
- En conexiones de red con IP controlada por DHCP uno de los problemas que se presentan a nivel router es la asignación de la IP privada que este sistema haga en un momento dado a un ordenador. Cuando trabajamos con puertos asignados en un router es conveniente configurar las IP de forma manual en los terminales.
Para ello lo mejor es configurar en el router un rango de DHCP que cubra los posibles equipos no asignados de forma manual que puedan tener que conectarse a nuestra red. Es aconsejable que este rango sea lo más ajustado posible, y a ser posible que comience por un número no demasiado bajo. Luego asignamos a nuestros equipos direcciones IP por debajo del rango asignado a DHCP.
Vamos a poner un ejemplo con tres ordenadores, ambos con puertos asignados.
Respetando las IP de rango 192.168.1.x, la asignación a la Puerta de enlace sería 192.168.1.1
Pues bien, yo asignaría a DHCP el rango de 192.168.1.33 a 192.168.1.37 (dejo solo 5 direcciones disponibles, aunque se pueden dejar menos o incluso inhabilitar DHCP, que a efectos de seguridad es lo mejor) y asignaría la IP 192.168.1.10 al ordenador principal, 192.168.1.11 al segundo y 192.168.1.12 al tercero.
Esta asignación se hace en cada equipo, dentro de las Propiedades TCP/IP de la conexión. Con ello nos aseguramos que un ordenador va a conectar siempre con la misma IP, ya que evidentemente si hemos asignado un puerto a una IP determinada solo va a funcionar en el ordenador que conecte con dicha IP, y esto, de no cumplirse, nos puede causar complicaciones y efectos no deseados.
No hay comentarios:
Publicar un comentario