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" Ap. G) Datos |
21 | FTP ("File Transfer Protocol") Control |
22 | SSH Secure Shell Remote Login Protocol |
23 | Telnet (acceso a terminal remoto Ap. G y 8.7) |
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 ( Ap. G) |
79 | Servicio Finger ( N-13) |
80 | WWW-HTTP ("Hyper Text Transfer Protocol" Ap. G) |
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" RFC-768) |
115 | SFTP ("Simple File Transfer Protocol") |
118 | Servicios SQL |
119 | NNTP ("Network News Transfer Protocol" Ap. G) |
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 Ap. G) |
389 | LDAP ("Lightweight Directory Access Protocol") |
396 | Novell Netware sobre IP |
443 | HTTPS ("HyperText Transfer Protocol" Ap. G) |
444 | SNNP ("Simple Network Paging Protocol") |
445 | Microsoft-DS |
458 | Apple QuickTime |
513 | rlogin Acceso remoto |
546 | DHCP ("Dynamic Host Configuration Protocol" A3.6) Cliente |
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.