Hier mal ein kleines Tutorial für alle b.net zocker die wissen wollen, wie das eigentlich alles funktioniert:
Im groben und ganzen ist alles auf sogenannte "Packets" zurückzuführen.
"Packets" sind Datenpakete die aus mehreren Bytes, also diverse Hexdezimalzahlen bestehen. Das ganze könnte z.B. so aussehen:
f7 28 11 00 01 01 02 20 50 68 33 34 72 21 21 21 00
2 Nummern repräsentieren immer 1 Byte.
f7 is der header, sozusagen der Bezeichnet des Packets
28 gibt die Funktion an, in diesem fall: send all , also wird eine Nachricht an alle gesendet
11 und 00 geben die länge an, in diesem Fall 17 Bytes (bei 34 zeichen: 2 zeichen ^ 1 byte)
Die nächsten 6 zeichen sind auch mir ein Rätsel, sie enthalten die eigentliche Nachricht. Die 3* 21 sind Ausrufezeichen (!), sodass man, wenn man diese Hexdezimalwerte in ASCII (American Standart Code for Information Exchange) Code übersetzt auf die nachricht :" Ph34r!!!" kommt (für alle nicht b.net´ler und non-1337er bedeutet Ph34r!!! soviel wie Angst).
Packets symbolisieren immer eine Aktion doer Handlung. Egal ob ihr zu einem Händler lauft und euch dort die ware anguckt, alles wird als Information (als quasi packet) zum Server gesandt und dort verarbeitet.
Nachdem wir nun wissen was Packets sind, möchten wir auch wissen was sie machen, wobei wir auch auf die funktionsweise des b.nets kommen.
Es gibt immer 2 Fraktionen. Sever (auch Host genannt, auf seinem Rechner läuft das Spielgeschehen abI) und Client (er sieht wie durch ein fenster sämtliche Spielgeschehen)
Server:
Server, sei es nur Talia (der blizzard b.net server) oder dein eigener Rechner sind immer die jenigen, die das Spiel eröffnen, im b.net sagt man auch "Host" zu ihnen.
Auf den Servern passiert eigentlich alles wichtige. Jede Einheit die sich bewegt bewegt sich nicht etwa auf den Clients (erklär ich gleich unten), sondern ledigtlich auf den Servern. Die Information, dass sich die Einheit bewegt hat wird in form eines der besagten packets an den Server gesendet (auch wenn ihr selber Server seit) und dort vom Warcraft des Hosts verarbeitet. Wenn es das WC3 oder D2 (je nachdem was ihr spielt) verarbeitet wird, durchläuft es dabei natürlich auch die typischen Informationsverarbeitenden Medien des Rechners (CPU, Graka, etc.), deshalb sollte der host immer einen starken Rechner haben, denn er hat sämtliche Handlungen von sämtlichen Spielern zeitgleich zu verarbeiten.
Nachdem die auswertung des packets ergeben hat, dass sich eine Einheit bewegt hat, wird diese Information in einem neuen Packet an die mit dem Server verbundenen Clients gesendet.
Diese haben also sozusagen nur ein Fenster in dem sie das Spielgeschehen verfolgen können. Das packet wird von ihrem Warcraft verarbeitet (aber nur ihr eigenes erhaltenes packet, mit den schon ausgewerteten Informationen vom Server) und auf den Monitoren von allen ist die Einheit wie von wunderhand einen Schritt vorgetreten.
Da sich aber oft viele Einheiten gleichzeig bewegen, irgendwo anders gerade gekämpft wird und noch die Basis gesichert wird, werden quasi Zeitgleich tausende von packets vom Client zum Server und wieder zurück versendet.Der Host hat daher immer DSL oder T1 als Connection.
Client:
Der Client is naja ... schwer zu beschreiben. Eigentlich amcht er gar nichts, außer seinen Einheiten befehle zu erteilen. Er hat kaum rechenaufwand. Alles was er tut, sei es eine einheit bewegen, einen Pfeil abzufeuern, ein item aufheben oder sonstwas wird als Information an den Sever gesand und als ausgewertetes packet zurückgeschickt. Der Clienterechner, der sozusagen wie ein Fenster ist bewegt ledigtlich die Einheit.
Über clients lassen sich zum Beispiel auch ziemlich alle Hacks erklären.
Wenn man es schafft so ein Packet abzufangen kann man es manipulieren und den Clients oder auch dem Server fehlerhafte daten zusenden.
Wenn man es zum Beispiel schaffen sollte den Header so einer datei zu verändern (er dient zum Identifikation des packets) und den Header wert auf FF zu stellen (was soviel bedeuten würde wie gibts net ---> also wer auch immer dieses Packet geschickt hat ist nicht mehr da) könnte man damit einen kick rausholen. Der Server empfängt das Packet, sieht: Oh der Sender ist ja gar nicht mehr da, na dann drop ich ihn mal aus der game liste. Sofort wird der Spieler gekickt. In d2 ist es viel krasser: Jedes einzelne Item wird durch ein packet "symbolisiert". Wenn amn es schaffen solte so ein packet zu vervielfachen und an den Client zu senden hat er auf einmal GENAU (und ich meine wirklich absolut 100%ig genau) den gleichen gegenstand wie der packet sender.
Wobei ich auch noch schnell auf die berühmte FW/Router frage eingehen will: 50% aller b.net spieler (egal ob wc3 oder sc) klagen, dass sie keine Spiele öffnen können. Woran liegt das?
Nunja, wenn amn ein Spiel öffnet wird man automatisch zum Server ernannt, also alle daten werden an einen gesandt.
Jedoch ist ein Router standartmäßig so konfiguriert, dass er alle NICHT "standart Ports" z.B. Port 21 für FTP (auf den man ja ständig zugreifen muss zwecks downloads etc) gesperrt hat. Logischerweise ist somit auch der Warcraft Port (6112 glaub ich) standartmäßig gesperrt. Sobald also jemand versucht euer Spiel zu joinen, sender er ein erstes Packet, mit namen etc. an euch. Wenn dieses packet aber nicht ankommt, weil euer Port blockiert ist, wirst du niemals sehen, dass jemand zu dir rein kommt. Nach einer weile merkt auch das Warcraft des typens der joinen wollte, dass da kein ausgewertetes Packet zurück kommt (wo z.B drin steht wer schon im game ist etc.). Er gibt die berühmte "Spiel konnte nicht gefunden werden" message raus.
Also: Port freischalten, damit ihr die selber spiele öffnen könnt.
Ich hoff mal es war einigermaßen verständlich, bin teilweise ins idiotische gegangen um es zu veranschaulichen, aber es soll euch nur verdeutlichen, wie das alles funktioniert.
Wenns Kritik gibt oder irgendwas falsch ist, oder ihr Fragen habt enfach reply rein
Im groben und ganzen ist alles auf sogenannte "Packets" zurückzuführen.
"Packets" sind Datenpakete die aus mehreren Bytes, also diverse Hexdezimalzahlen bestehen. Das ganze könnte z.B. so aussehen:
f7 28 11 00 01 01 02 20 50 68 33 34 72 21 21 21 00
2 Nummern repräsentieren immer 1 Byte.
f7 is der header, sozusagen der Bezeichnet des Packets
28 gibt die Funktion an, in diesem fall: send all , also wird eine Nachricht an alle gesendet
11 und 00 geben die länge an, in diesem Fall 17 Bytes (bei 34 zeichen: 2 zeichen ^ 1 byte)
Die nächsten 6 zeichen sind auch mir ein Rätsel, sie enthalten die eigentliche Nachricht. Die 3* 21 sind Ausrufezeichen (!), sodass man, wenn man diese Hexdezimalwerte in ASCII (American Standart Code for Information Exchange) Code übersetzt auf die nachricht :" Ph34r!!!" kommt (für alle nicht b.net´ler und non-1337er bedeutet Ph34r!!! soviel wie Angst).
Packets symbolisieren immer eine Aktion doer Handlung. Egal ob ihr zu einem Händler lauft und euch dort die ware anguckt, alles wird als Information (als quasi packet) zum Server gesandt und dort verarbeitet.
Nachdem wir nun wissen was Packets sind, möchten wir auch wissen was sie machen, wobei wir auch auf die funktionsweise des b.nets kommen.
Es gibt immer 2 Fraktionen. Sever (auch Host genannt, auf seinem Rechner läuft das Spielgeschehen abI) und Client (er sieht wie durch ein fenster sämtliche Spielgeschehen)
Server:
Server, sei es nur Talia (der blizzard b.net server) oder dein eigener Rechner sind immer die jenigen, die das Spiel eröffnen, im b.net sagt man auch "Host" zu ihnen.
Auf den Servern passiert eigentlich alles wichtige. Jede Einheit die sich bewegt bewegt sich nicht etwa auf den Clients (erklär ich gleich unten), sondern ledigtlich auf den Servern. Die Information, dass sich die Einheit bewegt hat wird in form eines der besagten packets an den Server gesendet (auch wenn ihr selber Server seit) und dort vom Warcraft des Hosts verarbeitet. Wenn es das WC3 oder D2 (je nachdem was ihr spielt) verarbeitet wird, durchläuft es dabei natürlich auch die typischen Informationsverarbeitenden Medien des Rechners (CPU, Graka, etc.), deshalb sollte der host immer einen starken Rechner haben, denn er hat sämtliche Handlungen von sämtlichen Spielern zeitgleich zu verarbeiten.
Nachdem die auswertung des packets ergeben hat, dass sich eine Einheit bewegt hat, wird diese Information in einem neuen Packet an die mit dem Server verbundenen Clients gesendet.
Diese haben also sozusagen nur ein Fenster in dem sie das Spielgeschehen verfolgen können. Das packet wird von ihrem Warcraft verarbeitet (aber nur ihr eigenes erhaltenes packet, mit den schon ausgewerteten Informationen vom Server) und auf den Monitoren von allen ist die Einheit wie von wunderhand einen Schritt vorgetreten.
Da sich aber oft viele Einheiten gleichzeig bewegen, irgendwo anders gerade gekämpft wird und noch die Basis gesichert wird, werden quasi Zeitgleich tausende von packets vom Client zum Server und wieder zurück versendet.Der Host hat daher immer DSL oder T1 als Connection.
Client:
Der Client is naja ... schwer zu beschreiben. Eigentlich amcht er gar nichts, außer seinen Einheiten befehle zu erteilen. Er hat kaum rechenaufwand. Alles was er tut, sei es eine einheit bewegen, einen Pfeil abzufeuern, ein item aufheben oder sonstwas wird als Information an den Sever gesand und als ausgewertetes packet zurückgeschickt. Der Clienterechner, der sozusagen wie ein Fenster ist bewegt ledigtlich die Einheit.
Über clients lassen sich zum Beispiel auch ziemlich alle Hacks erklären.
Wenn man es schafft so ein Packet abzufangen kann man es manipulieren und den Clients oder auch dem Server fehlerhafte daten zusenden.
Wenn man es zum Beispiel schaffen sollte den Header so einer datei zu verändern (er dient zum Identifikation des packets) und den Header wert auf FF zu stellen (was soviel bedeuten würde wie gibts net ---> also wer auch immer dieses Packet geschickt hat ist nicht mehr da) könnte man damit einen kick rausholen. Der Server empfängt das Packet, sieht: Oh der Sender ist ja gar nicht mehr da, na dann drop ich ihn mal aus der game liste. Sofort wird der Spieler gekickt. In d2 ist es viel krasser: Jedes einzelne Item wird durch ein packet "symbolisiert". Wenn amn es schaffen solte so ein packet zu vervielfachen und an den Client zu senden hat er auf einmal GENAU (und ich meine wirklich absolut 100%ig genau) den gleichen gegenstand wie der packet sender.
Wobei ich auch noch schnell auf die berühmte FW/Router frage eingehen will: 50% aller b.net spieler (egal ob wc3 oder sc) klagen, dass sie keine Spiele öffnen können. Woran liegt das?
Nunja, wenn amn ein Spiel öffnet wird man automatisch zum Server ernannt, also alle daten werden an einen gesandt.
Jedoch ist ein Router standartmäßig so konfiguriert, dass er alle NICHT "standart Ports" z.B. Port 21 für FTP (auf den man ja ständig zugreifen muss zwecks downloads etc) gesperrt hat. Logischerweise ist somit auch der Warcraft Port (6112 glaub ich) standartmäßig gesperrt. Sobald also jemand versucht euer Spiel zu joinen, sender er ein erstes Packet, mit namen etc. an euch. Wenn dieses packet aber nicht ankommt, weil euer Port blockiert ist, wirst du niemals sehen, dass jemand zu dir rein kommt. Nach einer weile merkt auch das Warcraft des typens der joinen wollte, dass da kein ausgewertetes Packet zurück kommt (wo z.B drin steht wer schon im game ist etc.). Er gibt die berühmte "Spiel konnte nicht gefunden werden" message raus.
Also: Port freischalten, damit ihr die selber spiele öffnen könnt.
Ich hoff mal es war einigermaßen verständlich, bin teilweise ins idiotische gegangen um es zu veranschaulichen, aber es soll euch nur verdeutlichen, wie das alles funktioniert.
Wenns Kritik gibt oder irgendwas falsch ist, oder ihr Fragen habt enfach reply rein