![]() |
![]() |
![]() |
![]() |
Das Programm ping
schickt ein paar Datenpakete zur Adresse, die man hinter ping
angegeben hat. Es wird gleichzeitig festgehalten, wie lange die Pakete benötigen, und ob Pakete verloren gegangen sind. Beispiel:
ping www.wspiegel.de
Im Ergebnis seht ihr später die Angabe TTL, das steht für Time To Live. TTL macht erst Sinn im Zusammenhang mit dem nächsten Abschnitt! Man kann ping
viele Parameter übergeben, wichtiger finde ich jedoch das Anwendungsfeld von ping
: Was glaubst du, wo & warum wird ping
eingesetzt?
Antwort: _____________________________________________________________
Lesefutter: In der Einführung zum Thema Netzwerke den Abschnitt 7, im TCP/IP-Skript den Abschnitt Verbindungsprüfung (Leseaufgabe!).
Aufgaben: Nr. 1-3
Mit tracert
(Unter Linux: traceroute
) kann man Sherlock Holmes spielen, ich zitiere aus der Red-Hat-Linux-Dokumentation: tracert "zeigt die von IP-Paketen verwendete Strecke auf ihrem Weg zu einem bestimmten Netzwerk- (oder Internet-)Computer an. Angezeigt werden IP-Adressen und Name (sofern möglich) des Computers zusammen mit der von den Paketen zurückgelegten Strecke. Das Programm wird als Netzwerkfehlersuchtool verwendet." Beispiel:
tracert www.wspiegel.de
TTL (Time To Live) bezieht sich auf die Anzahl der Stationen auf dem Weg durchs Netz, bei jedem Computer wird der Zähler TTL um eins vermindert, und ist man bei 0 (Null!) angekommen, dann "stirbt" das Paket, es wird also nicht mehr weiter geleitet.
Lesetipp: Siehe oben unter ping
und die Leseaufgabe!.
Aufgaben: Nr. 1-3
<<<Ports kann man sich als Zugangspunkte für eine Netzwerk-Verbindung vorstellen: Dadurch kann man auf einer TCP/IP-Verbindung mehere Anwendungen laufen lassen, Beispiel: ftp benutzt den Port 21. Die Nummern 0 bis 1023 sind für die häufigsten Dienste reserviert (Beispiel: http, telnet). Zu den Port-Nummern gibt es ein RFC - Assigned Numbers, das aber obsolet (veraltet!) ist und ersetzt wurde durch RFC 3232 ("RFC 1700 is Replaced by an On-line Database"). Man kann Ports als Steckdosen betrachten, übersetzt: Sockets. Der Verbindungsaufbau zu einem Port entspricht dann dem Einstecken! Es gibt hierfür die sogenannte Berkeley Socket-Library, die diverse Funktionen zum Umgang mit Sockets bereitstellt. Wichtig sind für uns erst mal folgende vier Funktionen: connect
, close
, send
und receive
.
connect(address)
: "Connect to a remote socket at address."
close()
: "Close the socket."
send(string)
: "Send data to the socket." Wir benutzen später den sendall(string)
-Befehl, der dafür sorgt dass auch alle Daten des strings
gesendet werden. send(string)
gibt statt dessen die Anzahl der gesendeten Bytes zurück, und unser Python-Skript müsste kontrollieren, ob auch wirklich alle Daten gesendet wurden!
recv(bufsize)
: "Receive data from the socket."
Die Erklärung kommt aus der englischen Python-Dokumentation! Ein einfacher TCP-Client sieht so aus:
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 hier folgt ein Demo-Lauf in IDLE:
Verbunden mit dem TCP-Server! Gesendet: Hier der einfache Client! Antwort: Echo <Hier der einfache Client!> von ('127.0.0.1', 3186) Eingabe: Hallo Gesendet: Hallo Antwort: Echo <Hallo> von ('127.0.0.1', 3186) Eingabe: Was geht ab? Gesendet: Was geht ab? Antwort: Echo <Was geht ab?> von ('127.0.0.1', 3186) Eingabe: Das wars Gesendet: Das wars Antwort: Echo <Das wars> von ('127.0.0.1', 3186) Eingabe: Das wars . . .
Zu dem TCP-Client benötigen wir noch einen TCP-Server, der die Anfragen bearbeitet: siehe das Skript simpleTCPServer.py
.
Aufruf dieses Skriptes (auf keinen Fall in IDLE ausführen!!!) in der Windows-Kommandozeile: pfad_zu_python\python.exe simpleTCPServer.py
.
Beenden dieses Skriptes in der Kommandozeile: mit Strg
+Pause|Untbr
(Taste ist rechts oben)
findest du auf dem Web-Server "muenchen" Adresse 192.168.0.33 unter Lokal => Informatik (W. Spiegel) => Netzwerk
simpleTCPServer.py
www.wspiegel.de
? ____________________________ping
und tracert
auch mit dieser IP-Adresse!
tracert
im Vergleich: Vergleiche die Anzahl der Rechnerknoten von www.wspiegel.de
mit www.google.com
. Warum taucht auf einmal Amsterdam als Rechnerknoten auf? ___________________________
muenchen
heraus, und probiere einen DoS (=Denial of Service). Falls gar nichts klappt, probiere es hier.
simpleTCPServer.py
vom Webserver und bringe den zugehörigen Client zum Laufen.