Verteilte Systeme - Universität Trier

Werbung
Vorlesung "Verteilte Systeme"
Winter 2002
Verteilte Systeme
3. Protokollfamilie TCP/IP
Einordnung in OSIOSI-Modell
Internet-Protokolle:
FTP, TELNET, SMTP, DNS, NSP, NTP, HTTP, ...
RPC-Protokolle
Ebene 4-7
PVM, MPI, Corba, ...
UDP
Ebene 3
Ebene 1-2
Verteilte Systeme, Winter 2002/03
(c) Peter Sturm, Universität Trier
TCP
IP / ICMP / ARP / RARP / (Routingprotokolle)
IEEE 802.X
X.25
Folie 3.2
1
Vorlesung "Verteilte Systeme"
Winter 2002
IPIP-Adressen (IPv4)
I
Class A: 27-2 Netze mit jeweils bis zu 224-2 Rechnern
0
I
netid(7)
Class B: 214-2 Netze mit jeweils bis zu 216-2 Rechnern
1 0
I
hostid(24)
netid(14)
hostid(16)
Class C: 221-2 Netze mit jeweils bis zu 28-2 Rechnern
1 1 0
Bit 1
netid(21)
8
hostid(8)
16
24
Verteilte Systeme, Winter 2002/03
Bit 32
Folie 3.3
IPIP-Adressen (cont.)
I
Schreibweise: „Dotted Decimal“
10001000
11000111
00110110
11010010
= 136.199.54.210
Ist ein Class XI
X-Netz?
Netzanteil?
I
Hostanteil?
I
I
Symbolische Namen
– 131.199.54.210 = balvenie.unibalvenie.uni-trier.de
– Über verteilte „Datenbank“ (DNS, NSP, LADP, ...)
I
IPIP-Netadresse
– Hostanteil ist 0
Verteilte Systeme, Winter 2002/03
(c) Peter Sturm, Universität Trier
Folie 3.4
2
Vorlesung "Verteilte Systeme"
Winter 2002
MulticastMulticast- und BroadcastBroadcast-Adressen
I
Multicast
1 1 1 0
Bit 1
Multicast address(28)
8
16
24
Bit 32
– Direkte Abbildung bei MulticastMulticast-fähigen Netzen
– FloodingFlooding-Algorithmen sonst
– Beispiel: Mbone
Tunneln bei UnicastI
Unicast-Strecken
I
Verwaltung der MulticastMulticast-Gruppen
– IGMP = Internet Group Management Protocol
I
Broadcast
– Nur innerhalb eines Netzes
– Hostanteil alles 1
Verteilte Systeme, Winter 2002/03
Folie 3.5
Subnetze
I
Maximale Rechnernanzahl in ClassClass-A- und ClassClass-B-Netzen für ein
Netz (z.B. Ethernet) zu groß
– Class A: 16.777.214 Rechner
– Class B: 65.534 Rechner
I
Unterteilung in Unternetze
1 0
netid(14)
1 0
netid(14)
Bit 1
I
8
hostid(16)
subnetid(8)
16
hostid(8)
24
Bit 32
Netzmaske definiert Grenze zwischen Subnetz und Hostanteil
Verteilte Systeme, Winter 2002/03
(c) Peter Sturm, Universität Trier
Folie 3.6
3
Vorlesung "Verteilte Systeme"
Winter 2002
ARP und RARP
I
Host A
ARP = Address Resolution Protocol
– Ermittlung einer Netzwerkadresse
im gleichem Netz
Gegeben IA
I
I
Gesucht NA
– Voraussetzung BroadcastBroadcast-fähiges
Netz
I
Bei dedizierten Leitungen
Konfigurationssache
Host B
ARPQ(IAA)
ARPR(IAA,NAA)
I
RARP = Reverse ARP
– Gegeben NA, Gesucht IA
– Diskless Clients
Verteilte Systeme, Winter 2002/03
Folie 3.7
Version
IPIP-Protokoll (IPv4)
Header Length
Type of service
v
hl
tos
identification
Time to live
protocol
Total Length
f
Fragment offset(13)
Header checksum
source address
destination address
I
20 Byte Header
I
Maximale Größe IPIP-Datagramm: 64 Kbyte inkl. Header
I
Type of Service (tos)
– Hohe Zuverlässigkeit, Hoher Durchsatz, Geringe Latenz, Prioritäten
Prioritäten
I
Fragmentierung
– Identifikation zusammengehörender Fragmente
– Offset des Fragments im IPIP-Datagramm
I
TimeTime-toto-live
– HopHop-Count; wird von Routern dekrementiert
Verteilte Systeme, Winter 2002/03
(c) Peter Sturm, Universität Trier
Folie 3.8
4
Vorlesung "Verteilte Systeme"
Winter 2002
Aufgaben der IPIP-Netzwerkebene
I
Übertragung von
IPIP-Datagrammen
– Routing
– Fragmentierung und Assembly
I
Netzverwaltung und Melden
von Fehlern
Application
Layer
Ebene 4-7
– ICMP
TCP
UDP
IP / ICMP
IEEE 802.X
X.25
Verteilte Systeme, Winter 2002/03
Ebene 3
Ebene 1-2
Folie 3.9
IP: Routing
I
„Normale“ Rechner
– Empfänger im selben Netz
ARP falls notwendig
I
Direkt Senden
I
– Empfänger in anderem Netz
Nachricht an
I
„Default Router“
I
Router
– Routingtabelle durchsuchen
HostI
Host-Match
NetworkI
Network-Match
Default Router
I
– An ermittelte NA weiterleiten
– „Routing Mechanism“
I
Host
Netz
sonst
Forward-NA
Forward-NA
Forward-NA
Routing Policy meist durch zusätzliche
Protokolle (Applikationsebene)
Verteilte Systeme, Winter 2002/03
(c) Peter Sturm, Universität Trier
Folie 3.10
5
Vorlesung "Verteilte Systeme"
Winter 2002
RoutingRouting-Protokolle
I
Autonome Systeme (AS)
– Verwaltungseinheiten
I
R2
X
R1
– DistanzvektorDistanzvektor-basiert
RIP (Routing Information
I
Protocol)
RIPI
RIP-2
– LinkLink-statestate-basiert
OSPF
I
(Open Shortest Path First)
Y
E
Z
AS
Interior Gateway Protocols
Transit AS
Multihomed
AS
I
– EGP
– BGP
(Border Gateway Protocol)
I
AS
Exterior Gateway Protocols
Größe der Routingtabellen
Stub AS
– CIDR
(Classless Interdomain Routing)
Verteilte Systeme, Winter 2002/03
Folie 3.11
IP: Fragmentierung und Assembly
I
IntranetIntranet-Fragmentierung
– An jedem Hop Assembly und
anschließende Fragmentierung für
ausgehende MTU
– Vorteil: Nutzung volle MTU
– Nachteil: Zusätzliche Kosten
– Problem: Fragmentverluste
I
InternetInternet-Fragmentierung
– Nur Fragmentierung an Hops mit kleiner
werdender MTU
– VorVor- und Nachteile?
I
Netz 1
F3
F2
F1
Router
MTUMTU-PathPath-Discovery
– Kleinste MTU auf dem Weg zum
Empfänger bestimmen und entsprechend
fragmentieren
– Wann sinnvoll?
Verteilte Systeme, Winter 2002/03
(c) Peter Sturm, Universität Trier
Netz 2
Folie 3.12
6
Vorlesung "Verteilte Systeme"
Winter 2002
ICMP = Internet Control Message Protocol
I
I
Echo (Ping)
I
– request
– reply
Source Quench
I
Redirect
–
–
–
–
Destination Unreachable
–
–
–
–
–
–
–
–
–
–
–
network unreachable
host unreachable
protocol unreachable
port unreachable
fragmentation needed but
don´t fragment bit set
source route failed
destination network unknown
destination host unknown
destination administratively
prohibited
network/host unreachable for
TOS
...
I
redirect for network
redirect for host
redirect for TOS and network
redirect for TOS and host
Router
– advertisement
– solicitation
I
Time exceeded
I
Anfragen
– timestamp request
– information request
– address mask request
Verteilte Systeme, Winter 2002/03
Folie 3.13
UDP
I
Source port
Destination port
UDP length
UDP checksum
UDP = User Datagram Protocol
– EndEnd-toto-EndEnd-Version von IP (Portnummer)
I
BestBest-Effort
– Nachrichtenverluste
– Keine Ordnung
– Keine Flußkontrolle
I
8 Byte Header
I
Maximale DatagrammDatagramm-Länge: 64 Kbyte inkl. Header
I
UDPUDP-Multicast möglich
– Angabe einer MulticastMulticast-IPIP-Adresse als Empfänger
– Meist von Sysadmins ausgeschaltet
Verteilte Systeme, Winter 2002/03
(c) Peter Sturm, Universität Trier
Folie 3.14
7
Vorlesung "Verteilte Systeme"
Winter 2002
TCP
source port
destination port
Sequence number
hl
flags
checksum
I
TCP = Transmission Control Protocol
I
Reliable Stream
Window size
Urgent pointer
– Verbindungsorientiert
– Flußkontrolle (Sliding(Sliding-Window)
– Duplex
I
Segmente
– Maximale Datenmenge die in einem Schritt übertragen wird
– Maximale Segmentgröße (MSS) „handeln“ Sender und Empfänger
aus
Verteilte Systeme, Winter 2002/03
Folie 3.15
Socketschnittstelle in UNIX
I
Socket = Kommunikationsendpunkt (Ebene 4)
I
UDPUDP- oder TCPTCP-Adresse:
struct sockaddr_in {
u_short sin_family;
u_short sin_port;
u_long sin_addr;
}
I
I
I
sin_family = Protokollfamilie (TCP/IP = PF_INET)
I
sin_addr = IPIP-Adresse
I
sin_port = Portnummer
Erzeugen und Schließen von Sockets vergleichbar
Dateideskriptor
Zugriffsfunktionen
– UDP: sendto und recvfrom
– TCP: Einbettung in Dateischnittstelle (read und write)
Verteilte Systeme, Winter 2002/03
(c) Peter Sturm, Universität Trier
Folie 3.16
8
Vorlesung "Verteilte Systeme"
Winter 2002
Sockets erzeugen und schließen
I
Erzeugung:
int sock;
sock = socket (PF_INET, service, 0);
I
UDP: service = SOCK_DGRAM
TCP: service = SOCK_STREAM
I
– Es wird noch keine Portnummer vergeben
I
Schließen:
Schließen:
close (sock);
Verteilte Systeme, Winter 2002/03
Folie 3.17
Portnummer zuweisen
I
Funktion bind:
int bind (
int socket,
sockaddr_in *addr,
int addr_len
)
I
IA: 16
NA: 1
Host
IA: 15
NA: 7
Aufrufvarianten
– Portnummer:
Transient: port = 0
I
I
Fest (z.B. ftpftp-Server TCPTCP-Port 21): port = <Portnummer>
– NetzNetz-Interface:
I
Bestimmtes Interface: sin_addr = <IP<IP-Adresse>
I
An allen angeschlossenen Interfaces: sin_addr = INADDR_ANY
I
Zahlen müssen
müssen im Netzwerkstandard angegeben werden
– Konvertierungsroutinen: htonl, htons, ...
Verteilte Systeme, Winter 2002/03
(c) Peter Sturm, Universität Trier
Folie 3.18
9
Vorlesung "Verteilte Systeme"
Winter 2002
Beispiel: TCPTCP-Port 21 erzeugen
int s;
struct sockaddr_in saddr;
int ret;
s = socket(AF_INET,SOCK_STREAM,0);
bzero(&saddr,sizeof saddr);
saddr.sin_family = AF_INET;
saddr.sin_addr.s_addr = INADDR_ANY;
saddr.sin_port = htons(21);
ret = bind(s,&saddr,sizeof(saddr));
assert(ret != -1);
...
Verteilte Systeme, Winter 2002/03
Folie 3.19
UDPUDP-basierte Kommunikation
I
Senden eines Datagramms:
retcode = sendto (
int socket,
char *msg, int msg_len,
int flags,
sockaddr_in *recv, int recv_len
)
I
Empfangen eines Datagramms:
rectcode = recvfrom (
int socket,
char *msgbuf, int msgbuf_len,
int flags,
sockaddr_in *sender, int *sender_len
)
I
Rückgabewert ist die tatsächliche Datagrammlänge
Verteilte Systeme, Winter 2002/03
(c) Peter Sturm, Universität Trier
Folie 3.20
10
Vorlesung "Verteilte Systeme"
Winter 2002
TCPTCP-basierte Kommunikation
I
I
Asymmetrischer
Verbindungsaufbau
Server
Client
Server
Client
Server
Passive Seite (Server):
1. Socket erzeugen
2. Socket an Portnummer binden
3. Initialisierung der
Verbindungsannahme (listen)
4. Auf Verbindungswunsch warten
(accept)
I
Client
Aktive Seite (Client):
1. Socket erzeugen
2. Server ermitteln (IP(IP-Adresse,
Portnummer)
3. Verbindung aufbauen (connect)
Apparat 2
Verteilte Systeme, Winter 2002/03
Folie 3.21
Listen, Accept und Connect
ServerServer-Seite
I
Initialisierung des passiven
Wartens:
– retcode = listen (
int socket,
int queue_length
queue_length
)
Socket wird passiv
I
I
ClientClient-Seite
I
Verbindungswunsch herstellen:
– retcode = connect (
int socket,
sockaddr_in *server,
int server_len
)
Auf Verbindungswünsche
Verbindungswünsche
warten:
– retcode = accept (
int socket,
sockaddr_in *client,
int *client_len
)
Verteilte Systeme, Winter 2002/03
(c) Peter Sturm, Universität Trier
Folie 3.22
11
Vorlesung "Verteilte Systeme"
Winter 2002
Ablauf eines Verbindungsaufbaus
(1) Sockets erzeugen
Server
as
Client
cs
cs = socket(...,SOCK_STREAM,0);
socket(...,SOCK_STREAM,0);
as = socket(...,
socket(..., SOCK_STREAM,0);
Verteilte Systeme, Winter 2002/03
Folie 3.23
Ablauf eines Verbindungsaufbaus
(2) ServerServer-Adresse (Portnummer) festlegen
Server
Client
as
cs
cs = socket(...,SOCK_STREAM,0);
as = socket(..., SOCK_STREAM,0);
bind(as,server_port);
bind(as,server_port);
Verteilte Systeme, Winter 2002/03
(c) Peter Sturm, Universität Trier
Folie 3.24
12
Vorlesung "Verteilte Systeme"
Winter 2002
Ablauf eines Verbindungsaufbaus
(3) ServerServer-Socket wird passiv
Server
Client
as
cs
cs = socket(...,SOCK_STREAM,0);
as = socket(..., SOCK_STREAM,0);
bind(as,server_port);
listen(as,4);
listen(as,4);
Verteilte Systeme, Winter 2002/03
Folie 3.25
Ablauf eines Verbindungsaufbaus
(4) Verbindungswunsch des Clients
Server
Client
as
cs
cs = socket(...,SOCK_STREAM,0);
as = socket(..., SOCK_STREAM,0);
bind(as,server_port);
listen(as,4);
connect(cs,server(host,port));
connect(cs,server(host,port));
Verteilte Systeme, Winter 2002/03
(c) Peter Sturm, Universität Trier
Folie 3.26
13
Vorlesung "Verteilte Systeme"
Winter 2002
Ablauf eines Verbindungsaufbaus
(5) Server akzeptiert
akzeptiert Verbindungswunsch
Server
ns
Client
as
cs
cs = socket(...,SOCK_STREAM,0);
as = socket(..., SOCK_STREAM,0);
bind(as,server_port);
listen(as,4);
connect(cs,server(host,port));
ns = accept(ss,...);
accept(ss,...);
Verteilte Systeme, Winter 2002/03
Folie 3.27
Ablauf eines Verbindungsaufbaus
(6) Datenübertragung
Datenübertragung
Server
ns
Client
as
cs
cs = socket(...,SOCK_STREAM,0);
socket(...,SOCK_STREAM,0);
as = socket(...,
socket(..., SOCK_STREAM,0);
bind(as,server_port);
bind(as,server_port);
listen(as,4);
listen(as,4);
connect(cs,server(host,port));
connect(cs,server(host,port));
ns = accept(ss,...);
accept(ss,...);
write(cs,...);
write(cs,...);
write(cs,...);
write(cs,...);
read(ns,...);
read(ns,...);
Verteilte Systeme, Winter 2002/03
(c) Peter Sturm, Universität Trier
Folie 3.28
14
Vorlesung "Verteilte Systeme"
Winter 2002
NichtNicht-selektives Warten
I
Auf verschiedene Ereignisse blockierend Warten
– EmpfangsEmpfangs- und sendebereite Sockets
– LeseLese- und schreibbereite Dateien
I
Funktion select:
select:
as2
int sock1, sock2;
sock2;
fd_set fds;
sock1 = socket(...);
s4
sock2 = socket(...);
FD_ZERO(&fds);
FD_SET(sock1,&fds);
FD_SET(sock2,&fds);
ret = select(FD_SETSIZE,&fds,...,timeout);
select(FD_SETSIZE,&fds,...,timeout);
...
if (FD_ISSET(sock1,&fds) { ... };
I
s1
as1
Client
s2
s3
Zugegeben, die Funktion ist etwas komplex ::-)
Verteilte Systeme, Winter 2002/03
Folie 3.29
Windows und TCP/IP
I
Aller Anfang ist schwer
I
Seit Windows 95 winsock
– Explizite Initialisierung des ProtokollProtokoll-Stacks
– Alle gängigen Funktionen anschließend verfügbar
I
Ab .NET
– Klassen im .NET Framework
Direkter Zugriff auf SocketI
Socket-Klassen
Cooked: TcpClient, TcpListener, …
I
– Wegen CLR in allen „managed“ Sprachen verfügbar
– Winsock weiterhin vorhanden
I
Beispiel?
Verteilte Systeme, Winter 2002/03
(c) Peter Sturm, Universität Trier
Folie 3.30
15
Vorlesung "Verteilte Systeme"
Winter 2002
FTP
I
File Transfer Protocol
– TCPTCP-basierte Kommunikation, Port 21
– Unterstützt beschränkte Menge an Dateitypen (ASCII, Binär, ...)
und Dateistrukturen (Byte Stream, Records)
I
Zwei TCPTCP-Verbindungen
– Kontrollverbindung
FTPI
FTP-Server passiv
FTPI
FTP-Client aktiv
– Datenverbindung
I
Client öffnet passiven Socket
IPI
IP-Adresse und Portnummer wird
über die Kontrollverbindung an
Server übertragen
Server stellt Verbindung her
I
Client
1174
1173
Control
Data
20
Verteilte Systeme, Winter 2002/03
21
Server
Folie 3.31
Literatur
I
D.E. Comer, D.L. Stevens
Internetworking with TCP/IP, Volume II-III
PrenticePrentice-Hall, 1993
I
W. Stevens
TCP/IP Illustrated, Volume 1: The Protocols (1994)
TCP/IP Illustrated, Volume 3: T/TCP, HTTP, ... (1996)
AddisonAddison-Wesley
I
G. Wright, W. Stevens
TCP/IP Illustrated, Volume 2: The Implementation
AddisonAddison-Wesley, 1995
Verteilte Systeme, Winter 2002/03
(c) Peter Sturm, Universität Trier
Folie 3.32
16
Herunterladen