Wie geht ein Online-Spiel weiter, nachdem der Host gegangen ist?


12

Hinweis: Dies ist eine Frage zum Netzwerk, nicht zum Spielen. Ich verwende StarCraft nur als Beispiel.

Das Spiel StarCraft (nicht StarCraft 2) unterstützt das Online-Spielen. Eine Person hostet und andere Personen schließen sich an. Wenn der Host während des Spiels verlässt, kann das Spiel ohne den Host auf unbestimmte Zeit fortgesetzt werden. Wie funktioniert das?

Stellen Sie sich das folgende Szenario vor:

  • Damit Benutzer Mitglied werden können, muss mein Router für die Portweiterleitung von 6112, TCP und UDP konfiguriert sein (siehe Blizzard-Support ).
  • Fünf Leute machen mit. Jeder (ich eingeschlossen) ist hinter einem Fräser. Ich starte das Spiel.
  • Drei Minuten nach Spielbeginn strömen ungefähr zwanzig Eiferer in meine Basis. Niemand hilft mir.
  • Meine Basis ist beseitigt, also gehe ich (das Spiel gibt dir keine Wahl).
  • Das Spiel wird ohne den Gastgeber fortgesetzt (die Heimmannschaft hat noch zwei Spieler).

Wie bleiben die verbleibenden fünf Clients (die keine 6112-Weiterleitung benötigten) verbunden?

Wenn ich das richtig verstehe: Wenn zwei Programme miteinander kommunizieren möchten, muss eines ein "Server" sein und auf Verbindungen an einem Port warten, während das andere ein "Client" sein muss und eine Verbindungsanforderung dazu initiieren muss Hafen. Sie können nicht einfach anfangen, Pakete aneinander zu senden (und ich weiß nicht einmal, wie sie es tun würden, wenn beide sich hinter Routern befinden).

Jemand, der ein Spiel hostet, ist ein Server, während diejenigen, die sich ihm anschließen, Clients sind. Es ist leicht zu erkennen, wie die Clients mit dem Server kommunizieren können. Was ich nicht bekomme ist: Wie beginnen die Clients miteinander zu kommunizieren, ohne den Server zu durchlaufen? Ermöglicht das Internetprotokoll einem Server, Verbindungen zwischen Clients herzustellen?

Es ist durchaus möglich, dass im Falle von StarCraft der Spielverkehr über Battle.net-Server läuft. StarCraft unterhält während des Spiels eine Verbindung zum Battle.net (für Nachrichten von Freunden usw.). Ich bezweifle jedoch, dass der Spieledatenverkehr es durchläuft. Wenn ja, warum müssen Hosts dann den Port 6112 weiterleiten?

Meine Frage ist: Kann ein Server, an den mehrere Clients angeschlossen sind, Verbindungen zwischen ihnen herstellen?


2
Ich mag die Starcraft-Referenz hier ...
Jon

I host a 3 versus 3. Note that, for people to be able to join, my router has to be configured to port forward 6112, TCP and UDP (see Blizzard Support).Anscheinend wird dies benötigt, um ein Spiel zu starten, damit Benutzer Sie finden können, aber nicht, um verbunden zu bleiben.
JeffO

@ Jeff O: Battle.net-Server verwalten eine Liste der verfügbaren Spiele. Wenn der Host jedoch keine Portweiterleitung durchführt, bleibt er einfach hängen, wenn andere versuchen, beizutreten (glaube ich).
Joey Adams

Antworten:


20

Das klingt nach UDP Hole Punching

Sei A und B die beiden Hosts, jeder in seinem eigenen privaten Netzwerk; N1 und N2 sind die beiden NAT-Geräte; S ist ein öffentlicher Server mit einer bekannten, weltweit erreichbaren IP-Adresse.

  1. A und B beginnen jeweils eine UDP-Konversation mit S; Die NAT-Geräte N1 und N2 erstellen UDP-Übersetzungszustände und weisen temporäre externe Portnummern zu
  2. S leitet diese Portnummern an A und B weiter
  3. A und B kontaktieren die NAT-Geräte der anderen direkt an den übersetzten Ports. Die NAT-Geräte verwenden die zuvor erstellten Übersetzungszustände und senden die Pakete an A und B

In diesem Beispiel sind Sie S. Ihre Gegner sind A und B. Wenn Sie aus dem Spiel geworfen werden, können Ihre Gegner weiterspielen, da sie bei der ersten Verbindung zu Ihnen eine Verbindung ausgehandelt haben.


Wow +1, ich hatte keine Ahnung, NAT könnte so verwendet werden
TheLQ

Das Problem mit NATs ist, dass Sie hinter der Firewall starten müssen. Daher muss mindestens der ursprüngliche Computer öffentlich verfügbar sein oder es muss keine Verbindung hergestellt werden.

2

Wenn zwei Programme miteinander kommunizieren möchten, muss eines kein Server und das andere kein Client sein. Das ist ein Modell der Vernetzung, aber nicht das einzige. Ein weiteres sehr verbreitetes Modell ist das Peer-to-Peer-Modell , bei dem jeder sowohl ein Client als auch ein Server ist und jeder mit jedem sprechen kann. Ich weiß nicht genau genug über die Starcraft Multiplayer-Netzwerk-Interna, aber ich vermute, dass es mit hoher Wahrscheinlichkeit das erreicht, was Sie mit einem Peer-to-Peer-Modell beschrieben haben.


P2P-Modelle erfordern im Allgemeinen weiterhin, dass Ports von mindestens einer Person in jedem Paar von Peers weitergeleitet werden, um die ursprüngliche Verbindung herzustellen. Versuchen Sie, einen Torrent mit und ohne weitergeleitete Ports herunterzuladen, und sehen Sie den Unterschied in der Anzahl der Verbindungen.
Snorbuckle
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.