Übersicht

  => Routing & Gateways
  => Der TCP Client
  => Beispiele
  => Aufgaben

Routing & Gateways

Ich zitiere: "Als Routing bezeichnet man die Verteilung der Pakete zwischen verschiedenen Rechnern. Das wesentliche Hilfsmittel dabei ist die sogenannte Routingtable, die anhand der Zieladresse einen Weg zum Zielrechner bestimmt. Wenn ein Zielrechner nicht im lokalen Netz ist, muß ein weiterer Rechner als vermittelndes System, dem Gateway, bestimmt werden."

" Ein Gateway ist ein Computer mit zwei Netzwerkanschlüssen, die jeweils an ein anderes Netz angeschlossen sind. Jede Schnittstelle hat eine eigene Internet-Nummer, die dem entsprechenden Netzwerk zugeordnet ist. Kommt ein Paket auf der einen Netzwerkkarte für das jeweils andere Netz an, weiß der Computer, dass er sie in das andere Netz einspeisen kann. "

Etwas ausführlicher: Das IP-Protokoll übermittelt Pakete zu einer Ziel-Adresse, und die Aufgabe, wie solch ein Paket zu seinem Ziel findet, bezeichnet man als Routing. Das IP-Protokoll geht davon aus, das ein Computer an ein lokales Netzwerk angeschlossen ist. Im eigenen Netzwerk kann der Computer dann Pakete verschicken. Problem: jetzt soll ein Paket an einen anderen Rechner in einem anderen Netzwerk gesendet werden. Anschaulich: Die Computer in unserem Netzwerk haben alle IP-Nummern folgender Bauart:

192.168.0.xx

Wir verschicken jetzt ein Paket an die Adresse 62.216.178.200 (turboliesel.planet-school.de, auf diese TCP/IP-Adresse führt die URL: http://www.wspiegel.de, warum eigentlich? Und: Was bedeutet URL?) Die Lösung unseres Problem ist ein Gateway, also ein Rechner mit zwei Netzwerkkarten, wobei in unserem Falle die zweite Netzwerkkarte über DSL ins Internet führt. Auf dem Gateway muss ein Programm Pakete aus unserem Netzwerk in die weite Welt weiterleiten können.

Jeder Rechner im Netz hat eine Tabelle mit Netzwerkadressen, und jeder Netzwerkadresse ist ein Gateway zugeordnet, das für die Weiterleitung der Pakete zu dem betreffenden Netzwerk verantwortlich ist. Wenn also ein Paket versendet wird, schaut der Computer in seiner Tabelle nach, welches Gateway für die Weiterleitung zuständig ist. Damit die sogenannten Routing-Tabellen nicht zu groß werden, führt man "Default-Routen" über ein "Default-Gateway" ein: aus unserem Netzwerk kommt man sowieso nur über den Proxy-Server hinaus, also wäre es nicht sinnvoll, wenn jeder Rechner im Netz eine Routing-Tabelle mit mehreren hundert Einträgen hätte, die zudem noch ständig aktualisert werden müsste! Auch für das Routing gibt es wieder ein Protokoll: RIP=Routing Information Protocol. Unter Windows kannst du dir über den Befehl

route print

Informationen über die Routing-Tabelle auf deinem PC beschaffen.

=> Aufgabe: Finde über Netzwerkumgebung, rechte Maustaste und dann Eigenschaften heraus, auf welches Gateway dein Rechner verweist. Suche nach einem Gateway-Eintrag, das sollte eine Adresse sein ähnlich der folgenden: 192.168.0.xx

<<<

Der TCP Client

vom letzten Mal:

1    from socket import *        # get socket constructor and constants
2    myHost = 'localhost'        # server machine, '' means local host
3    myPort = 8888               # listen on a non-reserved port number
4
5    sock = socket(AF_INET, SOCK_STREAM)  # make a TCP socket object
6    try: # versuche Verbindungsaufbau
7        sock.connect((myHost, myPort)) # mit dem Server verbinden
8
9        print "Verbunden mit dem TCP-Server!"
10       daten = "Hier der einfache Client!"
11       sock.sendall(daten)        # daten senden
12       print "Gesendet:", daten
13       antwort = sock.recv(1024)  # antwort vom Server erhalten
14       print "Antwort:", antwort
15       daten = raw_input('Eingabe: ')
16       while len(daten) > 0:       # Solange senden, bis leere Eingabe!
17           sock.sendall(daten)
18           print "Gesendet:", daten
19           antwort = sock.recv(1024)
20           print "Antwort:", antwort
21           daten = raw_input('Eingabe: ')
22       sock.close() # socket-Verbindung beenden
23       print 'Das wars . . .'
24   except:   # falls keine Verbindung möglich
25       print "Server temporary unavailable!"

und eine kleine Erklärung:

In den Aufgaben proben wir die Anpassung an einen Server, der eine Passwort-Abfrage (!) vorgeschaltet hat!

<<<

Beispiele

findest du auf dem Web-Server "muenchen", Adresse: 192.168.0.33 unter Lokal => Informatik (W. Spiegel) => Netzwerk

<<<

Aufgaben

  1. Probiere -auch bei dir zu Hause- den Befehl route print und vergleiche mit dem Ergebnis oben!

  2. RIP=Routing Information Protocol, das wird doch bestimmt in einem RFC festgelegt. . . Finde heraus, welches RFC fürs RIP zuständig ist und informiere dich übers RIP (=> Vortrag!!!)

  3. Lade dir das Python-Skript simpleTCPServer02.py vom Webserver und bringe den Client zum Absturz (!). Beachte: Server und Client laufen bei dir lokal (=> localhost).

  4. Jetzt kommts: Hier ein "funktionierender" Demo-Lauf:
    Verbunden mit dem TCP-Server!
    Gesendet: Hier der einfache Client!
    Password: *****
    Gesendet: *****
    Antwort: Hallo, 127.0.0.1
    Eingabe: Bin ich wirklich drin
    Gesendet: Bin ich wirklich drin
    Antwort: Echo <Bin ich wirklich drin> von 127.0.0.1
    Eingabe: Oh ja
    Gesendet: Oh ja
    Antwort: Echo <Oh ja> von 127.0.0.1
    Eingabe:
    Das wars . . .
    
    Passe deinen Client entsprechend an und behandle auch den Fall des fehlerhaften Passwortes. Tipp: Teste auf das Sorry des Servers (siehe unten) bei fehlerhafter Anmeldung über den Python-Befehl: meineZeichenkette.startswith("Sorry",0), informiere dich auch in der Python-Dokumentation auf dem Webserver unter Lokal => Informatik über diesen Befehl.
    PS: Wie kannst du das streng geheime Passwort herausfinden? War das Passwort falsch, so soll der Dialog folgendermaßen aussehen:
    Verbunden mit dem TCP-Server!
    Gesendet: Hier der einfache Client!
    Password: infogk
    Gesendet: infogk
    Antwort: Sorry, wrong place, wrong time, . . .
    Das wars . . .
    
    Viel Glück!

  5. Leseaufgabe: In der Einführung zum Thema Netzwerke den Abschnitt 5 (wichtig!), im TCP/IP-Skript den Abschnitt Routing: Verbindung mehrerer Netzwerke.

    W. Spiegel, Kontakt