¿Qué son exactamente los puertos TCP?

Por lo general, cuando las personas hablan de puertos TCP / IP, se refieren a qué servicio está esperando datos (escuchando) en ese puerto. Por ejemplo, el servicio HTTP escucha en el puerto TCP 80 y se usa para proporcionar páginas web, mientras que el servicio DNS escucha en el puerto UDP (o TCP) 53 y se usa para traducir nombres de dominio a direcciones IP. Tenga en cuenta que no existen los puertos IP: los protocolos que definen un puerto se ubican sobre IP, como TCP o UDP.

Ya que preguntaste “exactamente”, aquí hay más detalles. El encabezado del protocolo IP contiene la dirección de la máquina de destino y si TCP o UDP se utilizarán para indicar el puerto, pero no tiene suficiente información para indicarle al destino qué hacer con los datos. El encabezado del protocolo TCP o UDP indica cuál es el puerto de origen en la máquina emisora ​​y el puerto de destino en la máquina receptora. Cuando el sistema operativo de la máquina receptora obtiene los datos (“paquete”), mira el puerto de destino y encuentra el programa en la máquina de destino que ha indicado al sistema operativo que quiere los datos de cualquier paquete que tenga ese puerto de destino su encabezado TCP o UDP, notifica al programa que hay nuevos datos y permite que el programa acceda a los datos en el paquete.

La API de Socket es lo que la mayoría de los sistemas operativos proporcionan para que los programas accedan a la red. Con sockets, un programa proporciona el puerto para escuchar () al sistema operativo. Si se trata de una conexión TCP, hay llamadas adicionales a la API de Socket para crear y aceptar () una conexión definida por la dirección IP y el puerto de origen, y la dirección IP y el puerto de destino, y para enviar () y recibir () datos.

¿Cómo sabe alguien qué puerto proporciona qué servicio? Hay una lista de servicios y puertos bien conocidos en el archivo / etc / services en Linux o en el archivo de servicios en Windows, o más fácilmente, pregunte a Google (por ejemplo: “¿cuál es el puerto para el servicio DNS”)?

Si está creando su propio servicio, simplemente elija un puerto superior a 2048 y deje que las personas que utilizarán su puerto sepan de qué se trata, y / o proporcione una forma para que un administrador / la persona que inicia el programa que se conectará a su puerto indique qué puerto se debe usar.

El tráfico en red viaja a través de dispositivos de red que son externos a los hosts de punto final. El enrutamiento de este tráfico entre hosts es posible gracias al uso de direcciones IP. Una vez que un mensaje llega al host de destino, debe encontrar el camino hacia algún software de aplicación que pueda manejar el mensaje. El número de puerto es la parte de la dirección que permite que esto suceda. Es una parte componente de la dirección que solo es necesaria dentro de un único host, y es utilizada por el sistema operativo y / o el software de pila TCP / IP dentro de ese host.
Cuando hay una aplicación ‘escuchando’ en un puerto en particular, le ha dicho al sistema operativo que pase todos los mensajes dirigidos a ese puerto y host. El sistema operativo puede reenviar mensajes a muchas aplicaciones que se ejecutan simultáneamente en un host. Solo una aplicación podrá escuchar en cualquier puerto dado, de los cuales hay 2 ^ 16 en número.
Puede considerar los números de puerto como análogos a los números de departamentos u oficinas como parte de una dirección postal.

Los puertos TCP no son nada.

Si bien esto es una ligera exageración, es exacto porque son bastante imaginarios.

Una cosa que definitivamente no es un puerto TCP es un “puerto” físico electrónico, como los cables enchufables. Los puertos TCP no existen de esa manera, ni siquiera microscópicamente.

Los puertos son solo un sistema de numeración. Son pura logística, administrada por el software en su computadora. Son como tarjetas de mesa en una fiesta.

Cuando llegan los datos, podrían estar destinados a su navegador, su programa de chat, su programa para compartir archivos, etc. Entonces, cuando los datos llegan a su computadora, su sistema operativo (SO) dice: “¿Número, por favor?” El paquete de datos entrega su tarjeta de lugar que contiene su número de tabla (‘puerto’), y el sistema operativo dice: “Está bien, vaya allí a esa aplicación. ¡Siguiente!”

Eso es.

El puerto es un sistema de creencias en el contexto de las redes.
Asocia los contenidos de la capa superior a un tipo específico de servicio o proceso …

Es fácil de entender cuando se asocia con la dirección IP para crear lo que se llama un Socket a través de un proceso llamado “Enlace”.
Digamos que se están ejecutando un montón de pilas de software en su máquina y todas envían datos a través del cable Ethernet, este socket IP decide qué “software” está asociado con este paquete.

Este número de puerto se especifica como parte del paquete TCP (UDP).

Algunos de estos números de puerto son fijos … por ejemplo, HTTP es hasta 80, SMTP es hasta 25, etc.