N.11: Números de puertos
En las redes que utilizan los protocolos TCP/IP
(
A3.1) y UDP/IP
[1], cuando un programa cliente necesita de un servicio particular de un servidor, además del tipo
de servicio y localización del servidor, debe indicar el puerto por el que se establecerá la conexión. En este
sentido, un puerto es un extremo de una conexión lógica [2]. Los puertos se indican por
números, y cuando los servicios se refieren a la Web, van incluidos en la sintaxis de la mayoría de las ULRs
(
Ap. G). Para que sea posible
utilizar un servicio de un servidor es necesario que el puerto correspondiente del servidor sea el correcto y que esté
habilitado. Coloquialmente diríamos que el servidor debe estar "escuchando" por dicho puerto.
El sistema se comprende mejor considerando que cada paquete de una conexión TCP/IP tiene una cabecera con los siguientes datos:
- Dirección IP de origen (4 bytes)
- Puerto TCP o UDP de origen (2 bytes)
- Dirección IP de destino (4 bytes)
- Puerto TCP o UDP de destino (2 bytes)
La asignación de puertos permite que una máquina pueda establecer simultáneamente diversas conexiones TCP/IP con máquinas distintas, ya que todos los paquetes que se reciben tienen la misma dirección IP, pero van dirigidos a puertos diferentes. También que una máquina pueda establecer simultáneamente diversas comunicaciones TCP/IP con otra utilizando puertos distintos para cada conexión.
Como se ha indicado, los números de puerto se indican mediante una palabra de 2 bytes (16 bits), por lo que el rango de
valores es de 216 (0 a 65535) y en principio una aplicación puede utilizar cualquier número dentro del rango.
Sin embargo, con el fin de unificar criterios en cuanto a los puertos que utilizarían las aplicaciones de Internet, la
IANA (
N-6)
realizó una asignación de los números disponibles en tres categorías:
- Puertos bien conocidos ("Well known ports"), comprendidos entre 0 y 1023. Estos 1024 (210) puertos pueden ser representados con 10 bits y son reservados para servicios conocidos.
- Puertos registrados ("Registered ports"). 48127 puertos comprendidos entre 1024 y 49151.
- Puertos dinámicos y privados. Los comprendidos entre los números 49152 y 65535.
En caso de tener que asignar un puerto a una aplicación, si no se elige el correspondiente "Well-Known" debe
seleccionarse un número en el rango 1024 - 65535. En los sistemas Linux la asignación de puertos se encuentra
en el fichero /etc/services. También pueden inspeccionarse los puertos abiertos por las distintas aplicaciones
mediante la utilidad netstat.
Puede consultarse en RFC 1700 (
www.faqs.org/rfcs) y en la propia IANA
www.iana.org/assignments/port-numbers.
En los sistemas POSIX, los números de puertos y nombres de los servicios correspondientes, están definidos en el fichero /etc/services. En los sistemas Windows estos valores se encuentran en el fichero c:\windows\system32\drivers\etc\services, cuyo contenido, para un sistema WindowsXP.
La tabla adjunta muestra algunos de estos puertos y los servicios correspondientes.
| N. de puerto | Descripción |
|---|---|
| 0 | Reservado |
| 1 | TCP Servicio de multiplexado de puertos (TCPMUX) |
| 4 | No asignado |
| 5 | RJE ("Remote Job Entry") |
| 6 | No asignado |
| 7 | ECHO |
| 18 | MSP ("Message Send Protocol") |
| 20 | FTP
("File Transfer Protocol" |
| 21 | FTP ("File Transfer Protocol") Control |
| 22 | SSH Secure Shell Remote Login Protocol |
| 23 | Telnet
(acceso a terminal remoto |
| 25 | SMTP ("Simple Mail Transfer Protocol") |
| 29 | MSG ICP |
| 37 | Time |
| 42 | Host Name Server (Nameserv) |
| 43 | Whois |
| 49 | Login Host Protocol (Login) |
| 53 | DNS ("Domain Name System") |
| 59 | IDENT |
| 69 | TFTP ("Trivial File Transfer Protocol") |
| 70 | Servicio Gopher
( |
| 79 | Servicio Finger
( |
| 80 | WWW-HTTP
("Hyper Text Transfer Protocol" |
| 103 | X.400 Standard |
| 108 | SNA Gateway Access Server |
| 109 | POP2 ("Post Office Protocol") |
| 110 | POP3 ("Post Office Protocol") |
| 111 | SUN-RPC. ("Remote Procedure Call") |
| 113 | UDP
("User Datagram Protocol" |
| 115 | SFTP ("Simple File Transfer Protocol") |
| 118 | Servicios SQL |
| 119 | NNTP
("Network News Transfer Protocol" |
| 137 | netbios-ns NETBIOS Name Service |
| 138 | netbios-dgm NetBIOS Datagram Service |
| 139 | netbios-ssn NetBIOS Session Service |
| 143 | IMAP ("Interim Mail Access Protocol") |
| 156 | SQL Server |
| 161 | SNMP ("Simple Network Management Protocol") |
| 162 | SNMP trap |
| 179 | BGP ("Border Gateway Patrol") |
| 190 | GACP ("Gateway Access Control Protocol") |
| 194 | IRC ("Internet Relay Chat") |
| 197 | DLS ("Directory Location Service") |
| 210 | wais (servicio de búsquedas |
| 389 | LDAP ("Lightweight Directory Access Protocol") |
| 396 | Novell Netware sobre IP |
| 443 | HTTPS
("HyperText Transfer Protocol" |
| 444 | SNNP ("Simple Network Paging Protocol") |
| 445 | Microsoft-DS |
| 458 | Apple QuickTime |
| 513 | rlogin Acceso remoto |
| 546 | DHCP
("Dynamic Host Configuration Protocol" |
| 547 | DHCP Servidor |
| 563 | SNEWS |
| 569 | MSN |
| 631 | UDP ("User Datagram Protocol") |
| 1080 | Socks Proxy |
| Otros puertos no estándar | |
| 1503 | T.120 Utilizado por aplicaciones que comparten aplicaciones |
| 1720 | H.323 Utilizado para escuchar llamadas entrantes por aplicaciones como VideoLink_Pro de Smith Micro y Microsoft NetMeeting. |
| 1723 | PPTP ("Point-to-Point Tunneling Protocol") |
| 2049 | NFS. |
| 6660-6669 | TCP ("Transmission Control Protocol" ) |
| 8080 | Web proxy caching service |
[1] UDP ("Unreliable Datagram Protocol"). Protocolo para transmisión de Video en tiempo real (por ejemplo RealPlayer), que ignora los frames erroneos; ofrece mucho menos control que TCP.
También: "Usenet Death Penalty" (Pena de muerte de Usenet). Una medida anti-spam por la que los administradores de redes pueden evitar recibir noticias de un servidor determinado (conocido por sus malos hábitos al respecto) o sistemáticamente cancelar todos los mensajes provenientes de una persona, que contengan determinadas palabras, etc.
[2] Otro aspecto del concepto de "puerto" un ordenador (desde la óptica del
PC) puede consultarse el capítulo "Puertos de E/S" del tutorial Tecnología del PC
(
H2.5).
En dicho capítulo se utiliza el concepto de forma similar, aunque en este caso
no se trata de las comunicaciones TCP/IP entre distintas máquinas, sino desde
la óptica de las comunicaciones entre los distintos elementos hardware que
componen una misma máquina.