Qué son los números de puerto y los sockets
En la comunicación por internet, el destino de comunicación no queda completamente determinado solo por la dirección IP.
Una dirección IP es información usada para encontrar a una contraparte de comunicación en una red. Sin embargo, dentro de un servidor o dispositivo pueden estar activas al mismo tiempo varias comunicaciones, como web, DNS, correo, aplicaciones de chat y sincronización en la nube.
Por esa razón, aunque se conozca la dirección IP de destino, eso por sí solo no indica "qué servicio o aplicación debe recibir esta comunicación".
Los números de puerto se usan para esta distinción.
La dirección IP por sí sola no distingue aplicaciones
Una dirección IP es información que muestra la posición de la contraparte de comunicación en una red.
Por ejemplo, al acceder a un servidor web, la comunicación primero se dirige hacia la dirección IP de ese servidor. Sin embargo, del lado del servidor pueden estar ejecutándose al mismo tiempo no solo un servidor web, sino también DNS, correo, servicios de administración, servidores API y servicios similares.
En ese punto, la dirección IP por sí sola no puede decidir "qué servicio del servidor debe recibir la comunicación".
Por eso, en la capa de transporte, protocolos como TCP y UDP usan números de puerto para distinguir a dónde debe entregarse la comunicación.
Los números de puerto distinguen entradas de comunicación
Un número de puerto es un número usado en la comunicación TCP y UDP.
Los números de puerto suelen explicarse como "entradas de comunicación". Esto es correcto en sentido amplio. Sin embargo, con más precisión, un número de puerto es un identificador que el sistema operativo usa para distribuir la comunicación al proceso o servicio adecuado.
Por ejemplo, incluso para comunicación dirigida a la misma dirección IP, el puerto de destino 443 puede distinguirse como servidor web HTTPS, el 53 como servidor DNS y el 25 como servicio relacionado con entrega de correo.
| Uso | Número de puerto usado habitualmente | Protocolo principal | Descripción |
|---|---|---|---|
| HTTP | 80 | TCP | Se usa a menudo para comunicación web no cifrada |
| HTTPS | 443 | TCP / UDP | HTTPS ordinario usa TCP; HTTP/3 usa QUIC sobre UDP |
| DNS | 53 | UDP / TCP | UDP es común para consultas ordinarias, mientras que TCP también se usa para respuestas grandes y usos específicos |
| SMTP | 25 | TCP | Se usa principalmente para entrega entre servidores de correo |
| SMTP Submission | 587 | TCP | Se usa para enviar desde un cliente de correo a un servidor de envío |
| IMAPS | 993 | TCP | Se usa para recibir correo mediante IMAP protegido por TLS |
Existen números estándar que se usan habitualmente como números de puerto. Sin embargo, un número de puerto no garantiza de forma absoluta el tipo de servicio.
Por ejemplo, HTTPS se usa habitualmente en el puerto 443, pero según la configuración del servidor, otra aplicación también puede usar el puerto 443. A la inversa, un servidor web también puede ejecutarse en un número de puerto no estándar.
En otras palabras, los números de puerto son pistas fuertes para inferir el propósito de la comunicación, pero por sí solos no determinan por completo el contenido de la comunicación.
Por qué varios servicios pueden ejecutarse en un servidor
Como existen los números de puerto, varios servicios pueden ejecutarse al mismo tiempo en un servidor.
Por ejemplo, si un servidor con la misma dirección IP ofrece al mismo tiempo HTTPS, DNS y servicios de entrega de correo, cada servicio puede escuchar en un número de puerto distinto.
| Dirección IP de destino | Número de puerto de destino | Protocolo de comunicación | Ejemplo de destino de entrega |
|---|---|---|---|
| Misma dirección IP del servidor | 443 | TCP | Servidor web HTTPS |
| Misma dirección IP del servidor | 53 | UDP / TCP | Servidor DNS |
| Misma dirección IP del servidor | 25 | TCP | Servicio de entrega entre servidores de correo |
| Misma dirección IP del servidor | 587 | TCP | Servicio Submission para enviar correo |
De este modo, una dirección IP se usa para encontrar el host de la contraparte de comunicación, y un número de puerto se usa para distinguir qué servicio dentro de ese host recibe la comunicación.
Sin embargo, en la práctica no se decide por "dirección IP sola" o "número de puerto solo". El protocolo de comunicación, como TCP o UDP, también es importante.
Incluso con el mismo puerto 53, el puerto UDP 53 y el puerto TCP 53 se tratan como comunicaciones separadas.
Varias aplicaciones pueden comunicarse al mismo tiempo en un dispositivo
Los números de puerto no se usan solo del lado del servidor. También se usan en los PC y smartphones de las personas usuarias.
Por ejemplo, supón que en un PC hay un navegador abierto, una aplicación de chat en uso, almacenamiento en la nube sincronizándose y comprobaciones de actualización del sistema operativo en ejecución. En ese momento, dentro del dispositivo ocurren varias comunicaciones al mismo tiempo.
El sistema operativo necesita distinguir cada comunicación y entregar los datos devueltos a la aplicación correcta.
Esta distinción también usa la combinación de dirección IP de origen, número de puerto de origen, dirección IP de destino, número de puerto de destino y protocolo de comunicación.
La comunicación se distingue por cinco datos
Para entender la comunicación TCP y UDP, son importantes los siguientes cinco datos.
| Información | Significado | Ejemplo |
|---|---|---|
| Dirección IP de origen | Dirección IP del lado que envía la comunicación | Dirección IP del dispositivo de la persona usuaria |
| Número de puerto de origen | Número de puerto usado por el lado que inició la comunicación | Número asignado temporalmente del lado del dispositivo |
| Dirección IP de destino | Dirección IP del lado que recibe la comunicación | Dirección IP del servidor web |
| Número de puerto de destino | Número de puerto del servicio que recibe la comunicación | 443 para HTTPS, por ejemplo |
| Protocolo de comunicación | Tipo como TCP o UDP | TCP, UDP |
Esta combinación de cinco elementos se llama 5-tupla.
Por ejemplo, cuando un navegador se conecta a un servidor web HTTPS, el número de puerto de destino suele ser 443. Mientras tanto, el número de puerto de origen se asigna para cada comunicación en el dispositivo de la persona usuaria.
Gracias a que existe este número de puerto de origen, aunque el mismo dispositivo realice varias comunicaciones al mismo servidor web, cada una puede distinguirse.
Los puertos de destino y de origen tienen roles distintos
Al entender los números de puerto, es importante pensar por separado en números de puerto de destino y números de puerto de origen.
| Tipo | Rol principal | Ejemplo |
|---|---|---|
| Número de puerto de destino | Indica el servicio al que conectarse | 443 para HTTPS, 53 para DNS |
| Número de puerto de origen | Distingue a qué comunicación debe volver una respuesta | Número asignado temporalmente del lado del dispositivo |
Al acceder a un sitio web, el dispositivo de la persona usuaria suele enviar comunicación al puerto de destino 443. Sin embargo, para recibir la respuesta, el lado del dispositivo también necesita un número de puerto de origen.
Desde la perspectiva del servidor, el destino de la respuesta se vuelve "la dirección IP de la persona usuaria y el número de puerto usado del lado de la persona usuaria".
Este mecanismo permite que un dispositivo maneje varias comunicaciones al mismo tiempo.
Qué es un socket
Un socket es una forma de pensar en una entrada y salida para manejar comunicación de red.
En programación, un socket es un mecanismo que una aplicación pide al sistema operativo que cree para poder realizar comunicación de red. Sin embargo, en la etapa de entender la estructura de comunicación, es más fácil pensar en un socket como "un extremo de comunicación representado por una combinación de dirección IP, número de puerto y protocolo de comunicación".
Por ejemplo, del lado del servidor, un servidor web crea el estado de "escuchar en el puerto TCP 443". Esto significa que el servidor preparó un punto de escucha para recibir comunicación HTTPS.
Del lado del cliente, en cambio, una aplicación como un navegador recibe del sistema operativo un número de puerto de origen cuando inicia la comunicación.
| Posición | Cómo ver el socket | Ejemplo |
|---|---|---|
| Lado del servidor | Escucha en una dirección IP, número de puerto y protocolo específicos | Escucha HTTPS en el puerto TCP 443 |
| Lado del cliente | Gestiona conexiones usando un número de puerto de origen para cada comunicación | El navegador conecta desde un puerto de origen temporal |
| Comunicación completa | Identifica una comunicación por la combinación de origen y destino | IP de origen, puerto de origen, IP de destino, puerto de destino, protocolo |
En sentido estricto, la palabra socket cambia ligeramente de significado según el contexto.
Puede referirse a un socket usado por un servidor para esperar conexiones, o a un extremo de comunicación después de que una conexión real se ha establecido. Además, los sockets se manejan de forma distinta en comunicaciones que crean una conexión, como TCP, y comunicaciones que no crean una conexión, como UDP.
Como comprensión básica, sin embargo, basta con entenderlo como "una apertura de comunicación en el sistema operativo que las aplicaciones usan para manejar comunicación de red".
El significado de los números de puerto también cambia entre TCP y UDP
Los números de puerto se usan tanto en TCP como en UDP, pero la naturaleza de la comunicación es distinta.
TCP es un método que establece una conexión antes de enviar y recibir datos. Se usa en muchas comunicaciones, como HTTPS en la web, envío de correo y SSH.
UDP es un método que no asume establecimiento de conexión como TCP. Se usa para consultas DNS, QUIC, comunicación en tiempo real y fines similares.
| Elemento | TCP | UDP |
|---|---|---|
| Naturaleza de la comunicación | Se comunica después de establecer una conexión | No asume establecimiento de conexión |
| Rol del número de puerto | Se usa para identificar el servicio de destino y la comunicación | Se usa para distinguir a dónde deben entregarse los datos |
| Ejemplos representativos | HTTPS, SSH, SMTP, IMAPS | DNS, QUIC, parte de la comunicación en tiempo real |
Incluso con el mismo número de puerto, TCP y UDP se tratan como comunicaciones distintas.
Por ejemplo, el puerto TCP 443 y el puerto UDP 443 usan el mismo número "443", pero como el protocolo de comunicación es distinto, el sistema operativo y los equipos de red los tratan como cosas distintas.
Los números de puerto ayudan a inferir el propósito de la comunicación
Entender los números de puerto facilita leer logs de comunicación y comportamiento de red.
Por ejemplo, si el puerto de destino es 443, puede ser comunicación relacionada con la web, como HTTPS o HTTP/3. Si el puerto de destino es 53, puede ser una consulta DNS. Si el puerto de destino es 587, puede ser comunicación relacionada con envío de correo.
Sin embargo, el contenido de la comunicación no puede juzgarse por completo solo a partir de los números de puerto.
La comunicación cifrada hace que el contenido sea más difícil de ver. Los servicios también pueden ejecutarse en números de puerto no estándar. Además, puertos ampliamente permitidos, como el 443, también pueden transportar comunicación que no sea web.
Por lo tanto, un número de puerto es "material para inferir el propósito de la comunicación", no "información que prueba el contenido de la comunicación en sí".
Números de puerto para entender el anonimato
, , DNS, HTTPS y sistemas similares también funcionan en realidad mediante combinaciones de direcciones IP, números de puerto y protocolos de comunicación.
Por ejemplo, HTTPS suele usar el puerto 443. DNS suele usar el puerto 53. Las VPN usan números de puerto y protocolos distintos según el método. La visibilidad de la comunicación de Tor también cambia según el entorno de uso y el destino de conexión.
Al pensar en anonimato y privacidad, no solo importa el contenido de la comunicación, sino también la información visible en el exterior de la comunicación.
Aunque el contenido de la comunicación esté cifrado, según la posición de observación pueden ser visibles tipos de información como los siguientes.
| Información que puede ser visible | Significado | Precaución |
|---|---|---|
| Dirección IP de destino | A qué servidor se dirige la comunicación | Cuando hay una CDN o proxy en medio, puede no coincidir con el servicio final |
| Número de puerto de destino | Qué tipo de comunicación parece ser | El puerto 443 no significa necesariamente navegación web ordinaria |
| Protocolo de comunicación | Distinciones como TCP, UDP | Algunas comunicaciones web, como HTTP/3, usan UDP puerto 443 |
| Volumen de tráfico | Cuántos datos se envían y reciben | El volumen puede observarse aunque el contenido esté cifrado |
| Momento de comunicación | Cuándo ocurrió la comunicación | Puede servir para inferir patrones de comportamiento |
En otras palabras, los números de puerto no son un elemento que determine el anonimato en sí, pero son información importante para entender la estructura de comunicación.
Si puedes ordenar "qué aplicación se comunica con qué dirección IP, con qué protocolo y usando qué número de puerto", también se vuelve más fácil entender el comportamiento de VPN, Tor, DNS, HTTPS y sistemas similares.
Este artículo se limita a la estructura de comunicación
Entender números de puerto y sockets cambia bastante la forma de ver las redes. Sin embargo, este artículo no profundiza en los siguientes temas.
| Tema no tratado | Razón |
|---|---|
| Programación con sockets | Se vuelve un tema de implementación y se aleja de entender la estructura de comunicación |
| Detalles de puertos efímeros | Cubrir rangos de asignación y comportamientos específicos de cada sistema operativo ampliaría el alcance |
| Detalles de tablas NAT | Entraría en el procesamiento de traducción de routers y firewalls |
| Práctica de escaneo de puertos | Se vuelve una discusión concreta de métodos de ataque o diagnóstico y queda fuera del propósito de este artículo |
El punto importante aquí es que la comunicación no puede distinguirse suficientemente solo con la dirección IP, y que los destinos de entrega y de retorno se gestionan combinando números de puerto y protocolos.
Resumen
Una dirección IP es información usada para encontrar a una contraparte de comunicación en una red.
Sin embargo, varios servicios y aplicaciones se comunican al mismo tiempo en un dispositivo o servidor. Por eso, la dirección IP por sí sola no puede decidir a qué aplicación o servicio debe entregarse la comunicación.
Los números de puerto son números usados en la comunicación TCP y UDP, y el sistema operativo los usa para distribuir la comunicación al servicio o aplicación adecuados.
En comunicación web pueden usarse los puertos 80 y 443; en DNS, el puerto 53; y en comunicación relacionada con correo, puertos como 25, 587 y 993. Sin embargo, el contenido de la comunicación no puede determinarse por completo solo a partir de números de puerto.
La comunicación se identifica por la combinación de dirección IP de origen, número de puerto de origen, dirección IP de destino, número de puerto de destino y protocolo de comunicación. Entender esta combinación explica por qué varias aplicaciones pueden comunicarse al mismo tiempo en un dispositivo, y por qué varios servicios pueden ejecutarse en un servidor.
Un socket es una apertura de comunicación que las aplicaciones usan para manejar comunicación de red. Para entender la estructura de comunicación, es más fácil ordenarlo como un extremo de comunicación que combina dirección IP, número de puerto y protocolo de comunicación.
Entender números de puerto y sockets facilita leer hacia dónde va la comunicación, a qué servicio llega y como qué comunicación se gestiona. Esto también es una base importante para entender la estructura de comunicación de HTTPS, DNS, VPN, Tor y sistemas similares.
Herramientas relacionadas
WhatIsMyIP
Recurso externo relacionado con este artículo. Ábrelo solo si encaja con tu situación y tu modelo de amenaza.
Por qué aparece aquí: Puede ayudar con el tema del artículo, pero está fuera de Anonymity Sense y conviene revisarlo antes de usarlo.