Pregunta

¿Cómo puede una aplicación estar diseñado de tal manera que dos compañeros pueden comunicarse directamente entre sí (suponiendo que ambos sabemos IPs de cada uno), pero sin conexiones salientes? Eso es, se abrirán sin puertos. Bitorrent por ejemplo, lo hace, pero los juegos multijugador (hasta donde yo sé) requiere el reenvío de puertos.

¿Fue útil?

Solución

No estoy seguro de lo que entendemos por Conexiones salientes no, voy a asumir como todos los demás que quería decir no hay conexiones entrantes (que están detrás de un NAT / FW / etc).

El más común mencionado hasta ahora es UPNP , que en este contexto es un protocolo que permite que una computadora para comunicarse con la pasarela y decir que me transmita este puerto porque quiero que alguien en el exterior para poder hablar conmigo. UPnP está diseñado también para otras cosas, pero esto es lo más común para redes domésticas (en realidad es una de las muchas definiciones).

También son más comunes y ligeramente más fiable maneras si no posee la red. El más común se llama STUN pero si no recuerdo mal, hay algunas variantes. Básicamente se utiliza un servidor de terceros que permite conexiones entrantes para tratar de coordinar un canal de comunicación. Básicamente, lo que hace es enviar un paquete UDP a compañeros que eres, lo que abrirá estás NAT para una respuesta, pero se cae en la NAT es usted es igual (ya que no existe regla de reenvío aún). A través de la conexión con el intermediario, se les dijo entonces a hacer lo mismo, que ahora abre su NAT, y coincide con la regla existente en estás NAT. Ahora las comunicaciones pueden proceder. Su es una variante de esta que permitirá una conexión TCP / IP, así mediante el envío de mensajes SYN y SYN-ACK con algún tipo de coordinación.

Los artículos de Wikipedia que he vinculado a tiene enlaces a la correspondiente del RFC para estos protocolos sobre precisamente cómo funcionan. En esencia se trata de, no hay una respuesta fácil, ya que esto es una red centrada en el problema muy.

Otros consejos

Es necesario un "punto de encuentro" en algún lugar de la red: los participantes "se encuentran" en una "puerta de entrada" de algún tipo y dicha "función de pasarela" se encarga de la expedición

.

Al menos esa es una forma de hacerlo: no voy a tratar de hacer comentarios sobre los detalles de Bittorrent ... Estoy seguro de que puede google para los enlaces

.

UPnP se ocupó de este sobre todo en los últimos años, pero la necesidad de abrir los puertos se debe a que la aplicación ha sido codificado para escuchar en un puerto específico para una respuesta.

Puertos por debajo de 1024 se llaman "registrado" porque se les ha asignado un número de puerto porque una empresa paga por ello. Esto no quiere decir que no podía usar el puerto 53 para un servidor web o SSH, al igual que la mayor parte asumirá cuando lo ven que están tratando con el DNS. Puertos por encima de 1024 no están registradas, así que no hay asociación - su navegador web, ya sea Internet Explorer / Firefox / etc, está utilizando un puerto no registrado para enviar la solicitud al servidor web (s) Stackoverflow en el puerto 80. Puede utilizar:

netstat -a

.. en hosts de Windows para ver qué conexiones de red se estableció en la actualidad, incluyendo el puerto en cuestión.

UPnP puede ser utilizado para negociar con el router para abrir y reenviar un puerto para su aplicación. Incluso bits torrente necesita al menos uno de los pares de tener un puerto abierto para permitir conexiones P2P. No hay ninguna necesidad de que ambos compañeros tengan un puerto abierto, sin embargo, ya que ambos se comunican con el mismo servidor (tracker) que les permite negociar y determinar quién tiene un puerto abierto.

Una alternativa es un / relé de servidor de eco-servidor en algún lugar en internet que ambos compañeros de confianza, y tienen que retransmitir todo el tráfico. El "problema" con esta solución es que el eco-servidor tiene que tener una gran cantidad de ancho de banda para dar cabida a todos los pares conectados, ya que transmite todo el tráfico en lugar de establecer conexiones P2P.

Salida EchoWare: http://www.echogent.com/tech.htm

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top