Sven Rautenberg: Netzwerk - TCP/IP

Beitrag lesen

Moin!

Irgendwie blicke ich da noch nicht so ganz durch:

Das können wir ändern.

Die Klassen-Bezeichnung hängt tatsächlich nur von den ersten Bits der IP-Adresse ab. Und daraus resultiert dann zwingend eine Subnetz-Maske: Klasse A: 255.0.0.0, Klasse B: 255.255.0.0, Klasse C: 255.255.255.0.
Also ich weiß das die Klassen imnzwischen nicht mehr gibt, aber den Zusammenhang zwischen der Klasseneinteilung und den ersten Bits sehe ich leider nicht. Die ersten Bits beziehen sich doch nur auf die erste Dezimal-Zahl der IP. Was hat jetzt die erste Zahl mit der Subnetzmaske zu tun? Wie ich das verstehe Kann man die Subnetzmaske frei wählen um einen netzbereich einzuschränken, zumindest wie das mit der letzten Dezimal-Zahl der Subnetzmaske funktioniert habe ich verstanden.

Wie anderswo schon erwähnt: Anhand der ersten Bits in der IP-Adresse kann man die ehemalige Klasse feststellen. Ich weiß nicht, ob man das derzeit in Routern noch verwendet - vermutlich eher nicht. Die Klasse-A-Netzwerke sind alle aufgesplittet und in kleineren Einheiten an unterschiedliche Nutzer vergeben worden, die sie ihrerseits wieder aufge- und verteilt haben...

Die Subnetzmaske hat mit der Klasse erstmal gar nichts zu tun. In früheren Zeite ergab sich aus der Klasse automatisch die Subnetzmaske (siehe oben). Man gibt anstatt der langen Subnetzmaske auch gerne die Anzahl der 1-Bits in der Maske als Dezimalzahl an. Ein Klasse-C-Netz mit der Maske 255.255.255.0 hat 24 1-Bits - also wäre 192.168.0.0/24 eine kurze IP/Netmask-Kombination. Netzmasken haben vorne in der Binärzahl nur 1-Bits, und hinten nur 0-Bits, deshalb ist die Angabe der Zahl der 1-Bits eindeutig - der Rest bis 32 Bit wird mit 0 aufgefüllt.

Mit anderen Worten: Du kannst heute nicht nur ganze Klassen-Netzwerke erhalten, sondern auch kleinere Teilbereiche - bzw. eigentlich kriegst du sowieso nur noch kleine Teilbereiche, sofern du den Bedarf dafür nachweist.

Hm, aber wofür braucht man im öffentlichen Netz überhaupt subnetzmasken, wenn gerade dort doch sowieso jede IP absolut eindeutig sein muß?

Die Subnetzmaske ist wichtig fürs Routing.

Der sendende Rechner kennt seine eigene IP-Adresse und die des Rechners, an den er senden will. Damit er feststellen kann, ob der andere Rechner direkt über das Netzwerk erreichbar ist, geht er folgendermaßen vor:

Aus seiner eigenen IP und Netzmaske ermittelt der Rechner die Netzwerk-Adresse. Das geschieht durch logisches bitweises AND:

192.168.000.023 -> Sender-IP -> 11000000.10101000.00000000.00010111
255.255.255.000 -> Netzmaske -> 11111111.11111111.11111111.00000000
               AND-verknüpft -> 11000000.10101000.00000000.00000000
192.168.000.000 <- dezimal   <-

Dasselbe macht er mit der IP des Empfängers:
192.168.001.016 -> Sender-IP -> 11000000.10101000.00000001.00010000
255.255.255.000 -> Netzmaske -> 11111111.11111111.11111111.00000000
               AND-verknüpft -> 11000000.10101000.00000001.00000000
192.168.001.000 <- dezimal   <-

Sind nach dieser Operation die ermittelten Netzwerkadressen gleich, dann sind sendender und empfangender Rechner am gleichen Netzwerk angeschlossen, und der Sender kann direkt mit dem Empfänger Konkakt aufnehmen.

Andernfalls hat der Sender einen Router konfiguriert bekommen. Kann er dem Empfänger nicht direkt erreichen, schickt er das Paket stattdessen an diesen Router, um ihm die weitere Übermittlung des Datenpakets zu überlassen.

Auf diese Weise funktioniert das Routing im Internet: Wenn ein Rechner selbst nicht weiß, wie er den Empfänger direkt erreichen kann, dann schickt er die Daten einem übergeordneten Router, der dann hoffentlich weiß, wohin er die Daten schicken muss. Eventuell weiß er es auch noch nicht, dann schickt er es seinem übergeordneten Router, und so weiter. Diese "Router für den Notfall" nennt man "Default-Gateway". Und bei näherer Betrachtung kann man das Spielchen nicht endlos weiterspielen, denn irgendwer muss irgendwann man wissen, wohin das Paket wirklich gehen soll. Dafür sind die großen Router an den Backbones zuständig. Die haben große Tabellen mit allen IP-Adressräumen dieser Welt (allerdings nicht jede IP einzeln, sondern gruppiert nach den Leitungen, die zum Router hinführen) und wissen so, über welche Leitung sie die Datenpakete weiterleiten müssen. Und falls mal eine Leitung ausfällt, haben sie Möglichkeiten, sich mit den anderen Routern zu verständigen, um Ausweichwege zu finden, damit die Daten trotzdem ankommen. Vielleicht benutzt ein Router auch mehr als eine Leitung, um die Daten zum gleichen Ziel zu senden. All diese Mechanismen können dafür sorgen, dass das Internet auch im Falle eines Atomkrieges ausfallsicher ist. Allerdings ist diese Sicherheit leider nur theoretischer Natur. In der Praxis ist man vom Internet abgeschnitten, wenn z.B. das eigene Modem nicht mehr läuft. Oder die einzige Leitung des Providers ins Internet. Oder der einzige zentrale Datenaustauschpunkt (in Deutschland war Frankfurt IIRC mal der einzige zentrale Datenaustauschpunkt aller Provider - eine Bombe drauf, und schon wäre das Internet in Deutschland ziemlich ausgeschaltet gewesen - es gibt mittlerweile in allen großen Städten Austauschpunkte, so dass dieses Szenario eher unwahrscheinlich ist. Aber dennoch sind Störungen des Betriebes bei Ausfall zentraler Komponenten wahrscheinlich, wenngleich nicht an der Tagesordnung).

Wie das in kleinen Ethernet-Netzwerken mit dem zustellen der Pakete funktioniert habe ich verstanden, aber wie funktioniert das im öffentlichen Netz? Angenommen ich habe eine ISDN-Standleitung und eine feste IP von der Telekom erhalten. Die ISDN Karte kann ja nur über PPP angesprochen werden.

Das verwendete Netzwerkübertragungsprotokoll ist für das Funktionieren von TCP/IP unerheblich. PPP ist einfach eine weitere Möglichkeit, neben Ethernet (was nicht nur die Hardware bezeichnet, sondern eigentlich vielmehr das Datenformat auf der Leitung), SLIP (veraltetes serielles Protokoll, von PPP abgelöst), Token Ring, ATM, FDDI etc., Daten zu übertragen. TCP/IP setzt darauf auf. Natürlich muß man für die PPP-Übertragung andere Dinge machen, als fürs Ethernet, aber die Netzwerktreiber sind darauf ausgelegt, die jeweiligen Unterschiede zu kapseln und der Anwendung standardisierte Funktionen zur Verfügung zu stellen, so dass diese Unterschiede absolut unsichtbar bleiben. Das ganze nennt man OSI-Schichtenmodell.

Wie funktioniert das, wenn ich irgendwo im Browser jetzt meine feste IP angebe, das ich auf den Apache meines Rechners geleitet werde? OK, vom Browser geht ein Request Raus, an den Provider, durch irgendwelche Gateways die die Angefragte Adresse immer weiterleiten, vermutlich als erstes die erste Zahl, dann innerhalb dieses Netzes die 2. Zahl... und dann? Wie kommt dann das Paket über die Telefonleitung auf meien ISDN-Karte? Router... speichern ja nur IPs und keine Telefonnuummern! Wie funktioniert das?

Die Router sind das Geheimnis. Der Router deines Einwähl-Providers kennt die gewünschte Adresse vielleicht nicht, aber wie oben beschrieben: Irgendwann wird ein Router das Datenpaket erhalten, der die Zieladresse zuordnen kann, und einem untergeordneten Router die Daten senden (beispielsweise weiß er, dass die Zieladresse bei T-Online liegt, und schickt die Daten dem T-Online-Router). Dieser kann die Adresse noch weiter zuordnen (weiß, dass die IP in Hamburg liegt, und schickt sie dem Router in Hamburg). Der nächste Router weiß, in welchem Netzwerksegment die Adresse liegt, und schickt die Daten dorthin... bis der gewünschte Rechner irgendwann gefunden ist.

Typische IP-Adressmengen sind 1, 4, 8, 16..., wobei das _alle_ IP-Adressen umfasst, und außer bei 1 immer zwei Adressen für Netzwerkadresse und Broadcastadresse abzuziehen - deshalb kann man auch nicht 2 IP-Adressen (Netzmaske 31 Bit) erhalten, weil man dann keine nutzbaren Adressen hätte.
Aha! Also entweder eine feste IP, oder direkt ein mehr oder weniger großes Netzwerk. DAs wird dann über die NetzwerkAdresse angesprochen(niedrigste IP), richtig? Aber wofür dann die andern IPs?

Die Netzwerkadresse ist eigentlich funktionslos. Sie geht für die Nutzung durch einen Rechner verloren, weil sie, wie im Beispiel oben gezeigt, beim Routing errechnet wird. Sie kann technisch nicht genutzt werden.

Ebenso gibt es noch eine Broadcast-Adresse. An diese Adresse werden Daten geschickt, die für alle angeschlossenen Rechner bestimmt sind - also "Rundfunk" im besten Wortsinne. Per Broadcast schickt z.B. Windows Informationen über die Dateifreigabe an alle Rechner im Netz. Auch diese Adresse ist nicht nutzbar, da sie für "alle IP-Adressen in diesem Netzwerksegment" steht.

Ich würde das doch ehe anders machen, eine feste IP und intern ein 192.168er privates Netzwerk und das ganze halt weiterleiten. Was habe ich im öffentlichen Adressraum von Netzwerk und Broadcast Adresse?

Du privat - gar nichts. Aber man benötigt für Serveraufgaben feste, öffentliche IP-Adressen. Deshalb werden sie verwendet.

Also ist die Klasseneinteilung durch bits doch nicht (mehr) richtig sondern doch nur durch die Subnsetzmaske bestimmt, oder? /16 heißt doch Subnetzmaske 255.255.0.0, oder?

Richtig. Und es gibt genauso /17, /18, /19..., bis hin zu /30. /31 ist Schwachsinn, denn das würde genau 2 IP-Adressen ermöglichen, die beide aus technischen Gründen nicht nutzbar sind: Netzwerkadresse und Broadcast-Adresse.

Die Broadcast-Adresse ist übrigens die höchstmögliche Adresse im jeweiligen Netzwerk. Man bildet sie aus IP-Adresse und Netzmaske so:
192.168.000.023 -> Sender-IP -> 11000000.10101000.00000000.00010111
255.255.255.000 -> Netzmaske -> 11111111.11111111.11111111.00000000
       invertierte Netzmaske -> 00000000.00000000.00000000.11111111
                OR-verknüpft -> 11000000.10101000.00000000.11111111
192.168.000.255 <- dezimal   <-

Der Host-Anteil der IP-Adresse hat alle Bits gesetzt.

Ich empfehle dir, einfach mal Google zu befragen. Meine schnelle Suche nach "TCP/IP Tutorial" brachte z.B. http://www.sangoma.com/fguide.htm zum Vorschein - leider englisch, aber ausführlich.

- Sven Rautenberg