• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

Wie funktioniert das Bnet?

Mitglied seit
08.07.2000
Beiträge
707
Reaktionen
0
Das soll jetzt keine Verarschung sein und eigentlich gehört es schon fast in den Router thread, doch dort würde es nur untergehen und um die manigfaltigen Probleme zu lösen muss man wohl erst einmal die Funktionsweise kennen.

Ausgangssituation:
Router mit 2 PC's, nennen wir sie einmal PCr1 und PCr2.
Der Router wählt sich bei dem Provider ein und erhält dynamisch seine IP z.B. 111.11.11.11.
PCr1 und PCr2 haben unterschiedliche IP's und BW wurde in der Reg. durch ein DWORD der Port geändert.
Des weiteren ist im Router ein Portforwarding für die entsprechenden IP:Ports eingestellt.

PCr1: 192.168.0.20:6120 mit DWORD=6120
PCr2: 192.168.0.30:6130 mit DWORD=6130

Nach außen hin:
111.11.11.11:6120 UDP
111.11.11.11:6130 UDP
111.11.11.11:6112 TCP/IP

Wie ich gerade gelesen habe, wird durch den Eintrag nur die UDP Verbindung, die für den Datenaustausch zuständig ist, über den eingestellten Port weitergeleitet. Die Verbindung zum Bnet läuft auch weiterhin über TCP 6112.

Nach außen hin besitzen jedoch beide PCr´s die gleiche IP jedoch unterschiedliche Ports. Im Spiel laufen die Daten nicht über den Bnet Server, sondern werden direkt ausgetauscht: UDP

PCr1 schickt seine Daten über den Port 6120 an ALLE anderen Spieler.
PCr2 schickt seine Daten über den Port 6130 an ALLE anderen Spieler.
Andere PC’s ERHALTEN die Daten über den gleichen Port (standard: 6112)

Nun kommen die Daten von PCr1 und PCr2, die ja die selbe IP haben jedoch unterschiedliche Absender Ports.
Die Datenpakete von unseren beiden PCr’s kommen an den gleichen Port an und es kommt zu einem Datenverlust durch Kollision.

Ist das so Korrekt?
 

cart

Technik/Software Forum
Mitglied seit
01.08.2002
Beiträge
4.873
Reaktionen
0
Ort
New York
wenn ich jetzt richtig verstanden habe, was du meinst, wäre zu zweit spielen über eine ip ja unmöglich. da es aber geht, muss es anders sein.
 

The_Company

Guest
In jedem Paket TCP oder UDP Paket stehen sowohl Empfänger- als auch Absender Port und Adresse drin.
Also kannst Du sehr wohl unterscheiden, ob das Paket den Absender 111.11.11.11:6120 oder 111.11.11.11:6130 hat.

Ich frag mich nur gerade, wie das bnet bzw der Router die beiden TCP Ports unterscheidet.
 
Mitglied seit
09.07.2002
Beiträge
402
Reaktionen
0
wie meinst du unterscheiden? die ports sind ja schon unterschieden, in dem sie einfach verschieden sind.

wenn du meinst wie das bnet bzw. der router weiss welcher port zu welchem comp gehört.... das steht ja im router drinnen.
 

The_Company

Guest
Ich meine: Router bekommt Daten von Server an Client mit Adresse 111.11.11.11:6112 TCP/IP.

Welcher Client kriegt das Paket?
 
Mitglied seit
08.07.2000
Beiträge
707
Reaktionen
0
Original geschrieben von The_Company
Ich meine: Router bekommt Daten von Server an Client mit Adresse 111.11.11.11:6112 TCP/IP.

Welcher Client kriegt das Paket?

Jup, das ist glaube ich das Problem ....
 

[For]Hood2

Guest
ich erklärs heute abend, ist ganz einfach, sitze gerade beim Kunden und kann keinen längeren Text schreiben
 
Mitglied seit
09.07.2002
Beiträge
402
Reaktionen
0
ich denke das zauberwort heißt Network Address Translation, kurz nat...

oder doch nicht?
 

[For]Hood2

Guest
Natürlich ist Nat da im Spiel. Die Frage ist aber wie der Router weiss welches Datenpacket zu welchem PC gehört...
Einfach, er merkt sich sich das in einer Tabelle. Da immer der Datentransfer am Client startet, weiss der Router das PCr1 eine anfrage an einen Server gemacht hat. Das vermerkt er in einer Tabelle und wenn die Antwort kommt, schaut er in seine Tabelle und routet die Daten dementsprechend weiter. Das ist vereinfacht NAT.

Das funktioniert gut, solange die Ports unterschiedlich sind.

Warum funzt das nicht mit den meisten Routern.?
Nunja am beispiel Battlenet: Jemand eröffnet ein Spiel und gibt seine IP Adresse preis (wir sehen den Game namen) und doppelklicken. Das BatttleNet leitet die IP adresse an uns weiter (TCP Port6112) und unsere PC versuchen sich dann über UDP (port6112 oder ein anderer mit Game Data Word) mit den "Gameserver" zu verbinden. Dabei teilen sie dem Gameserver ihre IPadresse und ihren benutzten Port mit. Der schickt nun seine Datenpakete an die ihm mitgeteilte IP adresse und den jeweiligen Port. Daher kann es keine Kollisionen geben! Der Router schaut in seine Tabelle und leitet es weiter.

Das Problem: NAT ist nicht gleich NAT. Eigentlich schon, ABER die Umsetzung...
Normalerweise müsste jeder NAT fähige Router, der portforwading kann, auch in der Lage sein 2 Gamer in ein und das selbe Game lagfrei zu bekommen. Dies ist aber nicht der Fall. Woran das genau liegt kann ich nicht sagen, NAT ist nicht so mein Fachgebiet, kenn die Grundlagen und keine Zeit mich näher damit zu beschäftigen:(
Ein zweiter wichtiger Grund ist die Handhabung des TCP/IP Protokols von Blizzard. Hier wird die Problematik liegen, warum man nicht joinen kann/es lagt gibt, wenn man einem Spiel joint/joinen will, welches der andere hinter dem Router hostet. Irgendwo hat Blizzard da Bockmist gemacht. Denn bei Warcraft3 gehts ja. Beantworten könnte dies evt. Dari

Meines Wissens ist nur Sygate in der Lage all dies zu handhaben, solange es auf auf einen extra server läuft.
 

The_Company

Guest
Connecten nicht beide Clients von Port 6112 auf europe.battle.net:6112?
Dann ist aber doch nach dem NAT die Adresse incl. Ports völlig identisch, oder nicht?

Es sei denn, der Router macht es wie Linux und nimmt beim 2. Rechner für TCP nen anderen Port, weil 6112 schon vom ersten belegt ist.

btw klappt es ganz einfach, wenn man im Router den Port überschreiben kann. Das kann aber afaik auch nur Linux.
 
Mitglied seit
08.07.2000
Beiträge
707
Reaktionen
0
Zur Info: das TCP/IP Protokoll wird nur die Verbindung genutzt. Der Datentransfer kommt per UDP.


Das UDP (User Datagram Protocol) ermöglicht es zwei Computern, miteinander zu kommunizieren. Beide senden Informationen bröckchenweise in so genannten Paketen. Ein UDP-Paket wird geschnürt, um schnell zwischen Computern hin und her bewegt werden zu können. Allerdings erreicht ein solches Paket sein Ziel möglicherweise überhaupt nicht. Dieser Nachteil ist ideal für Spiele. Das nächste Paket enthält genug Informationen, so dass das Spiel ermitteln kann, was die fehlenden Daten bedeuteten.
Das TCP (Transmission Control Protocol) ist eine weitere Möglichkeit für zwei Computer, miteinander zu kommunizieren. Auch hier werden die Informationen in kleine Happen aufgeteilt, die ebenfalls "Pakete" genannt werden. TCP übernimmt UDP-Pakete, fügt jede Menge Fehlerprüfungen und Übertragungsinformationen hinzu, um sicherzustellen, dass die Informationen komplett ihr Ziel erreichen. Natürlich verlangsamt das den Ablauf. Spiele greifen normalerweise nur für die Verbindungsaufnahme auf TCP zurück, weil es verlässlich ist ... für die Datenübertragung wird es nicht verwendet, weil es langsam ist
Blizzard

Hmmmm... wo drückt der Schuh?

Also je mehr ich darüber nachdenke/lese um so mehr verwirrt mich die ganze Sache.
 
Mitglied seit
08.07.2000
Beiträge
707
Reaktionen
0
Warcraft III is the only Blizzard Title that currently supports multiple players hosting games behind NAT.
Diablo, Warcraft II Battle.net Edition, and StarCraft:
Allow port 6112 TCP out and allow established sessions in
Allow port 6112 UDP out and in

Warcraft III:
Allow port 6112 TCP out and allow established sessions in
Allow port 6112 TCP in (hosting custom games)
Allow port 6113-6119 TCP out and in (hosting custom games if you’ve changed the default port in the Options/Gameplay screen)
Also kann es gar nicht gehen... :( aber es klappt(e) doch bei einigen... *wunder*
Battle.net
 
Mitglied seit
09.07.2002
Beiträge
402
Reaktionen
0
Original geschrieben von [For]Hood
Meines Wissens ist nur Sygate in der Lage all dies zu handhaben, solange es auf auf einen extra server läuft.

aus eigener erfahrung weiss ich, dass es mit avirt soho auch geht. sogar ohne 3. pc dann, den sygate ja braucht.
also 2on2s gamen bzw. sogar hosten.
 
Mitglied seit
08.07.2000
Beiträge
707
Reaktionen
0
Ich hatte zu ISDN Zeiten einmal sygate und auch avirt soho laufen und konnte damals games hosten und auch zu dritt mit anderen dann in dem game spielen.

Als ich es später einmal getestet hatte (DSL) klappte es nur bedingt.

Ich werde aber die Tage einmal eine kleine Testreihe durchführen, da es die beiden Progs ja noch als 30 Tage Testversion gibt, oder?
 
Mitglied seit
09.07.2002
Beiträge
402
Reaktionen
0
ja, gibt es als 30 tage testversion. ich hatte es mit meinem freund probiert, also das soho. der hat adsl und es ging einwandfrei.
 

[For]Hood2

Guest
comp: Dem Battle.net ist es egal wieviele Clients die selbe IP haben, da es nur ein Chatserver ist, der "zufällig" auch noch Games vermittelt. Das Battle.net wird über TCP gehändelt, Das Game läuft dann über UDP, wo dann erst die verschiedenen Ports gebraucht werden.

Mordor: wie ich schon sagte: ... die Handhabung des TCP/IP Protokols von Blizzard. Hier wird die Problematik liegen, warum man nicht joinen kann/es lagt gibt, wenn man einem Spiel joint/joinen will, welches der andere hinter dem Router hostet. Irgendwo hat Blizzard da Bockmist gemacht

Beta: Es geht halt alles nicht mit Avirt. der server kann hosten, dann läuft alles. hostet der Client, kann der Server meist nicht lagfrei ins game, wenn er überhaupt ins Game kann.
Bei Sygate gibt es eine Sache die heisst UDP Sharing, daher geht alles. Man braucht bei Sygate auch keine Ports verändern(darf man auch nicht sonst gehts nämlich nicht.) Problem: SC/BW wird fest vom Programm unterstützt. daher kann man in der config, keine Regeln nachlesen:(
 
Mitglied seit
09.07.2002
Beiträge
402
Reaktionen
0
ich bin mir aber sicher dass ich 2on2s spielte wo der avirt client gehostet hat! ehrlich...
 
Mitglied seit
08.07.2000
Beiträge
707
Reaktionen
0
Habt ihr den Server so angeschlossen?

com_singlenic.gif


Wenn es so klappen sollte, könnte ich meinen Labtop dafür nutzen :D
 
Mitglied seit
09.07.2002
Beiträge
402
Reaktionen
0
sry ich rede von avirt soho. 2 comps. einer server (mit der inet verb.) ein client, der games erstellen konnte, in die sich dann der server und 2 andere (2on2 gegner) einklinken konnten!
 
Mitglied seit
20.09.2001
Beiträge
1.355
Reaktionen
0
Original geschrieben von [For]Hood


Ein zweiter wichtiger Grund ist die Handhabung des TCP/IP Protokols von Blizzard. Hier wird die Problematik liegen, warum man nicht joinen kann/es lagt gibt, wenn man einem Spiel joint/joinen will, welches der andere hinter dem Router hostet. Irgendwo hat Blizzard da Bockmist gemacht. Denn bei Warcraft3 gehts ja. Beantworten könnte dies evt. Dari

Das Problem ist eigentlich nur UDP nicht TCP, in warcraft besteht in custom games das gleiche problem, SOLO, AT, RT und FFA games haben sie geschickt gelöst. Das game läuft dort über TCP statt UDP, hinzu kommt noch das es eine Art Routing Server gibt von Blizzard gehostet. 4 Spieler mit Router wollen AT gamen, werden vermittelt zu einem 2on2 bekommen die IP des routing servers schicken ihre pakete an den routing server, dieser checkt die pakete ob sie valide sind und leitet sie an alle clients weiter. Das ist auch der Grund warum Warforge unspielbar ist, da sie im Gegensatz zu mir scheinbar nicht den Routing Server emuliert kriegen laufen ladder games clientseitig ab wie auch in bw -> router als host unmöglich und erhöhter lag.

Wie das Routing bei sygate funzt weiß ich nich das man dort nix konfigurieren muss etc, ich weiß nur wenn man feste ports zu weist kann man mit ner festen rule natürlich immer wissen für wen das UDP paket eigentlich ist. Eigentlich sollte es mit fast jeder ordentlichen hardware/softwarelösung theoretisch sowie praktisch möglich sein. Aber kA wieso einige router es trotzdem nicht können.
 
Mitglied seit
09.07.2002
Beiträge
402
Reaktionen
0
Original geschrieben von [For]Mordor
Und das klappte lag-frei?

ja bin mir 100%ig sicher. es könnte ja auch sein, dass es bei mir so war, dass nur der client im stande war 2on2s zu hosten und dafür der server nicht.

ich bin mir so sicher, weil ich weiß, dass mein comp der soho server war (auf diesem comp war die inet-verbindung und soho halt als server installiert...). und mein freund neben mir war dann logischerweise der client und er hat immer schon die 2on2 games aufgemacht, während ich ein gegner team suchte.
 

[For]Hood2

Guest
Darum schrieb ich TCP/IP Protokol, was ja allge. als Sammelbegriff benutzt wird, darunter fallen TCP und UDP und FTP... Mir war nicht klar warum es bei WarIII geht, aber nun wird mir alles klarer!
Darum können sie auch die Games überwachen, das alles über den Server läuft.

Aber by the way na machen wir über ICQ *g*
 

The_Company

Guest
Hey, hey, FTP ist ein Application Level Protocol und läuft über TCP. Das hat mit TCP oder UDP an sich nix zu tun. Eher mit SMTP, HTTP o.ä.
 

[For]Hood2

Guest
-was ja allge. als Sammelbegriff benutzt wird-

Wenn du das nicht verstehst, nerv mich nicht
 

The_Company

Guest
Die TCP/IP Protokolle (und ja, der Sammelbegriff) haben mit FTP soviel zu tun wie der Sammelbegriff Mensch mit Fliegendreck.
 
Mitglied seit
08.07.2000
Beiträge
707
Reaktionen
0
Es ist doch scheißegal was nun FTP ist!

In diesem thread wird über die Funktionsweise des Bnet gesprochen und was verdammt noch mal die Vorraussetzung für ein reibungsloses game hosten und dieses lagfrei joinen ist!

Also lasst eure kindischen Spielchen mit 'hach ich weiß was besser' und 'oh du hast recht aber ich gebe es nicht zu'! Das kann einem ja wirklich auf den Nerv gehen!

So, und nun wieder zurück zum Thema. Eigentlich müsste es doch funktionieren wenn man UDP routen bzw maskieren kann, oder?

Elsa Lancom DSL:
(NAT/PAT)
IP-Adreß- und -Port-Umsetzung über eine IP-Adresse; statische/dynamische Zuweisung der IPAdresse;
Maskierung von TCP, UDP, ICMP, FTP; DNS-Forwarding; inverses Masquerading für IPDienste
aus dem Intranet wie z.B. Web-Server
aber es löbt nicht...
 

The_Company

Guest
Wenn Du folgendes tun kannst, dann läuft es:
IP_KLIENT_ZWEI:6112 als IP_INTERNET:6113 maskieren, und zwar für outgoing und incoming TCP und UDP.
Dann lässte IP_KLIENT_EINS:6112 als IP_INTERNET:6112 maskieren (auch TCP und UDP) und dann läufts.
Voraussetzung dabei ist, dass der Router rafft, dass Pakete von IP_KLIENT_EINS:6112 an IP_INTERNET:6113 nicht an ihn selber sind, sondern and Klient 2.

So mach ich das nämlich in Linux auch und da funktioniert es.


Allerdings weiss ich nicht, ob die Dinger Port Masquerading können.
 

[For]Hood2

Guest
Ich bin es leid mit dem Besserwisser und den Rechthabereien. /ignore
 
Mitglied seit
08.07.2000
Beiträge
707
Reaktionen
0
@Company: du kennst dich doch sehr gut mit Linux aus und sagst das es möglich sei einen Router aufzusetzen, der es ermöglicht ein BW game zu hosten und zu joinen .. das besagte Problem halt.

Wäre es möglich basierend auf diesem *Knopix* und von dir beschriebenen Erweiterungen/Einstellungen einen Linux Router aufzusetzen?

Oder was benötigt der versierte Linux DAU für einen solchen Router ...
 
Mitglied seit
08.07.2000
Beiträge
707
Reaktionen
0
Original geschrieben von The_Company
So mach ich das nämlich in Linux auch und da funktioniert es.

Kannst du nicht eine Distribution für den versierten Windows User machen?

Oder wie in meiner obigen Frrage: basierend auf dieser Knopix CD Version einen entsprechenden Router?
 

The_Company

Guest
Ha, das Post von Dir hab ich übersehen.

Ja, es sollte kein Problem sein aufm Knoppix Rechner sowas zum laufen zu kriegen. Du brauchst nurn kleines Script, dass Du nachm hochfahren immer laufen lässt - denke ich.
Müsste man mal testen.

Ich kann mein Script mal anhängen und dann kannste es ja mal testen.
 

Force8

Guest
Es liegt nicht am NAT und auch nicht am Port Forwarding.

Es ist ein Feature, das "Lokales Routing" heisst, und von ELSA/ Lancom Systems Routern beherscht wird (Erweiterte Optionen, TCP/IP, Lokales Routing).

Bei deiner Analyse musst du in Betracht ziehen das ja beispielsweise Windows XP ICS einwandfei funktioniert solange die lokalen Clients nicht im selben spiel sind.

Irwitziger weise ist das Problem also nicht die Verbindung zum Battle.NET, sondern die 3 meter zum anderen PC in der Wohnung...

Lokales Routing erzwingt das die pakete erst einmal durchs LAN geschickt werden bevor sie raus gehen ins Battle.NET, zumindest hab ich die ELSA Typen damals so verstanden. Normalerweise ist lokales Routing also unsinn, gerade in sachen performance, aber laut ELSA ist es nütlich um Mitarbeiter in sachen Surfen auszuspionieren und ihre TCP/IP communikation abzuhören.

Oder um 2:2 LT TVB GOGO zu spielen ^^
 
Mitglied seit
08.07.2000
Beiträge
707
Reaktionen
0
Also muss das lokale Routing ausgeschaltet werden?

Ich muss mal in unserer Konfiguration nachschauen, was wir eingestellt haben ;).

Company: Das wäre klasse :). So kann man den Windows Anwendern Linux näher bringen *g*.
 

Force8

Guest
Ein.

Allerdings heisst dieses Feature halt bei Lancom (Systems/Elsa) Routern so. (Kann bei deinem Router evtl. anders heissen...) Unter optionen "Erweiterte Konfiguration anzeigen" ; TCP/IP -> Lokales Routing Haken hin.

Es ist wirklich seltsam und schade das das alles mit D2 und W3 kein problem ist, nur Starcraft macht mucken. Schade.
 
Mitglied seit
08.07.2000
Beiträge
707
Reaktionen
0
Lokales Routing müsste eigentlich Ein sein.

Ich habe ja auch kein Lag im Spiel (auch mit dreien) doch hosten und joinen geht nicht... Das klappte aber beim ELSA LANCOM ISDN router :(
 

The_Company

Guest
Hier is mal mein Script (mal .txt genannt).
Das Ding ist unverändert, man muss es also evtl anpassen, wenn man nicht Linux From Scratch benutzt.

Der wesentliche Teil ist die "forward" Funktion. Kommentare sind im Script und Beipsiele für die forward Funktion offensichtlich auch. :)
 
Mitglied seit
08.07.2000
Beiträge
707
Reaktionen
0
Öh... wie binde ich das denn ein bzw starte das Script? :(

Sorry, ich habe von Linux nicht den kleinsten Schimmer... also absoluter Newbie.
 
Oben