Puerto (red informática)

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar

En redes informáticas, un puerto o número de puerto es un número asignado para identificar de forma única un punto final de conexión y para dirigir datos a un servicio específico. A nivel de software, dentro de un sistema operativo, un puerto es una construcción lógica que identifica un proceso específico o un tipo de servicio de red. Un puerto a nivel de software se identifica para cada combinación de protocolo de transporte y dirección por el número de puerto que se le asigna. Los protocolos de transporte más comunes que utilizan números de puerto son el Protocolo de control de transmisión (TCP) y el Protocolo de datagramas de usuario (UDP); esos números de puerto son números sin signo de 16 bits.

Un número de puerto siempre está asociado con una dirección de red de un host, como una dirección IP, y el tipo de protocolo de transporte utilizado para la comunicación. Completa la dirección de origen o de destino de un mensaje. Los números de puerto específicos se reservan para identificar servicios específicos, de modo que un paquete que llega pueda reenviarse fácilmente a una aplicación en ejecución. Para este propósito, los números de puerto inferiores a 1024 identifican los servicios históricamente más utilizados y se denominan números de puerto conocidos. Los puertos con números más altos están disponibles para uso general por parte de las aplicaciones y se conocen como puertos efímeros.

Los puertos proporcionan un servicio de multiplexación para múltiples servicios o múltiples sesiones de comunicación en una dirección de red. En el modelo de arquitectura de aplicaciones cliente-servidor, se pueden iniciar múltiples sesiones de comunicación simultáneas para el mismo servicio.

Número de puerto

Para TCP y UDP, un número de puerto es un entero sin signo de 16 bits, por lo que varía de 0 a 65535. Para TCP, el puerto número 0 está reservado y no se puede utilizar, mientras que para UDP, el puerto de origen es opcional y un valor de cero significa que no hay puerto. Un proceso asocia sus canales de entrada o salida a través de un socket de Internet, que es un tipo de descriptor de archivo, asociado con un protocolo de transporte, una dirección de red como una dirección IP y un número de puerto. Esto se conoce como enlace. Un proceso utiliza un socket para enviar y recibir datos a través de la red. El software de red del sistema operativo tiene la tarea de transmitir datos salientes desde todos los puertos de aplicación a la red y reenviar los paquetes de red que llegan a los procesos haciendo coincidir la dirección IP y el número de puerto del paquete con un socket. Para TCP, solo un proceso puede vincularse a una combinación específica de dirección IP y puerto. Los errores comunes de las aplicaciones, a veces denominados conflictos de puertos, ocurren cuando varios programas intentan usar el mismo número de puerto en la misma dirección IP con el mismo protocolo.

Las aplicaciones que implementan servicios comunes suelen utilizar números de puerto conocidos específicamente reservados para recibir solicitudes de servicio de los clientes. Este proceso se conoce como escucha e implica la recepción de una solicitud en el puerto conocido, lo que potencialmente establece un diálogo de uno a uno entre servidor y cliente, utilizando este puerto de escucha. Otros clientes pueden conectarse simultáneamente al mismo puerto de escucha; esto funciona porque una conexión TCP se identifica mediante una tupla que consta de la dirección local, el puerto local, la dirección remota y el puerto remoto. Los puertos conocidos se definen mediante una convención supervisada por la Autoridad de Números Asignados de Internet (IANA). En muchos sistemas operativos se requieren privilegios especiales para que las aplicaciones se vinculen a estos puertos porque a menudo se los considera críticos para el funcionamiento de las redes IP. Por el contrario, el extremo del cliente de una conexión normalmente utiliza un número de puerto alto asignado para uso a corto plazo, por lo que se denomina puerto efímero.

Números de puerto comunes

La IANA es responsable de la coordinación global de la raíz del DNS, el direccionamiento IP y otros recursos de protocolo. Esto incluye el registro de los números de puerto TCP y UDP de uso común para los servicios de Internet conocidos.

Los números de puerto se dividen en tres rangos: los puertos conocidos, los puertos registrados y los puertos dinámicos o privados.

Los puertos conocidos (también llamados puertos del sistema) son aquellos numerados del 0 al 1023. Los requisitos para las nuevas asignaciones en este rango son más estrictos que para otros registros.

Notables números de puerto conocidos
Número Asignación
20 Protocolo de Transferencia de Archivos (FTP)
21 Protocolo de Transferencia de Archivos (FTP) Control de Mando
22 Secure Shell (SSH) Secure Login
23 Servicio de acceso remoto Telnet, mensajes de texto sin cifrar
25 Entrega de correo electrónico simple protocolo de transferencia de correo (SMTP)
53 Servicio de nombres de dominio (DNS)
67, 68 Protocolo de configuración de host dinámico (DHCP)
80 Protocolo de Transferencia de Hipertexto (HTTP) utilizado en la World Wide Web
110 Protocolo de la Oficina de Correos (POP3)
119 Network News Transfer Protocol (NNTP)
123 Network Time Protocol (NTP)
143 Protocolo de acceso a los mensajes de Internet (IMAP) Gestión del correo digital
161 Protocolo de gestión de redes simples (SNMP)
194 Chat de Relé de Internet (IRC)
443 HTTP Secure (HTTPS) HTTP over TLS/SSL
546, 547 DHCPv6 versión IPv6 de DHCP

Los puertos registrados son los del 1024 al 49151. La IANA mantiene la lista oficial de rangos conocidos y registrados.

Los puertos dinámicos o privados son aquellos que van del 49152 al 65535. Un uso común de este rango es para puertos efímeros.

Comportamiento de redes

Los protocolos de la capa de transporte, como el Protocolo de control de transmisión (TCP) y el Protocolo de datagramas de usuario (UDP), transfieren datos utilizando unidades de datos de protocolo (PDU). Para TCP, la PDU es un segmento y para UDP es un datagrama. Ambos protocolos utilizan un campo de encabezado para indicar los números de puerto de origen y destino. Los números de puerto están codificados en el encabezado del paquete del protocolo de transporte y pueden ser interpretados fácilmente no solo por los hosts emisores y receptores sino también por otros componentes de la infraestructura de red. En particular, los cortafuegos se configuran comúnmente para diferenciar entre paquetes en función de sus números de puerto de origen o destino. El reenvío de puertos es un ejemplo de aplicación de esto.

Escaneo de puertos

La práctica de intentar conectarse a una serie de puertos en secuencia en un único host se conoce comúnmente como escaneo de puertos. Esto suele estar asociado con intentos de piratería maliciosa o con administradores de red que buscan posibles vulnerabilidades para ayudar a prevenir este tipo de ataques. Los intentos de conexión a los puertos son monitoreados y registrados con frecuencia por los hosts. La técnica de "knocking" de puertos utiliza una serie de conexiones a puertos (knocks) desde una computadora cliente para habilitar una conexión al servidor.

Ejemplos

Un ejemplo del uso de los puertos es la entrega de correo electrónico. Un servidor utilizado para enviar y recibir correo electrónico generalmente necesita dos servicios. El primer servicio se utiliza para transportar correo electrónico hacia y desde otros servidores. Esto se logra con el Protocolo simple de transferencia de correo (SMTP). Una aplicación de servicio SMTP estándar escucha en el puerto TCP 25 las solicitudes entrantes. El segundo servicio suele ser el Protocolo de oficina postal (POP) o el Protocolo de acceso a mensajes de Internet (IMAP), que utilizan las aplicaciones cliente de correo electrónico en las computadoras personales de los usuarios para obtener mensajes de correo electrónico del servidor. El servicio POP escucha en el puerto TCP número 110. Ambos servicios pueden estar ejecutándose en el mismo equipo host, en cuyo caso el número de puerto distingue el servicio que fue solicitado por un equipo remoto, ya sea el equipo de un usuario u otro servidor de correo.

Si bien el número de puerto de escucha de un servidor está bien definido (IANA los denomina puertos conocidos), el número de puerto del cliente suele elegirse de entre el rango de puertos dinámicos (consulte a continuación). En algunas aplicaciones, los clientes y el servidor utilizan cada uno números de puerto específicos asignados por la IANA. Un buen ejemplo de esto es DHCP, en el que el cliente siempre utiliza el puerto UDP 68 y el servidor siempre utiliza el puerto UDP 67.

Uso en URLs

A veces, los números de puerto se ven en la web u otros localizadores uniformes de recursos (URL). De forma predeterminada, HTTP utiliza el puerto 80 y HTTPS utiliza el puerto 443, pero una URL como http://www.example.com:8080/path/ especifica que el navegador web se conecta al puerto 8080 del servidor HTTP.

Historia

El concepto de números de puerto fue establecido por los primeros desarrolladores de ARPANET en cooperación informal entre autores de software y administradores de sistemas. El término número de puerto aún no se utilizaba. Fue precedido por el uso del término número de socket en las primeras etapas de desarrollo de la red. Un número de socket para un host remoto era una cantidad de 40 bits. Los primeros 32 bits eran similares a la dirección IPv4 actual, pero en ese momento los 8 bits más significativos eran el número de host. La parte menos significativa del número de socket (bits 33 a 40) era una entidad llamada Otro número de ocho bits, abreviado como AEN. Hoy, socket de red se refiere a un concepto relacionado pero distinto, es decir, la dirección interna de un punto final utilizado solo dentro del nodo.

El 26 de marzo de 1972, Vint Cerf y Jon Postel pidieron que se documentaran los usos vigentes en ese momento y que se estableciera un catálogo de números de socket en el RFC 322. Se pidió a los administradores de red que enviaran una nota o hicieran una llamada telefónica, "describiendo la función y los números de socket de los programas de servicio de red en cada HOST". Este catálogo se publicó posteriormente como RFC 433 en diciembre de 1972 e incluía una lista de hosts y sus números de puerto y la función correspondiente utilizada en cada host de la red. Esta primera función de registro sirvió principalmente como documentación de uso e indicó que el uso de números de puerto era conflictivo entre algunos hosts para "servicios públicos útiles". El documento prometía una resolución de los conflictos basada en un estándar que Postel había publicado en mayo de 1972 en el RFC 349, en el que propuso por primera vez asignaciones oficiales de números de puerto a servicios de red y sugirió una función administrativa dedicada, a la que llamó un zar, para mantener un registro. Los 256 valores de la AEN se dividieron en los siguientes rangos:

AEN ranges
Número de puerto Asignación
0 a 63 Funciones estándar de toda la red
64 a 127 Funciones específicas del anfitrión
128 a 239 Reservado para uso futuro
240 a 255 Cualquier función experimental

El servicio Telnet recibió la primera asignación oficial del valor 1. En detalle, el primer conjunto de asignaciones fue:

Cargos de puertos en RFC 349
Número de puerto Asignación
1 Telnet
3 Transferencia de archivos
5 Entrada de trabajo remota
7 Echo
9 Divulgación

En los inicios de ARPANET, el AEN también se denominaba nombre de socket y se utilizaba con el Protocolo de conexión inicial (ICP), un componente del Protocolo de control de red (NCP). El NCP fue el precursor de los protocolos de Internet modernos. Hoy en día, la terminología nombre de servicio todavía está estrechamente relacionada con los números de puerto, siendo los primeros cadenas de texto utilizadas en algunas funciones de red para representar un número de puerto numérico.

Referencias

  1. ^ Postel, John. Protocolo de Control de Transportes. doi:10.17487/RFC0793. RFC 793. Retrieved 1° de enero 2023.
  2. ^ Michelle Cotton; Lars Eggert; et al. (agosto de 2011). Internet Assigned Numbers Authority (IANA) Procedimientos para la gestión del registro del número de nombre de servicio y del protocolo de transporte. IETF. doi:10.17487/RFC6335. BCP 165. RFC 6335.
  3. ^ "Números de puerto". Internet Assigned Numbers Authority (IANA).
  4. ^ Crocker, S. (16 de marzo de 1970). Notas de Protocolo. doi:10.17487/RFC0036. RFC 36.
  5. ^ a b Postel, J.; Neigus, N. (22 de diciembre de 1972). Lista de números. doi:10.17487/RFC0433RFC 433.
  6. ^ Cerf, V.; Postel, J. (26 de marzo de 1972). Números de bolsillo bien conocidos. doi:10.17487/RFC0322. RFC 322.
  7. ^ a b Postel, J. (30 de mayo de 1972). Números de bolsillo estándar propuestos. doi:10.17487/RFC0349RFC 349.
  8. ^ Shoshani, A.; Harslem, E. (14 de julio de 1971). Protocolo de conexión inicial--Revisado. doi:10.17487/RFC0197. RFC 197.
  9. ^ NIC 7104, Manual de Protocolo de ARPANET
  10. ^ Postel, Jon; Feinler, E. (1978). Manual de Protocolo de ARPANET. Menlo Park, CA: Network Information Center.
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save