2012-01-24 11 views
6

Solía ​​pensar que mi comprensión de los protocolos TCP y UDP, aunque limitada, es correcta. Aunque recientemente, cuando me di cuenta de que los compañeros que comparten un torrente común pueden conectarse entre sí a través de protocolos TCP o UDP sin la necesidad real de reenviar puertos, me confundí. ¿Cómo sabe un enrutador a qué máquina de la red local reenviar los paquetes? Cualquier ayuda para aclarar eso sería apreciada. Los diagramas y artículos del protocolo de torrent en Internet están muy simplificados y, por lo tanto, no contienen ninguna información que pueda ayudar.Conexión punto a punto de Torrent

+0

FYI: 90% de la mayoría de los enrutadores/cortafuegos bloquean UDP! –

+1

¿Y de dónde sacas esa estadística? Nunca tuve un problema con mis aplicaciones UDP (en casa en varios SOHO, en coffeeshops o en oficinas), ya sea tftp, juegos o algo personalizado. –

+0

La mayoría de los enrutadores bloquean UDP * broadcast * de forma predeterminada. –

Respuesta

6

El enrutador (que ejecuta NAT) rastrea todos los paquetes salientes y luego permite los paquetes entrantes que son respuestas a esos paquetes salientes.

Por lo tanto, si realiza una conexión TCP saliente a google.com:80, se volverán a permitir los paquetes (en respuesta) de google.com:80. Si dos hosts internos hacen una conexión al mismo puerto, puede diferenciarlos porque el puerto local es diferente, por ejemplo:

1) El host A establece una conexión con Google y el enrutador usa su propio puerto local 10001 para el TCP conexión

2) Host B hace una conexión similar y el router utiliza su propio 10002 puerto local para la conexión TCP

Si llega un paquete de google.com:80 y su dirigida para el 10001 en el puerto la IP WAN del enrutador luego el enrutador sabe enviarla al Anfitrión A. Si está direccionada para el puerto 10002, el enrutador sabe enviarlo al Anfitrión B.

Si tiene dos hosts punto a punto detrás de los enrutadores (dos NAT), entonces no hay forma de establecer la conexión, salvo que haya algo para transferir información sobre las direcciones IP de cada uno (es decir, un servidor que ambos pueden usar para intercambiar información) pueden intentar adivinar qué puerto elegirá el enrutador como un puerto local y luego comenzar a enviarse datos entre sí en ese puerto, a los enrutadores WAN IP. Debido a que ambos enrutadores ven que los datos salen OUT, entonces configuran una regla para permitir la entrada de datos. Si los puertos se adivinan correctamente, los paquetes de cada lado pueden pasar porque ambos enrutadores tienen una regla establecida. Esto se conoce como perforación de agujeros UDP/TCP.

http://en.wikipedia.org/wiki/UDP_hole_punching

I creen Skype es un ejemplo de una aplicación que utiliza UDP y hace la perforación de orificios.

+0

¡Gracias por una respuesta perspicaz! Creo que ahora entiendo suficientemente el tema para dejar que mi mente descanse ... por ahora. Por cierto, Skype es una bestia inteligente. Creo que podría detectar cuando estás en una conversación con una persona de tu red local (una vez podría hablar con mi hermana mientras el enrutador todavía se conectaba a Internet después de reiniciar) – Neob91

1

Hablando estrictamente, dado que no ha calificado su enrutador de términos con 'NAT', la respuesta es que el enrutador usa ARP para determinar la dirección MAC del host de destino y luego envía y encuadre ethernet con esa dirección MAC como la dirección objetivo

Pero creo que eso no era lo que querías decir.

¿Quiere decir cómo sabe un enrutador NATting a dónde reenviar los paquetes entrantes?

La respuesta es que el enrutador mantiene una lista de "conexiones" activas para permitirle hacer la traducción de direcciones. Utiliza el número de puerto externo para asignar a una dirección de host interna y número de puerto. En el caso de TCP, el concepto de "conexión" es simplemente si hay una conexión TCP (aunque generalmente con un tiempo de espera para detener la fuga). En el caso de UDP, es más difícil porque no hay una conexión UDP per se, por lo que generalmente es un caso de seguimiento por tiempo de espera solo.

Cuestiones relacionadas