Netzwerkgrundlagen - ping

Unix spricht viele Netzwerkprotokolle. Wie inzwischen fast überall, ist aber das im Internet verwendete TCP/IP am beliebtesten und am verbreitetsten.

Die Kommuniktaion zwischen den Computern läuft über kleine Datenpakete, die von einem Computer zum anderen verschickt werden. Typischerweise sind diese kleinen Pakete einige 100 bis 1500 Bytes lang. Größere Datenstroeme werden aus mehreren Paketen zusammengesetzt.

Jedes der IP Pakete hat:

* eine Empfängeraddresse (anhand dieser findet das Paket im Netz sein ziel)

* eine Absenderaddresse (anhand dieser weiss der Empfänger wem er eine Antwort auf das Paket schicken soll)

Die beiden Addressen sind im normalen Internet 4 bytes (32 bit) lang und werden per Konvention in 4 durch 3 Punkte getrennten Dezimalzahlen geschrieben. z.b.:

198.182.196.56

* die Länge des Pakets

* Einige zusätzliche technische Informationen...

In diese IP Pakete hinein werden dann Datenpakete gepackt. Und zwar folgendermaßen:

* TCP (transmission control protocol) Pakete: Für Verbindungen, die sich nicht für die Pakete interessieren, sondern nur einen kontinuierlichen Datenstrom benötigen. (Z.B. eine ssh oder telnet Verbindung) (TCP Pakete sind z.b. durchnummeriert und das Betriebsystem (in unserem Fall Unix) kümmert sich darum, dass falls ein Paket verloren geht, dass es neu gesendet wird, etc..etc.. Der Benutzer von TCP muss sich also nicht um die Details des Netzwerks kümmern...)

* UDP (user datagram protocol) Paket: Wo noch jedes Paket einzeln gesendet und epfangen werden kann. Wer UDP-Pakete benutzt, muss damit rechnen, dass seine Pakete eventuell auf dem Weg vom Sender zum Empfänger verloren gehen, oder nicht in der selben Reihenfolge ankommen in der sie gesendet wurden etc.. Dafür hat man aber einen etwas direkteren Zugang zum Netz.

* ICMP (internet control message protocol). Diese Pakete dienen dem Netz selbst als Information. Es gibt z.B. ICMP-Pakete, die Stau auf der Datenautobahn melden. Für dich praktisch nützlich ist das ICMP echo Paket, dass den Empfänger auffordert, mit einem ICMP-Reply-Paket zu antworten. Das macht der ping Befehl:

Kapitän: "Geben sie mir ein Ping!"

Der Name "ping" kommt aus dem Sonarjargon. Ein kurzer Ultrashallimpuls, der ausgesendet wurde, um andere U-Boote zu orten.. (die diesen Ton
reflektierten..)

ping schickt ein kurzes Netzwerkpaket zu einem anderen Computer im Internet, und der sollte das wieder retour schicken. Und dann kann man die Zeit messen, wie lange es gebraucht hat (oder ob es überhaupt retour gekommen ist). Üblicherweise schaut man damit, ob sein eigenes Netzwerk funktioniert, und ob man andere Computer erreichen kann.

Insofern ist der ping-Befehl vorallem dann nützlich, wenn mal was mit dem Netzwerk nicht funktioniert, und man rausfinden will was.

z.B.:

ping 194.152.178.12

Ausgabe:

PING bozo.sil.at (194.152.178.12): 56 data bytes
64 bytes from 194.152.178.12: icmp_seq=0 ttl=59 time=11.9 ms
64 bytes from 194.152.178.12: icmp_seq=1 ttl=59 time=4.5 ms
64 bytes from 194.152.178.12: icmp_seq=2 ttl=59 time=4.5 ms
64 bytes from 194.152.178.12: icmp_seq=3 ttl=59 time=4.5 ms

--- bozo.sil.at ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 4.5/6.3/11.9 ms


Die ausgesendeten Pakete sind durchnummeriert, da sieht man gleich ob welche verloren gehen. Die Zeit gibt an, wieviele Millisekunden das Paket vom Aussenden bis zum Empfangen gebraucht hat. (Im obigen Fall durchschnittlich 6.3 ms. Auf großen Entfernungen oder langsamen Strecken können schon mal einige 100ms oder 1000 ms zusammenkommen (1000 ms = 1
Sekunde).

Aus dem ttl-wert (time to life) kann man sehen, wieviel Computer (Router) zwischen uns sind. Dabei hängt es davon ab, mit welchem Startwert der andere Computer die Pakete wegschickt. 256, 128 oder 64 im obigen Beispiel. Es waren 5 Computer zwischen meinem derzeitigen Standort und dem www.sil.at (diese Zwischenstationen werden auch "hops" (singular: hop) genannt.)

Falls du hinter einer Firewall sitzt, geht ping eventuell nicht, weil deine Firewall keine pings durchlässt.

Anstatt einer IP Adresse in Form der 4 mit 3 Punkten getrennten Zahlen
kannst du auch einen Namen verwenden. z.b.:

ping www.sil.at

wäre das selbe. Wenn du mal irgendwo bist, wo zwar Nummern pingen funktioniert, aber Namen nicht, dann funktioniert die Namensaufloesung (DNS) nicht. Da sollte man dann z.b. ins /etc/resolv.conf schauen, ob nicht ein falscher Nameserver eingetragen ist. Über die Umsetzung von Namen wie www.sil.at">http://www.sil.at/">www.sil.at in Nummern wie 194.152.178.12 und umgekehrt lernen wir später noch genauer...

Nützliche Optionen beim ping Befehl:

-c 20 verschickt genau 20 Pakete und beendet sich dann, ohne, dass man es mit Control-c abbrechen muss.

-l 1000 verschickt Pakete mit einer Länge von 1000B (das darf normalerweise nur root)

-f flood ping. Schickt soviele ping-Pakete wie möglich. Darf normalerweise auch nur root. VORSICHT: -f sollte man nur verwenden, wenn man genau weiß was man tut. Man kann sich sonst BETRAECHTLICHEN ÄRGER mit den Netzwerkbetreuern einheimsen..


EXERCISES:

Verwende den ping Befehl um die Entfernung (gemessen in hops und in zeitlicher Verzögerung (Millisekunden)) zu messen. Welche numerische IP Adressen haben diese Websites?


REFERENCES:

http://www.cisco.com/univercd/cc/td/doc/cisintwk/ito_doc/ip.htm
http://www.shofar.uklinux.net/NELUG/resources/internet_protocols.html

IP: http://ietf.org/rfc/rfc791.txt
TCP: http://ietf.org/rfc/rfc793.txt
UDP: http://ietf.org/rfc/rfc768.txt
http://www.protocols.com/pbook/tcpip.htm
man ping

http://ftp.arl.mil/~mike/ping.html
http://www.ping127001.com/pingpage.htm