PDA

Voir la version complète : Technique/Réseau : Comment fonctionne le réseau dans les parties hébergées ?



dalgwen
12/05/2010, 09h00
Salut,

Attention, si vous n'y connaissez rien en réseau ou que cela ne vous intéresse pas, vous allez vous ennuyez en suivant ma question :tired:
Deuxièmement, peut être que les modos voudront déplacer mon message, j'ai en effet eu du mal à choisir le forum adéquat. Désolé donc.

Je n'arrive pas à comprendre comment fonctionne les parties hébergées sur ma propre machine.
Mon PC est derrière la freebox en mode routeur, donc non joignable en direct depuis Internet. Si je veux qu'une machine extérieure me joigne, je dois configurer la freebox pour router certains ports vers ma machine.
Comment je peux héberger une partie dans ces conditions? (exemple : Borderlands, Lead And Gold, ou tout semble se faire de manière transparente et pour lequel je n'ai pas configuré de port). Comment les autres joueurs me joignent?

Supposons qu'ils ne me joignent pas parce qu'ils ne peuvent pas. Donc c'est moi qui dois les joindre (avec par exemple un serveur central intermédiaire au moins en début de partie pour échanger les requêtes de connexion et savoir quel client me sollicite). Je peux joindre l'extérieur facilement, donc au pire je pourrai me dire que je peux établir la connexion une connexion TCP vers les autres joueurs par moi-même et les informations de retour repasserai par la même connection. Mais cela impose le TCP, alors que l'UDP est semble-t-il bien plus pratique pour ce genre de trafic et est donc massivement utilisé. Et en plus dernier point important, cela requiert que le joueur en face ne soit pas lui même derrière un routeur mal configuré.

Donc dans la pire des situations (deux joueurs tous les deux derrière un routeur), comment les jeux arrivent à faire en sorte que je puisse héberger une partie?
Est ce que l'uPnP est en cause et massivement utilisé par les jeux récents (en ouvrant des ports sur mon modem routeur, à la demande des jeux eux mêmes)? Et si mon modem routeur n'est pas compatible uPnP ?
Et les consoles, pour lesquelles ces questions ne se posent jamais, comment font-elles pour héberger des parties (puisqu'elles le font de plus en plus souvent elles aussi)

Est ce qu'il y a un serveur central qui sert d'intermédiaire réseau (en TCP donc) et par qui le trafic transite, pour tous ces pauvres joueurs coincés derrière leur routeur? J'ai du mal à imaginer le coût d'une telle solution.

Dernière solution : Obiwan Kenobi?

Merci d'avance à ceux pouvant éclairer ma lanterne réseau.

Erokh
12/05/2010, 09h31
Pour les console, je sais qu'il faut ouvrir des ports pour le XBox Live. DOnc on en revient à un cas que tu as cité: les ports cités sont redirigés vers ta machine

Edell
13/05/2010, 16h08
Passez par Tunngle. :ninja:

dalgwen
14/05/2010, 11h20
Pour les console, je sais qu'il faut ouvrir des ports pour le XBox Live. DOnc on en revient à un cas que tu as cité: les ports cités sont redirigés vers ta machine

Merci pour l'info. Je croyais que ça se faisait sans aucune intervention utilisateur... Le mystère n'est pas complètement levé mais au moins je vois qu'il n'y a pas de solutions miracles.

olih
14/05/2010, 11h31
C'est le souci avec le NAT.
Le jour ou tout basculera en ipv6 et ou toute machine aura sa propre adresse IP publique, tu n'auras plus qu'à te préoccuper du firewall.

Freefrag
14/05/2010, 11h38
Quand tu dis propre adresse publique, c'est une fixe ou pas ? On peut la rendre fixe il me semble à l'heure actuelle. Ou ai-je mal compris ?

olih
14/05/2010, 12h03
Il faut comprendre comment marche un NAT.
En gros, tu as une IP (fixe ou non selon le FAI) à l'entrée de ton réseau local (ton modem). Le NAT sert à une seule chose : rediriger les connexions
vers les machines locales.


__CONN1 vers 8.9.10.11 + port1999
|_CONN2 vers 8.9.10.11 + port1888
|
|
\/
NAT(8.9.10.11)------->Ordi1(192.168.0.1+port1999)
\_______>Ordi2(192.168.0.2+port1888)



Pour ton problème, plaçons nous à la place du NAT (qui ne fait par défaut que de la translation d'adresse).

- Tu lances le serveur sur ta machine (tu héberges la partie). Son job est d'écouter les demandes de connexions qui lui sont envoyées et d'y répondre. Les demandes sont envoyées sur l'adresse publique (modem). Or si on ne configure pas le NAT, celui ci ne sait pas à qui faire parvenir les connexions dans le réseau local. Ici rentre en jeu Upnp (ou une configuration à la main), le serveur(upnp) ou le responsable du serveur(à la main) configure le NAT en lui disant "si tu reçois des demandes sur certains ports, envoies les moi".

Les joueurs n'ont pas de souci à se connecter chez toi car :
- Ils initient la communication avec le serveur donc la chaine est
Client -> NAT(client) ->IPSERVEUR_PUBLIQUE.
Dans ce sens la communication passe à travers le NAT(client). En effet, il connait précisement qui envoie (sur le réseau local) et qui reçoit (l'ip externe) et peux donc faire les translations d'adresse qui vont bien.


Pour l'histoire d'IPv6. Le nat à la base a été créé surtout pour palier au manque d'adresse IPV4. Grâce à celui ci, on peut "créer" un réseau entier derrière une seule adresse IP.
Pour IPv6, le nombre d'adresse possible est tellement important que cette surcouche est devenue non nécessaire.

NE pas oublier dans toute cette description, qu'un firewall se configure aussi (et firewall != NAT).

Freefrag
14/05/2010, 13h06
Merci ;).