Question

Comment une application est conçue de telle sorte que deux pairs peuvent communiquer directement les uns avec les autres (en supposant à la fois connaître les adresses IP de l'autre), mais sans les connexions sortantes? C'est, pas de ports seront ouverts. Bitorrent par exemple le fait, mais les jeux multi-joueurs (pour autant que je sache) exige la redirection de port.

Était-ce utile?

La solution

Je ne sais pas ce que vous entendez par No Connexions sortant, je vais prendre comme tout le monde que vous vouliez dire pas les connexions entrantes (ils sont derrière un NAT / FW / etc).

Le plus commun à ce jour est mentionné UPNP , qui dans ce contexte est un protocole qui vous permet un ordinateur de parler à la porte d'entrée et de dire me transmettre ce port parce que je veux quelqu'un à l'extérieur pour pouvoir me parler. UPNP est également conçu pour d'autres choses, mais c'est la chose commune pour le réseau domestique (En fait, il est l'une des nombreuses définitions).

Il y a aussi plus fréquents et des moyens un peu plus fiable si vous ne possédez pas le réseau. Le plus commun est appelé STUN mais si je me souviens bien, il y a quelques variantes. Fondamentalement, vous utilisez un serveur tiers qui permet les connexions entrantes pour essayer de coordonner un canal de communication. Au fond, ce que vous faites est d'envoyer un paquet UDP vous êtes la poste, ce qui ouvrira vous êtes NAT pour une réponse, mais est abandonné sur vous êtes la NAT par les pairs (car aucune règle de transfert existe encore). Grâce à la connexion à l'intermédiaire, ils sont alors dit de faire la même chose, qui ouvre désormais leur NAT, et correspond à la règle existante que vous êtes NAT. Maintenant, les communications peuvent continuer. Leur est une variante de ce qui permettra une connexion TCP / IP et en envoyant des messages SYN et SYN-ACK avec une certaine coordination.

Les articles de Wikipedia J'ai lié à des liens vers les années pertinentes de rfc pour ces protocoles précisément sur la façon dont ils fonctionnent. Essentiellement, il se résume à, il n'y a pas une réponse facile, car cela est un réseau très centré sur problème.

Autres conseils

Vous avez besoin d'un « point de rencontre » dans le réseau quelque part: les participants « rencontrer » à une « passerelle » de quelque sorte et ladite « fonction de passerelle » prend en charge la transmission

.

Au moins c'est une façon de le faire: Je ne vais pas essayer de commenter les détails de Bittorrent ... Je suis sûr que vous pouvez google pour les liens

.

UPNP traité ce surtout dans les dernières années, mais la nécessité d'ouvrir des ports est parce que l'application a été codé pour écouter sur un port spécifique pour une réponse.

Ports sous 1024 sont appelés « enregistrés » parce qu'ils ont été assignés un numéro de port parce qu'une entreprise a payé pour cela. Cela ne signifie pas que vous ne pouvez utiliser le port 53 pour un serveur web ou SSH, juste que la plupart assumeront quand ils le voient qu'ils ont affaire avec le DNS. Les ports ci-dessus 1024 ne sont pas enregistrés, donc il n'y a pas d'association - votre navigateur web, que ce soit Internet Explorer / Firefox / etc, utilise un port non enregistré pour envoyer la demande au serveur web StackOverflow (s) sur le port 80. Vous pouvez utiliser:

netstat -a

.. sur les hôtes Windows pour voir quelles connexions réseau sont actuellement mis en place, y compris le port concerné.

UPNP peut être utilisé pour négocier avec le routeur pour ouvrir et rediriger un port à votre application. Même bit-torrent a besoin d'au moins un des pairs d'avoir un port ouvert pour permettre des connexions p2p. Il n'y a pas besoin pour les pairs d'avoir un port ouvert cependant, car ils ont tous deux communiquent avec le même serveur (tracker) qui leur permet de négocier et déterminer qui a un port ouvert.

Une alternative est un écho serveur / serveur de relais quelque part sur Internet que la confiance des deux pairs, et ont ce relais tout le trafic. Le « problème » avec cette solution est que l'écho-serveur a besoin d'avoir beaucoup de bande passante pour accueillir tous les pairs connectés car il relaie tout le trafic plutôt que d'établir des connexions p2p.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top