• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

[Grundsatzfrage]Woher weiß ein Paket wohin?

Wikinator

Adams Parmäne
Registriert
21.08.04
Beiträge
1.297
Hallo,

ich habe mich in letzter Zeit mit TCP/IP und dem Internet beschäftigt. Eine Frage ist dabei noch offen geblieben.
Wenn ein Paket (angenommen eine Anfrage von mir an Apfeltalk) versendet wird, woher weiß das Paket dann, wie es zu dem Server gelangt?
 

stk

Grünapfel
Registriert
05.01.04
Beiträge
7.141
Moin,

es fragt den Router nach dem Weg. :-D

Gruß Stefan
 

Wikinator

Adams Parmäne
Registriert
21.08.04
Beiträge
1.297
und woher weiß der Router das? Hat er eine "Karte" des gesamten Internets?
 

stk

Grünapfel
Registriert
05.01.04
Beiträge
7.141
Moin,
Wikinator schrieb:
und woher weiß der Router das? Hat er eine "Karte" des gesamten Internets?

Nein, der fragt das DSL-Modem. Das wiederum wählt sich ja über T-Online ins Netz und neben T-Online gehört ja auch die Auskunft zur T-Com - die weiß bescheid.

Gruß Stefan
 

Wikinator

Adams Parmäne
Registriert
21.08.04
Beiträge
1.297
das heißt, der Provider weiß wo es lang geht?
 

ametzelchen

Rheinischer Bohnapfel
Registriert
04.01.04
Beiträge
2.451
Ich finde einfach aufbereitete Erklärungen ja immer gut ;)..Hier kommt die Maus

gibt es auch als movie, habe ich gerade nicht im www gefunden..
 

mullzk

Linsenhofener Sämling
Registriert
04.01.04
Beiträge
2.529
jau, die sendung mit der maus ist wirklich ganz geil.

ich versuche es im extrem-schnellzugtempo noch technisch, muss gleich wieder los. bin aber gerade in übung, weil ich das gestern auch unseren azubis beibringen musste. allerdings mit mehr zeit fürs detail...

also: wenn der empfänger im gleichen subnetz sitzt, ist alles ganz einfach. jeder host verschickt regelmässig einen arp-broadcast ins subnetz, in welchem er besagt, dass hinter der MAC-adresse x.y.z die ip-adresse w.x.y.z sitzt. Sieht der Computer resp. sein TCP/IP-Stack, dass der Empfänger im gleichen Subnetz sitzt, packt er um das IP-Packet ein Ethernet-Rahmen mit der MAC-Adresse des Empfängers und legt dieses auf das Ethernet-Kabel. Der Empfänger empfängt es und sendet auf dieselbe Weise eine allfällige Antwort zurück

Ein klein wenig komplizierter wird es, wenn der Empfänger zwar nahe, aber doch nicht im selben Subnetz sitzt, zum Beispiel an einem anderen Interface des Routers. Hier erkennt nun der TCP/IP-Stack, dass die IP-Adresse des Empfängers nicht im selben Subnetz liegt, und packt um das IP-Packet ein Ethernet-Rahmen mit der MAC-Adresse des Default-Gateway, also des Routers. Der Router empfängt das Packet, schaut ob die Empfänger-IP-Adresse in einem von ihm verwalteten Netz liegt, schaut in seinem ARP-Cache die MAC-Adresse des Empfängers nach und versendet das IP-Packet nun mit einem neuen Ethernet-Frame (MAC-adressiert an den Empfänger) weiter. Und dasselbe Spiel dann wieder zurück.

So richtig kompliziert wird es, wenn der Empfänger auch nicht am selben Router sitzt, sondern irgendwo im Internet. Dann muss der Router wissen, wohin er das Packet weiterschicken soll. Hier kommen nun die Routing-Protokolle ins Spiel, von denen es jede Menge sehr unterschiedlicher Formen gibt. Am bekanntesten sind RIP, OSPF und BGP.
Jedes Routing-Protokoll läuft darüber hinaus, dass ein Router weiss, welche IP-Adresse er über welchen Weg (resp. über welche Wege, und welcher der schnellste ist) erreichen kann. Weg bedeutet hier die verschiedenen Netzwerk-Interfaces des Routers.

Im einfachen Fall deiner Airport-Station ist das ganz einfach: Ein HomeRouter weiss, dass jede IP-Adresse, die nicht im LAN-Subnetz ist, hinter dem WAN-Interface zu erreichen ist.
Bei deinem Provider sieht es ganz anders aus, der wird fast alle Netze über fast alle Wege erreichen, wichtig ist zu wissen, welches der schnellste aktuell zur verfügung stehende ist.

Nur kurz als Beispiel, wie ein solches Wissen entstehen kann, der Oldtimer unter allen Routing-Protokollen, RIP.
Ist RIP aktiviert, sendet ein Router paar Sekunden ein Paket hinaus, in welchem er sagt, über wieviele Routerhops er welches Netz erreichen kann. Die Netze, welche er selber auf seinen Interfaces hat, erreicht er dabei natürlich schnellstmöglich, nämlich mit 0 Hops. Seine Routing-Tabelle enthält am Anfang auch nur diese Netze. Sagen wir mal, dies seien die Netze A und B, den Router nennen wir Router 1

Nun empfangen seine benachbarten Router, sagen wir mal die Router 2 und 3, dieses RIP-Packet, und wissen, dass die Netze A und B über jenes Interface zu erreichen sind, welches zu Router 1 führt. Die beiden Router erzählen dieses Wissen nun wiederum ihren Nachbarn, den Routern 1, 4 und 5 weiter; genauer gesagt, sagen sie, dass sie die Netze A und B über einen Hop erreichen, zusätzlich auch noch ihre eigenen Netze C und D über 0 Hops.
Nun wissen die Router 4 und 5, dass sie die Netze A und B erreichen, in dem sie die Packete an die Router 2 oder 3 weiterschicken. Würde zwischen Router 2 und 4/5 ein weiterer Router hängen, die Router 3, 4 & 5 wären aber direkt miteinander verbunden, wüssten sie zudem, dass der Weg über Router 3 schneller wäre (zwei Hops vs. einen). Und so weiter und so fort, bis dass alle Router wissen, welche IP-Adresse über welches Interface erreicht werden kann.

Um das ganze irgendwo einzugrenzen, werden Netze, die nur über 128 Hops erreicht werden können, nicht mehr weiter propagiert. Diese Beschränkung gilt als einer der vielen Nachteile von RIP gegenüber neueren Routing-Protokollen, auch wenn 128 Hops wirklich extrem viel sind. Mein Hauptproblem mit RIP ist viel mehr, dass das Protokoll selber keinen Mechanismus kennt um zu reagieren, wenn ein Link ausfällt. Man muss dann einfach warten, bis dass der Router 2 schnallt, dass er von Router 1 schon lange nichts mehr gehört hat, seine Routing-Tabelle dann ändert, weiterhgibt etc., bis alle wissen, dass der Router 1 und seine Netze nur noch über den Router 3 erreicht werden können


Langsam lesen, noch einmal lesen, und vielleicht wird man dann aus meinem geschreibsel schlau. Aber ich muss nun dringendst abhauen, sorry für die unverständlichkeit....
 
  • Like
Reaktionen: UBo und fantaboy

stk

Grünapfel
Registriert
05.01.04
Beiträge
7.141
Moin,

schnell, technisch - aber wenigstens ernsthaft :-D

Gruß Stefan
 

mullzk

Linsenhofener Sämling
Registriert
04.01.04
Beiträge
2.529
so, monsterabend ist durch und ich kann mir etwas mehr zeit nehmen...

das wichtigste ist: das ip-paket weiss nicht wohin. das paket selber ist dumm. klug ist erst das netzwerk selber, genauer gesagt die router.

ein router verbindet immer mehrere netze miteinander. im kleinen fall ist das zB das WLAN auf der einen Seite, das Netz zwischen Provider und Router auf der anderen. Im grossen Fall sind dies einige Satellitenlinks zu anderen Core-Router. Die Netzwerkkarten des Routers in die einzelnen Netze werden als Interfaces bezeichnet.

Ein Router alleine weiss immer nur, welche IP-Adressen in denjenigen Netzen ansprechbar sind, in welchen er ein Interface hat. Aber zu diesen erreichbaren IP-Adressen gehören auch die Interfaces anderer Router, und mit diesen kommuniziert er über die Routingprotokolle. Diese Protokolle ermöglichen es, dass ein Router erfährt, welche Netze seine Nachbarn bedienen, und welche Netze wiederum von deren Nachbarn usw. bedient werden. Am Schluss weiss ein Router, über welche Interfaces welche IP-Adressen wie schnell erreicht werden können - und zwar weiss er dies für _sämtliche_ IP-Adressen im ganzen Netz.

Natürlich wäre es unmöglich, auf den Routern eine Tabelle mit sämtlichen IP-Adressen und den entsprechenden Interfaces zu führen, und da kommt nun der grosse Vorteil der Logischen Gruppierung von IP-Adressen in Netze und Subnetze zu gute.

Für das folgende Beispiel habe ich ein JPG eines kleinen Pseudo-Netzwerkes angehängt, um das folgende zu verstehen, sollte man es wohl in einem anderen Fenster parallel offen halten. Also:

In einem ersten Schritt, kennt jeder Router sämtliche Weg zu den direkt an ihm angeschlossenen Netzen. Daher gibt es folgende Routing-Tabellen

Router A
Erreicht 10.0.1.0-255 über das Interface A1 in einem Schritt
Erreicht 10.0.3.1-2 über das Interface A2 in einem Schritt
Erreicht 10.1.1.1-2 über das Interface A3 in einem Schritt

Router B
Erreicht 10.0.2.0-255 über das Interface B1 in einem Schritt
Erreicht 10.0.3.1-2 über das Interface B2 in einem Schritt
Erreicht 10.1.2.1-2 über das Interface B3 in einem Schritt

Router C
10.1.2.1-2 über Int C1 in einem Schritt
10.3.2.1-2 über Int C2 in einem Schritt
10.2.0.1-2 über Int C3 in einem Schritt

Router D
10.4.2.1-255 über Int D1 in einem Schritt
10.4.3.1-2 über Int D2 in einem Schritt
10.3.2.1-2 über Int D3 in einem Schritt

Router E
10.4.1.1-255 über Int E1 in einem Schritt
10.4.3.1-2 über Int E2 in einem Schritt
10.3.1.1-2 über Int E3 in einem Schritt

Router F
10.1.1.1-2 über Int F1 in einem Schritt
10.3.1.1-2 über Int F2 in einem Schritt
10.2.0.1-2 über Int F3 in einem Schritt



Schritt 2
Nun beginnt das Routingprotokoll zu arbeiten. Der Einfachheit halber beschränken wir uns auf das gute alte RIP. Jeder Router teilt seinen Nachbarn mit, welche Netze er über wieviele Schritte erreicht. Sofern ein Router dadurch Kenntnis von einem Netz erhält, welches er noch nicht kennt nimmt er dieses in seine Routing-Tabelle auf. Das Interface, über welcher er die neuen Netze erreicht ist natürlich jenes, an welchem der entsprechende Nachbar angeschlossen ist, die Anzahl benötigter Schritte, ist die Anzahl der vom Nachbarn benötigte Schritte plus dem Schritt zum Nachbarn.

Router A erhält die Informationen von den Routern B und F. Seine Routing-Tabelle umfasst neu:
1) 10.0.1.0-255 über A1 in 1 Hop
2) 10.0.3.1-2 über A2 in 1 Hop
3) 10.1.1.1-2 über A3 in 1 Hop
4) 10.0.2.0-255 über A2 in 2 Hops
5) 10.0.3.1-2 über A2 in 2 Hops
6) 10.1.2.1-2 über A2 in 2 Hops
7) 10.1.1.1-2 über A3 in 2 Hops
8) 10.3.1.1-2 über A3 in 2 Hops
9) 10.2.0.1-2 über A3 in 2 Hops
Augenmerk gilt dabei auf die Zeilen 5 und 7 - diese beiden Netze kennt Router A ja schon selber, und zwar aus den Zeilen 2 und 3. Diese Einträge sind logischerweise die besseren, da die Packete über dasselbe Interface versendet, schneller (1 statt 2 Hops) am Ziel sind. Diese Zeilen werden daher gelöscht.

Wenn alle Router mit ihren Nachbarn gesprochen haben, sieht die Situation wie folgt aus:
Router A
10.0.1.0-255 über A1 in 1 Hop
10.0.2.0-255 über A2 in 2 Hops
10.0.3.1-2 über A2 in 1 Hop
10.1.1.1-2 über A3 in 1 Hop
10.1.2.1-2 über A2 in 2 Hops
10.2.0.1-2 über A3 in 2 Hops
10.3.1.1-2 über A3 in 2 Hops

Router B lernt von Router A und C:
10.0.1.0-255 über B2 in 2 Hops
10.0.2.0-255 über B1 in 1 Hop
10.0.3.1-2 über B2 in 1 Hop
10.1.1.1-2 über B2 in 2 Hops
10.1.2.1-2 über B3 in 1 Hop
10.2.0.1-2 über B3 in 2 Hops
10.3.2.1-2 über B3 in 2 Hops

Router C lernt von Router B, D und F
10.0.2.0-255 über C1 in 2 Hop
10.0.3.1-2 über C1 in 2 Hop
10.1.1.1-2 über C3 in 2 Hop
10.1.2.1-2 über C1 in 1 Hop
10.2.0.1-2 über C3 in 1 Hop
10.3.1.1-2 über C3 in 2 Hop
10.3.2.1-2 über C2 in 1 Hop
10.4.2.1-255 über C2 in 2 Hop
10.4.3.1-2 über C2 in 2 Hop

usw, mir wird das ganze in diesem Moment zu mühsam, aber ich glaube, es ist klar, worauf es hinausläuft. Das wichtige ist nun, dass jeder Router diese neue Tabelle nun ebenfalls wieder an seine Nachbarn weitergibt und diese erneut ihre Tabellen anpassen.

Ich verfolge nun einmal nur das Wissen um Netz 1 (an Router A):
Im ersten Schritt weiss nur Router A davon, und zwar, dass er es über A1 in einem Hop erreicht
Im zweiten Schritt haben folgende Router folgende Einträge zum Netz 1:
Router A: Über A1; 1 Hop
Router F: Über F1; 2 Hops
Router B: Über B2; 2 Hops
Diese sagen das nun auch weiter, so dass im dritten Schritt folgende Router folgende Einträge haben;
Router A: Über A1; 1 Hop
Router F: Über F1; 2 Hops
Router B: Über B2; 2 Hops
Router E: Über E3; 3 Hops
Und Router C? Der erhält die Meldung gleich von zwei Seiten. Über C3 erreicht er es in 3 Hops, ebenso über C1.

Was er nun mit diesem Wissen macht, ist ganz unterschiedlich, je nach Routing-Protokoll. Erst einmal muss er auswählen, welche Verbindung denn nun aktuell die bessere ist. Alte Protokolle gehen da von Kriterien wie dem Interface mit der tiefsten IP-Adresse aus (in diesem Falle C1). Andere überprüfen, wie schnell und breit eine Leitung ist, und würden zum Beispiel den Link vorziehen, der über Ethernet und nicht über Modem führt. Für diese Entscheidung gibt es sehr unterschiedliche Grundlagen.

Noch grösser ist der Unterschied, was der Router mit dem langsameren Link macht. In RIP verwirft er dieses Wissen einfach - das Netz 1 ist einfach über ein Interface zu erreichen. Neuere Protokolle wie OSPF oder BGP sind da etwas vorsichtiger - auch sie leiten zwar allen Traffic sagen wir mal über C2, behalten aber im Hinterkopf, dass auch C3 zum Ziel führt. Wenn nun der Link über C2 aus irgendeinem Grund ausfällt, haben sie sehr schnell allen Traffic über C3 umgeleitet. RIP hingegen muss in diesem Fall erst mal warten, bis der Router C begriffen hat, dass er vom Router B2 schon lange nichts mehr gehört hat, und der Link über C2 nun wohl nicht mehr so aktuell ist. Und dann muss er noch warten, bis ihm der Router F das nächste Mal von dessen Routing-Tabelle erzählt, damit er die Verbindung über C3 wieder aufnehmen kann.
Bleiben wir aber beim RIP und sagen einmal, dass der Router C nur einen Eintrag führt, und zwar den über C2 mit 3 Hops.

Nun im vierten Schritt erzählen wiederum alle Router allen anderen von ihrem Wissen.
Router A: Über A1; 1 Hop
Router F: Über F1; 2 Hops
Router B: Über B2; 2 Hops
Router E: Über E3; 3 Hops
Router C: Über C2; 3 Hops
Router D: Über D2 resp D3 (gleiche Entscheidung wie oben) mit 4 Hops.

Aber Hoppla, da geschieht doch noch mehr. Denn der Router C hat unter anderem auch den Routern B und F mitgeteilt, dass er das Netz über 3 Hops sieht. Diese Router wissen nun also, dass sie das Netz 1 in 4 Hops über die Interfaces B3 resp. F3 erreichen könnten. Jedoch haben sie bereits einen Eintrag in ihrer Routing-Tabelle, welcher das Netz in weniger Hops erreicht, nämlich auf dem geraden Weg über B2 resp. F1.
Auch hier ist wieder Protokoll-Abhängig, was die Router mit dem Wissen über den zusätzlichen, aber langsameren Link anfangen. RIP verwirft und hält damit die Routingtabelle frei von Ballast, OSPF und BGP behalten und sind damit für einen Ausfall gewappnet.

Auch der Router D wird im nächsten Schritt den Routern E und C mitteilen, dass er das Netz 1 kennt. Aber das wird die beiden ziemlich kalt lassen, denn statt Packete an dieses Netz über den Router D zu schicken, wo es 5 Hops benötigt, um ins Zielnetz zu kommen, verschicken sie es lieber gleich direkt mit nur 3 Hops.



So, nun wissen also alle Router, wo das Netz 1 liegt, genauso wie sie auch wissen (auch wenn wir dies nicht verfolgt haben), über welche Interfaces sie Packete verschicken müssen, die in die Netze 2-4 adressiert sind.

Das wichtige bei der ganzen Sache: Im Internet, wo sehr viel noch auf RIP basiert, wissen die Router jeweils nicht, wo ein Netz denn nun genau liegt. Das einzige was sie wissen, ist, über welches Interface sie ein Packet verschicken müssen, wenn es in einem bestimmten Subnetz liegt. Denn das ist eigentlich auch das einzige was sie wissen müssen, zumindest in einem idealen Netzwerk.
Wenn ein Client im Netz 4 eine Anfrage an den Server im Netz 1 hat, und das Paket faut-de-mieux mal an seinen Default-Gateway schickt, muss dieser nur wissen, auf welchem Interface er dieses weitergeben soll. Aber auch er kennt das Netz 1 selber nicht, er weiss nur, dass Router F etwa näher daran sitzt. Und dieser wiederum gibt es weiter an Router A, und erst der liefert es dann beim Server ab.

Andere Protokolle funktionieren da anders, bei OSPF kennt zum Beispiel jeder Router innerhalb einer logischen Region sämtliche Verbindungen sämtlicher Router und berechnet sich dann jeweils den schnellsten Weg ans Ziel. Das Prinzip ist allerdings immer dasselbe: Die IP-Packete werden von Router zu Router weitergereicht, bis sie über einen möglichst direkten und zuverlässigen Weg ans Ziel gelangt sind.



So, das wäre mal ein kleiner Crashkurs in Routing im Internet gewesen, vielleicht waren ja Teile darin auch nur ein klein wenig verständlich. Ansonsten erläutere ich gerne mehr, muss mir vielleicht noch überlegen, wie man so etwas am besten textuell vermitteln kann.

Und ja, ich weiss, vieles in diesem Text stimmt so nicht ganz (zB interessiert sich RIP nicht für die Interfaces, sondern für die IP-Adressen des Next-Hop, ich habe hier einfach Analogien zu den statischen Routen in OS X gezogen), aber das war ja auch kein Anspruch. Wer alleine mit diesem Text einen Router konfigurieren will, hat eh schon verloren... Um im Routing draus zu kommen gibts nur eines: Lesen lesen lesen, und zwar RFCs, Manuals und Artikel in spezialisierten Foren...
 

Anhänge

  • VorschauScreenSnapz001.jpg
    VorschauScreenSnapz001.jpg
    12,7 KB · Aufrufe: 328

chekov

Jerseymac
Registriert
30.08.04
Beiträge
449
da hatte jemand viel zeit ;)

Klasse beschrieben!
 

epsilon15

Gast
ich will nen 100MBit anschluss zu sonem core router :p
 

Wikinator

Adams Parmäne
Registriert
21.08.04
Beiträge
1.297
irgendwie ist mir dieser Text ganz entgangen und ich sehe ihn erst jetzt.
danke mullzk für die anschauliche Beschreibung. ein paar fragen habe ich aber noch:

wird als "Router" nur die Router des Providers oder auch ein normaler WLAN-Router bezeichnet? Wenn auch WLAN-Router das können, wie macht es dann ein Modem? Nimmt es dann einen Router des Provider?

was genau ist ein Interface bei einem Router? Mein Router hat z.b. einen Internet-Zugang, zwei Ethernet-Schnittstellen und WLAN. Also hat er nun 4 Interfaces?
 

mullzk

Linsenhofener Sämling
Registriert
04.01.04
Beiträge
2.529
a) ein Modem wählt sich auf ein Interface eines Routers ein. Gute Router sind voll modular, so dass du neben einem ethernet-modul zB auch ein BRI- oder ein ISDN-Modul einschieben kannst. Schlussendlich macht ein Modem ja nichts anderes als eine Netzwerkkarte, wenn auch mit unterschiedlichen Mechanismen...

b) was du oben beschreibst, sind Ports, nicht Interfaces. Beispiel: Ein Gebräuchlicher KMU-Switch hat bsp. 48 Ports, aber nur ein Interface. Dein Router dürfte zwei Interfaces haben (WAN und LAN), plus ein drittes das aktiviert werden kann (um das WLAN zu einem eigenen Netz zu machen, aber das können nicht alle).
Ein Interface muss nicht ein physikalischer Anschluss sein, sondern ist etwas logisches (zB hat jeder Mac ein Loopback-Interface). In der IP-Welt kann man sagen, dass alles, was eine eigene IP-Adresse hat, ein Interface ist (auch wenn diese Aussage prinzipiell falsch ist), während ein (Switch-)Port nichts von IP-Adressen weiss.
Ein Interface ist ein logisches Konstrukt des Computers, an den er seine Packete leitet. Und das Interface leitet sie dann an andere Interfaces oder auf das tatsächliche Kabel weiter.
Irgendwie bringe ich da gerade keine gute Beschreibung hin, aber so vom Prinzip her sollte es glaubich klar sein.

c) ein router ist nach definition eigentlich eine Netzwerk-Komponente, die a) routet und b) routing-informationen verteilt. das können gewisse homerouter auch, aber der klassische einsatz ist da ein anderer: sie NATten die packete aus dem LAN an den Default-Gateway der ADSL-Verbindung.
Home-Netze haben ja fast immer eine private IP-Adresse a la 192.168.0.0. Diese werden im Internet nicht geroutet - stattdessen schicken die PCs alle Pakete an ihren DefaultGate (Home-Router), und der verschickt einfach neue Pakete ins Internet (denn die WAN-Stelle hat meist eine öffentliche Adresse) und leitet dann die Antwort-Packete an den entsprechenden PC weiter. Das entspricht nicht dem eigentlichen Routing, und der Home-Router muss für diese Aufgabe auch nichts vom Internet kennen, sondern nur seine nächste Ansprechstelle.

Da aber fast alle Router auch NATten können, und einzelne Home-Router auch wirklich das routing beherrschen, und NAT näher am routing liegt als am Modem, hat sich der Begriff Router für diese Kästen aus guten Gründen durchgesetzt....