新着記事
すべてみる
En las comunicaciones de red, TCP y UDP son dos protocolos de transporte diferentes que permiten pasar datos entre computadoras y dispositivos. ¿Pero es posible vincularlos al mismo puerto al mismo tiempo? Antes de responder esta pregunta, primero comprendamos TCP y UDP, y qué son los puertos de red.
Introducción a TCP y UDP
TCP (Protocolo de control de transmisión) y UDP (Protocolo de datagramas de usuario) son protocolos independientes que funcionan en la capa de red del modelo OSI. La mayor diferencia entre ellos es que TCP está orientado a la conexión, mientras que UDP está orientado a la conexión.
TCP se usa generalmente para la transmisión de datos que requiere alta confiabilidad porque transmite datos de manera secuencial y tiene funciones como mecanismo de retransmisión de pérdida de paquetes, control de congestión y control de flujo. Esto hace que TCP sea adecuado para aplicaciones que requieren confiabilidad de datos, como transferencias de archivos y navegación web.
Por el contrario, UDP es un servicio orientado sin conexión que no garantiza que los datos se entreguen en orden y no realiza retransmisiones. UDP se utiliza a menudo en aplicaciones urgentes, como videollamadas en tiempo real y juegos en línea, porque tiene una latencia más baja.
¿Qué es un puerto de red?
La función de un puerto de red es similar a la del número de una casa en la vida real. Permiten que diferentes aplicaciones se comuniquen a través de una red en la misma computadora. A cada puerto se le asigna un número para que los datos puedan entregarse a un puerto TCP o UDP específico cuando se envían de un dispositivo a otro.
¿Se pueden vincular los sockets TCP y UDP al mismo puerto?
Los puertos TCP y UDP son independientes entre sí y no interferirán entre sí. Los puertos TCP son interpretados por la pila TCP, mientras que los puertos UDP son interpretados por la pila UDP. Esto significa que los protocolos técnicamente de nivel superior pueden utilizar números de puerto TCP y UDP iguales o diferentes.
Una computadora puede comunicarse con dos servicios diferentes utilizando los mismos números de puerto TCP y UDP al mismo tiempo. Por ejemplo, TCP y UDP pueden utilizar el puerto 80 sin entrar en conflicto entre sí.
¿Se pueden vincular varios procesos de servicio TCP al mismo puerto al mismo tiempo?
Si dos procesos de servicio TCP están vinculados a la misma dirección IP y puerto al mismo tiempo, se producirá un error al ejecutar bind(), el error es "Dirección ya en uso".
Si los puertos vinculados a los dos procesos de servicio TCP son los mismos pero las direcciones IP son diferentes, no habrá ningún error al ejecutar bind().
¿Cómo solucionar el problema de "Dirección ya en uso" cuando se reinicia el servidor?
Cuando reiniciamos el proceso del servicio TCP, significa que la operación de cierre de la conexión se inicia a través del servidor, por lo que se agitará cuatro veces. Para el cierre activo, permanecerá en el estado TIME_WAIT por un período de tiempo, que es aproximadamente 2 MSL.
Cuando se reinicia el proceso del servicio TCP, aparecerá una conexión en el estado TIME_WAIT en el servidor. La IP + PUERTO utilizada en la conexión en el estado TIME_WAIT todavía se considera una combinación IP + PUERTO válida y no se puede usar en la misma máquina. en esta combinación IP+PUERTO.Enlace, cuando se ejecuta la función bind(), se devolverá un error de Dirección ya en uso.
Para resolver este problema, podemos configurar el atributo SO_REUSEADDR en el socket.
De esta manera, incluso si hay una conexión con el mismo estado TIME_WAIT que el enlace IP + PORT, aún se puede vincular con éxito normalmente, por lo que se puede reiniciar normalmente con éxito.
En resumen, no existe una correlación directa entre los puertos TCP y UDP; se pueden vincular al mismo puerto al mismo tiempo, siempre que estos puertos se utilicen para la comunicación TCP y UDP respectivamente. Esto permite transmitir diferentes tipos de flujos de datos en el mismo puerto, siempre que obedezcan las reglas de comunicación de TCP o UDP. Los puertos del cliente también se pueden reutilizar siempre que se conecten a diferentes servidores, porque la unicidad de la conexión se confirma mediante la cuádruple (dirección IP de origen, puerto de origen, dirección IP de destino, puerto de destino). Diferentes cuádruples Los grupos representan diferentes TCP conexiones. Se pueden vincular varios procesos de servicio TCP al mismo puerto, pero las direcciones IP vinculadas deben ser diferentes; de lo contrario, se producirá el error "Dirección ya en uso". Esto permite que múltiples procesos de servicio escuchen en el mismo puerto en diferentes direcciones IP para manejar múltiples solicitudes de servicio.
EBYTE se compromete a convertirse en un experto en aplicaciones de IoT. También contamos con varias patentes de invención en la industria de fabricación de chips. Si desea conocer más información actualizada y de actualidad, siga la plataforma oficial de EBYTE: http://www.es-ebyte.com
すべてみる