Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

159
Vistas
¿Por qué algunos sockets TCP en Node.js tardan mucho más en conectarse que la mayoría de los demás?

Creé una pequeña lib tcp-exists para verificar si existe un punto final tcp. Solo para iterar sobre una red para encontrar cualquier cosa en puertos especiales.

código de lib en github

Pero cuando estoy iterando, algunos de los sockets tcp (que se crean mediante lib tcp-exists ) tardan una gran cantidad de tiempo (1-3 segundos en lugar de 5-20 ms) para establecer conexiones en puntos finales 100% existentes.

 import tcpExists from 'tcp-exists' async function main () { for (let i = 1; i < 250; ++i) { let time = performance.now() const exists = await tcpExists('192.168.1.87', 80, 2000) time = performance.now() - time console.log(`time [${i}]:`, time) if (time > 500) console.log('=====STRANGE=====') if (!exists) console.log('exists') } } main()

No hay diferencia entre si estoy revisando el mismo puerto o diferentes puertos en una IP, o si estoy revisando IP diferentes. Algunas de esas conexiones tardarán 100 veces más en establecer una conexión. Puede conducir a una situación en la que existe un punto final, pero la función devolverá false debido a un pequeño tiempo de espera.

No puedo establecer un tiempo de espera superior a 25 ms para una comprobación. Porque si quiero escanear desde 192.168.0.0 a 192.168.255.255 (65536 puntos finales), donde la mayoría de IP no tiene punto final y debe devolverse false por tiempo de espera, y usar, por ejemplo, 1s como tiempo de espera, entonces tomará 65536 segundos o ~18 horas...

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El protocolo de enlace TCP significa que el cliente envía un SYN al servidor, el servidor confirma el SYN del cliente y devuelve su propio SYN (generalmente ambos dentro de un solo paquete, es decir, SYN+ACK) y luego los clientes reaccionan al servidor SYN con su ACK propio. La velocidad de los protocolos de enlace depende de la latencia de la red entre el cliente y el servidor y de la rapidez con la que el servidor reacciona a la solicitud de conexión (SYN). Cualquier paquete perdido en el camino debe retransmitirse después de un tiempo de espera, lo que aumenta aún más el tiempo para el protocolo de enlace TCP.

Todo esto está fuera del control del cliente, es decir, no hay forma de acelerarlo. Por lo tanto, los escáneres de alto rendimiento no prueban una conexión tras otra, sino que prueban muchas conexiones en paralelo.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda