Netzwerke - Uni Bielefeld

Werbung
Netzwerk-Programmierung
Netzwerke
Sven Hartmeier
Arne Hauenschild
{shartmei,ahauensc}@TechFak.Uni-Bielefeld.DE
Übersicht
• Netzwerk-Protokolle
• Protokollfamilie TCP/IP
• Transmission Control Protocol (TCP)
• erste Schritte mit sockets
Netzwerk-Programmierung
Netzwerke
2/19
vernetzte Rechner
• Problem:
– versende Daten von Rechner A zu Rechner B
– A und B sind (indirekt) durch Netzwerk(e) verbunden
• Möglichkeiten:
– ein Protokoll für alles
– Familie von spezialisierten Protokollen, die aufeinander
aufbauen
Netzwerk-Programmierung
Netzwerke
3/19
Netzwerk-Schichten
Netzwerk-Programmierung
application
telnet, SMTP, HTTP
transport
TCP, UDP
network
IP, ICMP
link
Ethernet, ARP/RARP
Netzwerke
4/19
link layer
• modelliert physikalische Verbindung
• Hardware-Adressen
• Daten in Frames
• empfindlich gegenüber Störungen
• Prüfsummen
• Beispiel: Ethernet, PPP, . . .
Netzwerk-Programmierung
Netzwerke
5/19
network layer
• modelliert Verknüpfung von mehreren Netzwerken
• Packets innerhalb von Frames
• connectionless, unreliable, best effort
• routing
• eigener Adressraum
• Beispiel: Internet Protocol (IP)
• Domain Name System (DNS) für lesbare“ Adressen
”
Netzwerk-Programmierung
Netzwerke
6/19
transport layer
• demultiplexing, Port-Nummern
• well known ports, /etc/services
• User Datagram Protocol (UDP):
– ähnlich zu IP: Datagramme, connectionless, unreliable
• Transmission Control Protocol (TCP):
– Datenstrom
–
Verbindung“
”
– Zuverlässigkeit durch Quittierverfahren
– flow control, congestion avoidance
Netzwerk-Programmierung
Netzwerke
7/19
application layer
• nutzt transport layer
• TCP oder UDP hängt von Problemstellung ab
• Programmierschnittstellen:
– Berkeley sockets
– X/Open Transport Interface
– ...
Netzwerk-Programmierung
Netzwerke
8/19
encapsulation
Ethernet header
Netzwerk-Programmierung
IP header
TCP header
application header
Netzwerke
user data
Ethernet trailer
9/19
Kommunikation zwischen Schichten
Rechner 1
application
transport
TCP
network
IP
link
Netzwerk-Programmierung
ftp
Ethernet
Rechner 2
ftp-Protokoll
TCP-Protokoll
IP-Protokoll
Ethernet-Protokoll
Netzwerke
ftp
TCP
IP
Ethernet
10/19
Routing
Rechner 1
application
transport
Rechner 2
ftp-Protokoll
ftp
ftp
TCP-Protokoll
TCP
TCP
Router
network
link
Netzwerk-Programmierung
IP
Ethernet
IP-Protokoll
IP-Protokoll
IP
Ethernet-Protokoll
Token Ring-Protokoll
Ethernet
Token Ring
Netzwerke
IP
Token Ring
11/19
Transmission Control Protocol
• Bestätigung von empfangenen Paketen
• erneuter Versand von verlorenen Paketen
• sequence numbers
data
data
ACK
ACK
data
data
ACK
Netzwerk-Programmierung
Netzwerke
12/19
Verbindungsaufbau
CLOSED
passive open
SYN
active open
SYN + A
LISTEN
CK
ACK
SYN RCVD
SYN SENT
ESTABLISHED
Netzwerk-Programmierung
Netzwerke
13/19
Verbindungsabbau
FIN
ACK
FIN
CLOSED
ACK
ESTABLISHED
CLOSE WAIT
FIN WAIT 1
CLOSING
LAST ACK
FIN WAIT 2
TIME WAIT
Netzwerk-Programmierung
Netzwerke
14/19
TCP verwenden
• Verbindung durch socket pair identifiziert:
(IP-AdresseL , PortL , IP-AdresseR , PortR )
• Verbindungsdaten anzeigen:
$ netstat -f inet | more
...
asien.1011 vino.TF.login
24820 0 49640 0 ESTABLISHED
asien.48353 www-proxy.TF.www 24820 0 49640 0 CLOSE_WAIT
asien.ssh
sangay.TF.40441 64128 0 49232 0 ESTABLISHED
...
(TF = TechFak.Uni-Bielefeld.DE)
Netzwerk-Programmierung
Netzwerke
15/19
Aufgaben
• Erzeuge eine rlogin-Verbindungen zu einem Rechner (z.B. von
asien nach australien). Beobachte in zwei verschiedenen xterms
(jeweils eines auf dem jeweiligen Rechner) die Ausgabe von
netstat. Welche Einträge kommen neu hinzu?
Tip: Der service heißt login“
”
• Schließe die rlogin-Verbindung wieder. Wie verändert sich die
Ausgabe von netstat?
Netzwerk-Programmierung
Netzwerke
16/19
Aufgaben
• Die Skripte server.pl und client.pl befinden sich im Archiv
uebung4.tar.gz. (Auspacken kannst Du dieses Archiv nach
dem Download mit dem Kommando tar xvf
uebung4.tar.gz)
Bei den nachfolgenden Aufgaben brauchst Du drei xterms, um alle
Programme starten zu können.
• Starte den Server. Du mußt dabei eine Portnummer angeben:
$ server.pl 54321
• Sieh Dir den Zustand des Servers an:
$ netstat -a | grep 54321
Netzwerk-Programmierung
Netzwerke
17/19
Aufgaben, cont.
• Laß den Client Daten vom Server lesen:
$ client.pl 54321
Benutze währenddessen netstat, um die Verbindung zu
untersuchen.
• Rufe den Client zwei weitere Male auf. Was ändert sich bei jedem
Aufruf?
• Rufe den Client mit einer festen Portnummer auf:
$ client.pl 54321 55443
Wiederhole auch diesen Aufruf zweimal.
Netzwerk-Programmierung
Netzwerke
18/19
Aufgaben, cont.
• Starte mehrere Clients gleichzeitig:
client.pl 54321 &; client.pl 54321 &; client.pl 54321
Was ist zu beobachten?
• Starte zwei Clients mit der gleichen Portnummer gleichzeitig:
client.pl 54321 55443 &; client.pl 54321 55443
Was passiert?
• Beende den Server und versuche ihn sofort mit der gleichen
Portnummer neu zu starten. Was passiert?
• Was passiert, wenn Du den Client mit CTRL-C abbrichst, während
er Daten vom Server liest?
Netzwerk-Programmierung
Netzwerke
19/19
Zugehörige Unterlagen
Herunterladen