¿Qué es un número de puerto?
"Puerto" de computadora es la traducción del inglés puerto, que puede considerarse como la salida de comunicación entre la computadora y el mundo exterior. Los puertos en el campo del hardware también se denominan interfaces, como puertos USB, puertos serie, etc. Los puertos en el campo del software generalmente se refieren a puertos de protocolo de comunicación en la red para servicios de conexión y servicios sin conexión. Es una estructura de software abstracta, que incluye algunas estructuras de datos y buffers de E/S (entrada y salida básica).
En tecnología de redes, puerto tiene varios significados. Los puertos de concentradores, conmutadores y enrutadores se refieren a las interfaces conectadas a otros dispositivos de red, como puertos RJ-45, puertos serie, etc. El puerto al que nos referimos aquí no se refiere al puerto en el sentido físico, sino que se refiere específicamente al puerto en el protocolo TCP/IP, que es el puerto en el sentido lógico.
Entonces, ¿a qué se refiere el puerto en el protocolo TCP/IP? Si se compara la dirección IP con una casa, el puerto es la puerta de entrada y salida de la casa. Una casa real sólo tiene unas pocas puertas, ¡pero una dirección IP puede tener hasta 65536 (es decir: 256×256) puertos! Los puertos están marcados por números de puerto, que son solo números enteros que van de 0 a 65535 (256×256).
En Internet, cada host envía y recibe paquetes de datos a través del protocolo TCP/IP. Cada paquete de datos se enruta en Internet en función de la dirección IP de su host de destino. Se puede ver que no hay ningún problema en transmitir con éxito el paquete de datos al host de destino. ¿Dónde radica el problema? Sabemos que la mayoría de los sistemas operativos admiten múltiples programas (procesos) ejecutándose al mismo tiempo, entonces, ¿a cuál de los muchos procesos que se ejecutan al mismo tiempo debería el host de destino transferir el paquete de datos recibido? Obviamente es necesario resolver este problema e introducir el mecanismo de puerto.
El sistema operativo local asignará puertos de protocolo (protocal ports, que a menudo llamamos puertos) a aquellos procesos que los requieran. Cada puerto de protocolo se identifica mediante un número entero positivo, como por ejemplo: 80, 139, 445. , etc. Cuando el host de destino recibe el paquete de datos, enviará los datos al puerto correspondiente según el número de puerto de destino en el encabezado del mensaje, y el proceso correspondiente a este puerto recibirá los datos y esperará la llegada del siguiente. conjunto de datos. En este punto, el concepto de puertos todavía parece abstracto, así que sígueme y no te alejes.
Los puertos son en realidad colas. El sistema operativo asigna diferentes colas a cada proceso. Los paquetes de datos son empujados a las colas correspondientes según el puerto de destino, esperando ser tomados por el proceso. También es posible que una cola se desborde, pero el sistema operativo permite que cada proceso especifique y ajuste el tamaño de su propia cola.
No solo el proceso que recibe el paquete de datos necesita abrir su propio puerto, sino que el proceso que envía el paquete de datos también necesita abrir el puerto. De esta forma, se identificará el puerto activo. el paquete de datos para que el destinatario pueda devolverlo exitosamente a este puerto.