Verteilte Systeme

Werbung
Vorlesung "Verteilte Systeme"
Wintersemester 2000/2001
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
IP / ICMP / ARP / RARP / (Routingprotokolle)
Ebene 1-2
Verteilte Systeme, Wintersemester 2000/2001
(c) Peter Sturm, Universität Trier
TCP
IEEE 802.X
X.25
Folie 3.2
1
Vorlesung "Verteilte Systeme"
Wintersemester 2000/2001
IPIP-Adressen (IPv4)
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, Wintersemester 2000/2001
Bit 32
Folie 3.3
IPIP-Adressen (cont.)
cont.)
I
Schreibweise: „Dotted
„Dotted Decimal“
Decimal“
10001000
11000111
00110110
11010010
= 136.199.54.210
Ist ein Class X-Netz?
I
I
Netzanteil?
I
Hostanteil?
I
Symbolische Namen
– 131.199.54.210 = balvenie.unibalvenie.uni-trier.de
– Über verteilte „Datenbank“ (DNS, NSP,
NSP, LADP,
LADP, ...)
I
IPIP-Netadresse
– Hostanteil ist 0
Verteilte Systeme, Wintersemester 2000/2001
(c) Peter Sturm, Universität Trier
Folie 3.4
2
Vorlesung "Verteilte Systeme"
Wintersemester 2000/2001
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, Wintersemester 2000/2001
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, Wintersemester 2000/2001
(c) Peter Sturm, Universität Trier
Folie 3.6
3
Vorlesung "Verteilte Systeme"
Wintersemester 2000/2001
ARP und RARP
I
Host A
ARP = Address Resolution Protocol
– Ermittlung einer Netzwerkadresse
im gleichem Netz
Gegeben IA
I
Gesucht NA
I
– Voraussetzung BroadcastBroadcast-fähiges
Netz
Bei dedizierten Leitungen
I
Konfigurationssache
Host B
ARPQ(IAA)
ARPR(IAA,NAA)
I
RARP = Reverse ARP
– Gegeben NA, Gesucht IA
– Diskless Clients
Verteilte Systeme, Wintersemester 2000/2001
Folie 3.7
Version
IPIP-Protokoll (IPv4)
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:
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;
Count; wird von Routern dekrementiert
Verteilte Systeme, Wintersemester 2000/2001
(c) Peter Sturm, Universität Trier
Folie 3.8
4
Vorlesung "Verteilte Systeme"
Wintersemester 2000/2001
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, Wintersemester 2000/2001
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“
Router“
I
Router
– Routingtabelle durchsuchen
HostI
Host-Match
NetworkI
Network-Match
Default Router
I
– An ermittelte NA weiterleiten
– „Routing Mechanism“
Mechanism“
I
Host
Netz
sonst
Forward-NA
Forward-NA
Forward-NA
Routing Policy meist durch zusätzliche
Protokolle (Applikationsebene)
Verteilte Systeme, Wintersemester 2000/2001
(c) Peter Sturm, Universität Trier
Folie 3.10
5
Vorlesung "Verteilte Systeme"
Wintersemester 2000/2001
RoutingRouting-Protokolle
I
Autonome Systeme (AS)
– Verwaltungseinheiten
I
R2
X
R1
– DistanzvektorDistanzvektor-basiert
RIP (Routing Information
I
Protocol)
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)
Protocol)
I
AS
Exterior Gateway Protocols
Größe der Routingtabellen
Stub AS
– CIDR
(Classless Interdomain Routing)
Routing)
Verteilte Systeme, Wintersemester 2000/2001
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, Wintersemester 2000/2001
(c) Peter Sturm, Universität Trier
Netz 2
Folie 3.12
6
Vorlesung "Verteilte Systeme"
Wintersemester 2000/2001
ICMP = Internet Control Message Protocol
I
I
Echo (Ping
(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/
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, Wintersemester 2000/2001
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:
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, Wintersemester 2000/2001
(c) Peter Sturm, Universität Trier
Folie 3.14
7
Vorlesung "Verteilte Systeme"
Wintersemester 2000/2001
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 (SlidingSliding-Window)
Window)
– Duplex
I
Segmente
– Maximale Datenmenge die in einem Schritt übertragen wird
– Maximale Segmentgröße (MSS
(MSS)) „handeln“ Sender und Empfänger
aus
Verteilte Systeme, Wintersemester 2000/2001
Folie 3.15
Socketschnittstelle in UNIX
I
Socket = Kommunikationsendpunkt (Ebene 4)
I
UDPUDP- oder TCPTCP-Adresse:
Adresse:
struct sockaddr_in {
u_short sin_family;
sin_family;
u_short sin_port;
sin_port;
u_long sin_addr;
sin_addr;
}
I
I
I
sin_family = Protokollfamilie (TCP
(TCP//IP = PF_INET)
I
sin_addr = IPIP-Adresse
I
sin_port = Portnummer
Erzeugen und Schließen von Sockets vergleichbar
Dateideskriptor
Zugriffsfunktionen
– UDP:
UDP: sendto und recvfrom
– TCP:
TCP: Einbettung in Dateischnittstelle (read und write)
Verteilte Systeme, Wintersemester 2000/2001
(c) Peter Sturm, Universität Trier
Folie 3.16
8
Vorlesung "Verteilte Systeme"
Wintersemester 2000/2001
Sockets erzeugen und schließen
I
Erzeugung:
Erzeugung:
int sock;
sock = socket (PF_INET,
PF_INET, service, 0);
I
UDP:
UDP: service = SOCK_DGRAM
TCP: service = SOCK_STREAM
I
– Es wird noch keine Portnummer vergeben
I
Schließen
Schließen::
close (sock);
Verteilte Systeme, Wintersemester 2000/2001
Folie 3.17
Portnummer zuweisen
I
Funktion bind:
int bind (
int socket,
sockaddr_in *addr,
*addr,
int addr_len
)
I
IA: 16
NA: 1
Host
IA: 15
NA: 7
Aufrufvarianten
– Portnummer:
Portnummer:
Transient: port = 0
I
>
Fest (z.B.
I
<Portnummer>
z.B. ftpftp-Server TCPTCP-Port 21): port = <Portnummer
– NetzNetz-Interface:
Bestimmtes Interface: sin_addr = <IPI
<IP-Adresse>
Adresse>
I
An allen angeschlossenen Interfaces: sin_addr = INADDR_ANY
I
Zahlen müssen im Netzwerkstandard angegeben werden
– Konvertierungsroutinen:
Konvertierungsroutinen: htonl, htons, ...
Verteilte Systeme, Wintersemester 2000/2001
(c) Peter Sturm, Universität Trier
Folie 3.18
9
Vorlesung "Verteilte Systeme"
Wintersemester 2000/2001
Beispiel:
Beispiel: TCPTCP-Port 21 erzeugen
int s;
struct sockaddr_in saddr;
saddr;
int ret;
s = socket(AF_INET,SOCK_STREAM,0
);
socket(AF_INET,SOCK_STREAM,0);
bzero(
bzero(&saddr,sizeof saddr);
saddr);
saddr.sin_family = AF_INET;
AF_INET;
saddr.sin_addr.s_addr = INADDR_ANY;
INADDR_ANY;
saddr.sin_port = htons(21);
htons(21);
ret = bind(s,&saddr,sizeof
(saddr));
bind(s,&saddr,sizeof(
saddr));
assert(ret != -1);
...
Verteilte Systeme, Wintersemester 2000/2001
Folie 3.19
UDPUDP-basierte Kommunikation
I
Senden eines Datagramms:
Datagramms:
retcode = sendto (
int socket,
char *msg,
*msg, int msg_len,
msg_len,
int flags,
sockaddr_in *recv,
*recv, int recv_len
)
I
Empfangen eines Datagramms:
Datagramms:
rectcode = recvfrom (
int socket,
socket,
char *msgbuf,
msgbuf, int msgbuf_len,
msgbuf_len,
int flags,
flags,
sockaddr_in *sender,
sender, int *sender_len
)
I
Rückgabewert ist die tatsächliche Datagrammlänge
Verteilte Systeme, Wintersemester 2000/2001
(c) Peter Sturm, Universität Trier
Folie 3.20
10
Vorlesung "Verteilte Systeme"
Wintersemester 2000/2001
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,
Adresse,
Portnummer)
3. Verbindung aufbauen (connect)
Apparat 2
Verteilte Systeme, Wintersemester 2000/2001
Folie 3.21
Listen, Accept und Connect
ServerServer-Seite
I
Initialisierung des passiven
Wartens:
Wartens:
– retcode = listen (
int socket,
int queue_
queue_length
)
Socket wird passiv
I
I
ClientClient-Seite
I
Verbindungswunsch herstellen:
herstellen:
– retcode = connect (
int socket,
sockaddr_in *server,
*server,
int server_len
)
Auf Verbindungswünsche
Verbindungswünsche
warten:
– retcode = accept (
int socket,
sockaddr_in *client,
*client,
int *client_len
)
Verteilte Systeme, Wintersemester 2000/2001
(c) Peter Sturm, Universität Trier
Folie 3.22
11
Vorlesung "Verteilte Systeme"
Wintersemester 2000/2001
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);
SOCK_STREAM,0);
Verteilte Systeme, Wintersemester 2000/2001
Folie 3.23
Ablauf eines Verbindungsaufbaus
(2) ServerServer-Adresse (Portnummer)
Portnummer) festlegen
Server
Client
as
cs
cs = socket(...,SOCK_STREAM,0
);
socket(...,SOCK_STREAM,0);
as = socket(..., SOCK_STREAM,0);
SOCK_STREAM,0);
bind(
bind(as,server_port);
as,server_port);
Verteilte Systeme, Wintersemester 2000/2001
(c) Peter Sturm, Universität Trier
Folie 3.24
12
Vorlesung "Verteilte Systeme"
Wintersemester 2000/2001
Ablauf eines Verbindungsaufbaus
(3) ServerServer-Socket wird passiv
Server
Client
as
cs
cs = socket(...,SOCK_STREAM,0
);
socket(...,SOCK_STREAM,0);
as = socket(..., SOCK_STREAM,0);
SOCK_STREAM,0);
bind(as,server_port
);
bind(as,server_port);
listen(
listen(as,4);
as,4);
Verteilte Systeme, Wintersemester 2000/2001
Folie 3.25
Ablauf eines Verbindungsaufbaus
(4) Verbindungswunsch des Clients
Server
Client
as
cs
cs = socket(...,SOCK_STREAM,0
);
socket(...,SOCK_STREAM,0);
as = socket(..., SOCK_STREAM,0);
SOCK_STREAM,0);
bind(as,server_port
);
bind(as,server_port);
listen(as,4
);
listen(as,4);
connect(
connect(cs,server(
cs,server(host,port));
host,port));
Verteilte Systeme, Wintersemester 2000/2001
(c) Peter Sturm, Universität Trier
Folie 3.26
13
Vorlesung "Verteilte Systeme"
Wintersemester 2000/2001
Ablauf eines Verbindungsaufbaus
(5) Server akzeptiert
akzeptiert Verbindungswunsch
Server
ns
Client
as
cs
cs = socket(...,SOCK_STREAM,0
);
socket(...,SOCK_STREAM,0);
as = socket(..., SOCK_STREAM,0);
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(
accept(ss,...);
ss,...);
Verteilte Systeme, Wintersemester 2000/2001
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);
SOCK_STREAM,0);
bind(
bind(as,server_port);
as,server_port);
listen(
listen(as,4);
as,4);
connect(
connect(cs,server(
cs,server(host,port));
host,port));
ns = accept(
accept(ss,...);
ss,...);
write(
write(cs,...);
cs,...);
write(
write(cs,...);
cs,...);
read(
read(ns,...);
ns,...);
Verteilte Systeme, Wintersemester 2000/2001
(c) Peter Sturm, Universität Trier
Folie 3.28
14
Vorlesung "Verteilte Systeme"
Wintersemester 2000/2001
NichtNicht-selektives Warten
I
Auf verschiedene Ereignisse blockierend Warten
– EmpfangsEmpfangs- und sendebereite Sockets
– LeseLese- und schreibbereite Dateien
I
Funktion select:
select:
as2
int sock1,
sock1, sock2;
sock2;
fd_set fds;
fds;
sock1 = socket(...);
s4
sock2 = socket(...);
FD_ZERO(
FD_ZERO(&fds);
&fds);
FD_SET(
FD_SET(sock1,&fds);
sock1,&fds);
FD_SET(
FD_SET(sock2,&fds);
sock2,&fds);
ret = select(
select(FD_SETSIZE,&fds,...,timeout);
FD_SETSIZE,&fds,...,timeout);
...
if (FD_ISSET
(sock1,&fds)
(FD_ISSET(
sock1,&fds) { ... };
I
s1
as1
Client
s2
s3
Zugegeben, die Funktion ist etwas komplex ::-)
Verteilte Systeme, Wintersemester 2000/2001
Windows 95/NT und TCP/IP
Folie 3.29
I
I
WinsockWinsock-Schnittstelle
Alle relevanten Datenstrukturen
und Funktionen der SocketSocketSchnittstelle sind definiert
#include <winsock.h>
int main ( int ac, char **av ) {
struct WSAData wsad;
int ret;
ret = WSAStartup(0x0101,&wsad);
if (ret != 0) {
fprintf(stderr,"WSAStartup: failed\n");
return 0;
}
printf("# WSA Info:\n");
printf("# Version %xd\n",wsad.wVersion);
printf("# Highest Version %xd\n",wsad.wHighVersion);
printf("# Description: %s\n",wsad.szDescription);
printf("# System Status: %s\n",wsad.szSystemStatus);
printf("# Maximal %d open sockets per process\n",wsad.iMaxSockets);
printf("# Maximum size of UDP packet in bytes:%d\n",wsad.iMaxUdpDg);
...
WSACleanup();
}
Verteilte Systeme, Wintersemester 2000/2001
(c) Peter Sturm, Universität Trier
Folie 3.30
15
Vorlesung "Verteilte Systeme"
Wintersemester 2000/2001
FTP
I
File Transfer Protocol
– TCPTCP-basierte Kommunikation, Port 21
– Unterstützt beschränkte Menge an Dateitypen (ASCII, Binär, ...)
und Dateistrukturen (Byte Stream,
Stream, Records)
I
Zwei TCPTCP-Verbindungen
– Kontrollverbindung
FTPI
FTP-Server passiv
I
FTPFTP-Client aktiv
– Datenverbindung
Client öffnet passiven Socket
I
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, Wintersemester 2000/2001
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, Wintersemester 2000/2001
(c) Peter Sturm, Universität Trier
Folie 3.32
16
Herunterladen