stringtranslate.com

Puerto (redes de computadoras)

En las redes de computadoras , un puerto o número de puerto es un número asignado para identificar de forma única un punto final de conexión y 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 mediante 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 firmar 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 destino o de origen de un mensaje. Los números de puerto específicos están reservados para identificar servicios específicos, de modo que un paquete entrante 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 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 oscila entre 0 y 65535. Para TCP, el número de puerto 0 está reservado y no se puede utilizar, mientras que para UDP, el puerto de origen es opcional y tiene 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 a un protocolo de transporte , una dirección de red como una dirección IP y un número de puerto. Esto se conoce como vinculante . 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 la aplicación a la red y reenviar los paquetes de red entrantes a los procesos haciendo coincidir la dirección IP del paquete y el número de puerto con un socket. Para TCP, solo un proceso puede vincularse a una combinación de dirección IP y puerto específica. Los fallos comunes de las aplicaciones, a veces llamados conflictos de puertos , ocurren cuando varios programas intentan utilizar 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, estableciendo potencialmente un diálogo servidor-cliente uno a uno, 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 están definidos por 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 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

La IANA es responsable de la coordinación global de la raíz del DNS, las direcciones IP y otros recursos del protocolo. Esto incluye el registro de números de puerto TCP y UDP de uso común para 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 conocidos como puertos del sistema ) son aquellos numerados del 0 al 1023. Los requisitos para nuevas asignaciones en este rango son más estrictos que para otros registros. [2]

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

Los puertos dinámicos o privados son los del 49152 al 65535. Un uso común de 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 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 sólo por los hosts emisores y receptores, sino también por otros componentes de la infraestructura de red. En particular, los firewalls comúnmente se configuran para diferenciar entre paquetes según sus números de puerto de origen o destino. El reenvío de puertos es una aplicación de ejemplo de esto.

Escaneo de puertos

La práctica de intentar conectarse a una variedad de puertos en secuencia en un solo host se conoce comúnmente como escaneo de puertos . Esto suele estar asociado con intentos de craqueo maliciosos o con administradores de red que buscan posibles vulnerabilidades para ayudar a prevenir dichos ataques. Los hosts frecuentemente monitorean y registran los intentos de conexión de puerto. La técnica de golpe de puerto utiliza una serie de conexiones de puerto (golpes) desde una computadora cliente para habilitar una conexión de servidor.

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 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 recuperar 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 la misma computadora host, en cuyo caso el número de puerto distingue el servicio que fue 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 llama puertos conocidos), el número de puerto del cliente a menudo se elige del rango de puertos dinámicos (ver más abajo). En algunas aplicaciones, los clientes y el servidor utilizan números de puerto específicos asignados por la IANA. Un buen ejemplo de esto es DHCP en el que el cliente siempre usa el puerto UDP 68 y el servidor siempre usa el puerto UDP 67.

Uso en URL

Los números de puerto a veces se ven en la web u otros localizadores uniformes de recursos (URL). De forma predeterminada, HTTP usa el puerto 80 y HTTPS usa 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. [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 porción menos significativa del número de socket (bits 33 a 40) era una entidad llamada Otro número de ocho bits , abreviado AEN. [5] Hoy en día, el socket de red se refiere a un concepto relacionado pero distinto, a saber, la dirección interna de un punto final utilizado sólo dentro del nodo.

El 26 de marzo de 1972, Vint Cerf y Jon Postel pidieron que se documentaran los usos actuales y se estableciera un catálogo de números de socket en 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 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 del uso e indicó que el uso del número de puerto estaba en conflicto entre algunos hosts para "servicios públicos útiles". [5] 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 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ó zar , para mantener un registro. [7] Los 256 valores de la 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, AEN también se denominaba nombre de socket [ 8] y se usaba con el Protocolo de conexión inicial (ICP), un componente del Protocolo de control de red (NCP). [9] [10] NCP fue el precursor de los protocolos de Internet modernos. Hoy en día, el nombre del servicio terminológico todavía está estrechamente relacionado con los números de puerto; los primeros son cadenas de texto utilizadas en algunas funciones de red para representar un número de puerto numérico.

Referencias

  1. ^ Postel, Juan. Protocolo de Control de Transporte. doi : 10.17487/RFC0793 . RFC 793 . Consultado el 1 de enero de 2023 .
  2. ^ Michelle algodón; 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 números de puerto de protocolo de transporte y nombres de servicios. 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. doi : 10.17487/RFC0036 . RFC 36.
  5. ^ ab Postel, J.; Neigus, N. (22 de diciembre de 1972). Lista de números de enchufe. doi : 10.17487/RFC0433 . RFC 433.
  6. ^ Cerf, V.; Postel, J. (26 de marzo de 1972). Números de enchufes bien conocidos. doi : 10.17487/RFC0322 . RFC 322.
  7. ^ ab Postel, J. (30 de mayo de 1972). Números de enchufes estándar propuestos. doi : 10.17487/RFC0349 . RFC 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 del protocolo ARPANET
  10. ^ Postel, Jon; Feinler, E. (1978). Manual del protocolo ARPANET . Menlo Park, CA: Centro de información de la red.