Articulo de referencia

Puerto (redes informáticas)

En redes informáticas , un puerto es un punto final de comunicación . A nivel de software dentro de un sistema operativo , un puerto es una construcción lógica que identifica un...

En redes informáticas , un puerto es un punto final de comunicación . 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 se identifica de forma única mediante un número, el número de puerto , asociado a la combinación de un protocolo de transporte y la dirección IP de la red. Los números de puerto son enteros sin signo de 16 bits .

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). El puerto completa las direcciones de origen y destino de un mensaje dentro de un host para que apunte a un proceso del sistema operativo.

Se reservan números de puerto específicos para identificar servicios concretos, de modo que un paquete entrante pueda reenviarse fácilmente a una aplicación en ejecución. Para ello, los números de puerto inferiores a 1024 identifican los servicios más utilizados históricamente y se denominan puertos conocidos . Los puertos con números superiores están disponibles para uso general 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 misma dirección de red. En el modelo cliente-servidor de la arquitectura de aplicaciones, 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 va de 0 a 65535. Para TCP, el puerto número 0 está reservado y no se puede usar, 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 usa 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 entrantes 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 enlazarse a una combinación específica de dirección IP y puerto. Las fallas comunes de las aplicaciones, a veces llamadas 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 usar números de puerto conocidos reservados específicamente 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, estableciendo potencialmente un diálogo uno a uno entre el servidor y el 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. [ 1 ] Los puertos conocidos se definen por 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 enlacen a estos puertos porque a menudo se consideran 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

IANA es responsable de la coordinación global de la raíz 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 más 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 los numerados del 0 al 1023. Los requisitos para las nuevas asignaciones en este rango son más estrictos que para otros registros. [ 2 ]

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

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

Comportamiento de la red

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 mediante unidades de datos de protocolo (PDU). Para TCP, la PDU es un segmento , y para UDP, 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 se codifican en el encabezado del paquete del protocolo de transporte y pueden ser interpretados fácilmente no solo por los hosts emisor y receptor, sino también por otros componentes de la infraestructura de red. En particular, los firewalls suelen configurarse para diferenciar los paquetes según 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 de forma secuencial en un mismo host se conoce comúnmente como escaneo de puertos . Esto suele asociarse con intentos de intrusión maliciosa o con administradores de red que buscan posibles vulnerabilidades para prevenir dichos ataques. Los intentos de conexión a puertos suelen ser monitorizados y registrados por los hosts. La técnica de port knocking utiliza una serie de intentos de conexión (knocks) desde un ordenador cliente para abrir un puerto en el servidor, a través del cual se puede establecer una conexión.

Ejemplos

Un ejemplo del uso de puertos es la entrega de correo electrónico . Un servidor utilizado para enviar y recibir correo electrónico generalmente necesita dos servicios. El primero se utiliza para transportar el correo electrónico hacia y desde otros servidores. Esto se logra mediante 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 de correos (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 los mensajes del servidor. El servicio POP escucha en el puerto TCP 110. Ambos servicios pueden estar ejecutándose en la misma computadora host; en ese caso, el número de puerto distingue el servicio solicitado por una computadora remota, ya sea la computadora 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 del rango de puertos dinámicos (véase más abajo). En algunas aplicaciones, tanto el cliente como el servidor utilizan números de puerto específicos asignados por la IANA. Un buen ejemplo de esto es DHCP , donde el cliente siempre utiliza el puerto UDP 68 y el servidor siempre utiliza el puerto UDP 67.

Uso en URL

Los números de puerto son un componente de las URL ( localizadores uniformes de recursos ) web u otras , pero se omiten en la mayoría de los casos. Por defecto, HTTP usa el puerto 80 y HTTPS usa el puerto 443, pero una URL como esta http://www.example.com:8080/path/especifica que el navegador web se conecta al puerto 8080 del servidor HTTP, en lugar del valor predeterminado.

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. [ 4 ] 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 Another Eightbit Number , abreviada AEN. [ 5 ] Hoy en día, socket de red se refiere a un concepto relacionado pero distinto, a saber, la dirección interna de un punto final utilizada solo dentro del nodo.

El 26 de marzo de 1972, Vint Cerf y Jon Postel solicitaron documentar los usos vigentes y establecer un catálogo de números de socket en el RFC 322. Se pidió a los administradores de red que enviaran una nota o realizaran una llamada telefónica, "describiendo la función y los números de socket de los programas de servicio de red en cada HOST". [ 6 ] 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 estaba en conflicto entre algunos hosts para "servicios públicos útiles". [ 5 ] El documento prometía una solución a 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 los servicios de red y sugirió una función administrativa dedicada, a la que llamó zar , para mantener un registro. [ 7 ] Los 256 valores de AEN se dividieron en los siguientes rangos:

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

En los inicios de ARPANET, el AEN también se denominaba nombre de socket [ 8 ] y se utilizaba con el Protocolo de Conexión Inicial (ICP), un componente del Protocolo de Control de Red (NCP) [ 9 ] . El NCP fue el precursor de los protocolos de Internet modernos. Hoy en día, la terminología nombre de servicio sigue estando estrechamente relacionada con los números de puerto, siendo el primero cadenas de texto utilizadas en algunas funciones de red para representar un número de puerto.

Véase también

Referencias

  1. Postel, John. Protocolo de control de transporte . IETF . doi : 10.17487/RFC0793 . RFC 793. Consultado el 1 de enero de 2023 .
  2. Michelle Cotton; Lars Eggert; et al. (agosto de 2011). Procedimientos de la Autoridad de Números Asignados de Internet (IANA) para la gestión del registro de nombres de servicio y números de puerto del protocolo de transporte . IETF . doi : 10.17487/RFC6335 . BCP 165. RFC 6335 . 
  3. "Números de puerto" . Autoridad de Números Asignados de Internet (IANA).
  4. Crocker, S. (16 de marzo de 1970). Notas de protocolo . IETF . doi : 10.17487/RFC0036 . RFC 36 .
  5. 1 2 Postel, J.; Neigus, N. (22 de diciembre de 1972). Lista de números de zócalos . IETF . doi : 10.17487/RFC0433 . RFC 433 .
  6. Cerf, V.; Postel, J. (26 de marzo de 1972). Números de zócalos bien conocidos . IETF . doi : 10.17487/RFC0322 . RFC 322 .
  7. 1 2 Postel, J. (30 de mayo de 1972). Propuesta de números de zócalo estándar . IETF . doi : 10.17487/RFC0349 . RFC 349 .
  8. Shoshani, A.; Harslem, E. (14 de julio de 1971). Protocolo de conexión inicial: revisado . IETF . doi : 10.17487/RFC0197 . RFC 197 .
  9. Postel, Jon; Feinler, E. (enero de 1978). Manual de protocolo ARPANET . Menlo Park, CA: Centro de Información de Redes. NIC 7104.