Puerto (redes informáticas)

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 31 de marzo de 2022; las comprobaciones requieren 44 ediciones .

Port ( port en inglés  ) es un número entero no negativo escrito en las cabeceras de los protocolos de la capa de transporte del modelo de red OSI ( TCP , UDP , SCTP , DCCP ).

Descripción

Por lo general, en un host que ejecuta un sistema operativo de espacio de usuario , hay varios procesos en ejecución , cada uno de los cuales ejecuta un programa . Si varios programas utilizan una red informática , el sistema operativo recibe periódicamente a través de la red un paquete IP destinado a uno de los programas.

El proceso de un programa que quiere comunicarse a través de una red puede (por ejemplo, al crear un socket ):

Los datos se intercambian a través de la red entre dos procesos utilizando un protocolo específico . Para establecer una conexión, necesita:

El puerto del proceso emisor (fuente) puede ser fijo (estático) o asignado dinámicamente para cada nueva sesión de comunicación.

Al conectarse a través de TCP , se utiliza el puerto del proceso de envío:

Cuando se conecta a través del protocolo UDP , se permite especificar el número cero en lugar del puerto del proceso de envío, lo que significa que "no se especifica el puerto".

Al conectarse a través del protocolo SCTP dentro de la asociación, se puede utilizar lo siguiente:

Dado que la dirección IP del host de envío y el número de puerto del proceso de envío son análogos a la dirección de retorno escrita en los sobres de correo (permitiendo que el destinatario envíe una respuesta al remitente), el número de puerto del proceso de envío a veces se denomina como el puerto "inverso".

Si un proceso en un host usa constantemente el mismo número de puerto (por ejemplo, un proceso en un programa de servidor web podría usar el puerto 80 para enviar y recibir datos), se dice que el puerto está "abierto".

Los términos "puerto abierto" y "puerto cerrado" (bloqueado) también se utilizan cuando se trata de filtrado de tráfico de red .

Si un proceso ha recibido un número de puerto del sistema operativo (“abrió un puerto”) y lo “mantiene abierto” para recibir y transmitir datos, se dice que el proceso es un puerto de “escucha” ( coloquial listens , del inglés  listen ).

Usualmente, el proceso del programa que implementa el servidor para algún protocolo se dedica a escuchar en el puerto. El proceso de un programa que implementa un cliente para el mismo protocolo a menudo permite que el sistema operativo especifique el número de puerto para conectarse al servidor.

Si el host recibe el paquete, el puerto del proceso emisor se denomina puerto "remoto" ( eng.  remoto ) o "abierto en otro host ", y el puerto del proceso receptor se denomina puerto "local", es decir , abierto en el host actual. Si el host envió un paquete, el puerto del proceso de envío se denomina puerto "local" (abierto en el host actual ), y el puerto del proceso de recepción se denomina puerto "remoto" (abierto en otro host ).

Los números de puerto para los protocolos de capa de aplicación del modelo TCP/IP ( HTTP , SSH , etc.) suelen ser asignados por la organización IANA ( autoridad inglesa de  números asignados de Internet ) . Sin embargo, en la práctica, por razones de seguridad, los números de puerto pueden elegirse arbitrariamente.

El término "puerto" se usa con mayor frecuencia en relación con los protocolos TCP y UDP debido a la popularidad de estos protocolos. Los protocolos SCTP y DCCP utilizan números que corresponden al concepto de "número de puerto" de los protocolos TCP y UDP.

En los encabezados de los protocolos TCP y UDP , se asignan campos de 16 bits para almacenar números de puerto . Para el protocolo TCP , el número de puerto 0 está reservado y no se puede utilizar. Para UDP , especificar el puerto del proceso de envío (el puerto "inverso") es opcional, y el número de puerto 0 significa que no hay puerto. Por lo tanto, el número de puerto es un número en el rango de 1 a 2 16 -1=65535 .

Ejemplos de puertos

Correo electrónico (correo electrónico)

Los procesos de los programas que implementan los siguientes protocolos se ejecutan en el servidor :

El proceso de un programa que implementa el protocolo SMTP normalmente "escucha" en el puerto TCP número 25 (abreviatura: "tcp/25").

El proceso de un programa que implementa el protocolo POP generalmente "escucha" en el puerto TCP número 110 (abreviado: "tcp/110").

Los procesos se pueden ejecutar en el mismo host (computadora). La definición de un proceso específico se realiza mediante el número de puerto.

El proceso de un programa cliente que desea conectarse a un servidor para enviar (SMTP) o recibir (POP o IMAP) correo suele obtener un número de puerto de forma dinámica .

DHCP

En algunos casos, el uso de números de puerto conocidos es obligatorio.

Por ejemplo, para obtener una dirección IP a través de DHCP , un proceso cliente envía un datagrama a través de UDP desde el puerto 68 (el puerto del proceso de envío) al puerto 67 (el puerto del proceso de recepción).

Uso en URLs

Los números de puerto se pueden especificar en direcciones de sitios web ( URL ) u otros identificadores de recursos disponibles en redes informáticas ( URI ). De manera predeterminada, HTTP usa el puerto 80 y HTTPS usa el puerto  443. Una URL como http://www.example.com:8080/path/ indica que el recurso web está siendo atendido por un servidor web en el puerto 8080.

Estados del puerto

Puede averiguar la cantidad de puertos activos (emitidos a los procesos por el sistema operativo) para los protocolos de la capa de transporte en muchos sistemas operativos ( Windows , similar a Unix ) utilizando las utilidades netstaty nmap(en UNIX OS y Linux OS ).

Los estados de los puertos que muestran las utilidades netstaty nmapse muestran en la tabla.

Estado del puerto [1] Descripción
Opened or listening to ( inglés  open or listen ) El programa - el servidor está listo para aceptar conexiones de programas - clientes ("escucha" en el puerto)
Filtrado ( inglés  filtrado ) No se puede determinar si el puerto está abierto o cerrado, posiblemente debido a un firewall u otra razón
cerrado _  _ _ El sistema operativo aún no ha emitido un número de puerto para ningún proceso , pero puede hacerlo en cualquier momento.

Números de puerto

Los puertos TCP no se superponen con los puertos UDP: el puerto TCP 1234 no interferirá con la comunicación UDP a través del puerto 1234.

En la mayoría de los sistemas operativos tipo UNIX , escuchar en los puertos 0-1023 requiere privilegios especiales ( root ). El sistema operativo proporciona otros números de puerto a los primeros procesos que los solicitan.

Algunos programas populares de rastreo de tráfico (por ejemplo, Wireshark ) y firewalls de red utilizan designaciones de números de puerto generalmente aceptadas para determinar el protocolo de transferencia de datos , que no siempre es correcto. En algunos casos, los servicios de red usan números de puerto no estándar o usan números de puerto para fines distintos a los previstos. Por ejemplo, hay casos conocidos de ISP que lanzan servidores SMTP en los puertos 2525 (en lugar de 25) para garantizar la seguridad de sus usuarios. Los sitios especializados, como las interfaces web administrativas , a menudo operan en puertos distintos a los estándares 80 y 443.

Véase también

Notas

  1. nmap - Port Scanner Archivado el 23 de julio de 2015 en Wayback Machine // uCoz Publicado el 6 de mayo de 2011.