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 falsificar / cambiar mi IP sin una VPN
- Cómo convertir una IP privada asignada por un ISP a una IP pública
- ¿Alguien puede espiar mi teléfono conociendo mi IP o mi Gmail?
- ¿Qué determina la fragmentación de IP?
- ¿La transición a IPv6 será invisible / transparente para la mayoría de las personas?
¿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.