Perforación de agujeros TCP


TCP NAT transversal y TCP perforado (a veces NAT perforado ) en redes de computadoras ocurren cuando dos hosts detrás de una traducción de direcciones de red (NAT) intentan conectarse entre sí con conexiones TCP salientes. Este escenario es particularmente importante en el caso de las comunicaciones entre pares , como voz sobre IP (VoIP), intercambio de archivos, teleconferencias, sistemas de chat y aplicaciones similares.

La perforación de agujeros de TCP es una técnica transversal de NAT utilizada experimentalmente para establecer una conexión TCP entre dos pares en Internet detrás de dispositivos NAT. NAT transversal es un término general para las técnicas que establecen y mantienen una red TCP / IP y / o conexiones TCP que atraviesan puertas de enlace NAT.

NAT transversal, a través de la perforación de TCP, establece conexiones TCP bidireccionales entre hosts de Internet en redes privadas que utilizan NAT. No funciona con todos los tipos de NAT, ya que su comportamiento no está estandarizado. Cuando dos hosts se conectan entre sí en TCP, ambos a través de conexiones salientes, se encuentran en el caso de "TCP abierto simultáneo" del diagrama de máquina de estado de TCP. [1]

La disponibilidad de la perforación de agujeros TCP depende del tipo de asignación de puerto de computadora utilizado por el NAT. Para que dos pares detrás de un NAT se conecten entre sí a través de TCP abierto simultáneamente [ aclarar ] , deben conocerse un poco el uno al otro. Una cosa que necesitan saber es la "ubicación" del otro par o del punto final remoto. El punto final remoto son los datos de la dirección IP y un puerto al que se conectará el par. Entonces, cuando dos pares, A y B, inician conexiones TCP mediante la vinculación a los puertos locales Pa y Pb, respectivamente, necesitan conocer el puerto del extremo remoto asignado por NAT para realizar la conexión. Cuando ambos pares están detrás de un NAT, cómo descubrir el punto final remoto público del otro par es un problema llamadoPredicción de puertos NAT . Todas las técnicas TCP NAT transversal y de perforación tienen que resolver el problema de predicción de puertos.

Dependiendo de si los NATs exhiben un comportamiento predecible o no predecible, será posible o no realizar la conexión TCP a través de un TCP simultáneo abierto, como se muestra a continuación por la matriz de conexión que representa los diferentes casos y su impacto de extremo a extremo. finalizar la comunicación: [ cita requerida ]

Si el par remoto tiene la información de una asignación, entonces puede adivinar el valor de las asignaciones posteriores. La conexión TCP ocurrirá en dos pasos, al principio los pares hacen una conexión con un tercero y aprenden su mapeo. Para el segundo paso, ambos pares pueden adivinar cuál será el mapeo de puertos NAT para todas las conexiones posteriores, lo que resuelve la predicción de puertos. Este método requiere realizar al menos dos conexiones consecutivas para cada par y requiere el uso de un tercero. Este método no funciona correctamente en el caso de NAT de nivel de operador con muchos suscriptores detrás de cada dirección IP, ya que solo hay un número limitado de puertos disponibles y la asignación de puertos consecutivos al mismo host interno puede ser impráctica o imposible.