Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

158
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!