6. Rechnernetze und Internet

Werbung
6. Rechnernetze und Internet
 OSI 7-Schichtenmodell
 Verteilte Anwendungen,
allgemeines Client-Server-Modell
 Sockets als Kommunikationsschnittstelle
 Web
 HTTP als Verbindungsprotokoll
 Architektur von Webanwendungen mit client- und
serverseitiger Verarbeitung
Peter Sobe
1
Rechnernetze und Internet
Die Vernetzung verschiedener Rechner und der darauf
ablaufenden Anwendungen baut auf verschiedenen Funktionen
auf, die zu einem Teil als Hardware, zum anderen als Software
im Betriebssystem realisiert sind.
Auch die Anwendungsprogramme tragen durch gezielte
Anwendung von Netzfunktionen zum Funktionsumfang der
Vernetzung bei.
Hardware
Systemsoftware
Anwendungsprogramme
Netzwerkkabel,
Netzwerkkarte,
Router/Switch,
…
TCP/IP Protokolle,
Schnittstellen,
Verschlüsselung,
…
Webbrowser,
eigene programmierte
Server- und Clientprogramme,
…
Peter Sobe
2
Ein einfaches 4-Schichten-Modell
Angelehnt an TCP/IP mit Internetschicht und Transportschicht
logischer Datenaustausch
Rechner 1
4
3
2
1
Anwendungsschicht
Transportschicht
Internetschicht
Netzzugangsschicht
Rechner 2
http, ftp,
smtp, pop,
....
4
TCP
3
IP
2
1
Anwendungsschicht
Transportschicht
Internetschicht
http, ftp,
smtp, pop,
....
TCP
IP
Netzzugangsschicht
realer Datenaustausch mit elektr.
Signalen
Peter Sobe
3
OSI –Modell (1)
OSI-Referenzmodell:
Open Systems Interconnection Reference Model
Eingeführt 1983 von der ISO (Internationale
Normungsorganisation)
Zu dieser Zeit existierte TCP/IP bereits, das bis dahin durch ein
4-Schichtenmodell erklärt wurde.
Ein Schichtenmodell ordnet verschiedenen Netzwerk-Techniken
jeweils eine Schicht zu. Die oberen Schichten bauen auf der
Funktionalität und den Schnittstellen der unteren Schichten auf.
Peter Sobe
4
OSI –Modell (2)
Peter Sobe
5
OSI –Modell (3)
1: Bitübertragungsschicht – umfasst mechanische und
elektrische Elemente, das Übertragungsmedium und die
übertragungstechnischen Verfahren
2: Sicherungsschicht - Techniken zum Zugriff auf das
Übertragungsmedium, Datenflusskontrolle,
Fehlererkennung und Fehlerkorrektur
3: Vermittlungsschicht – Weiterleitung der
Datenübertragung über ein Kommunikationsnetz aus
mehreren Leitungssegmenten und Schaltstellen (Router)
4: Transportschicht – Ende-zu-Ende-Steuerung für
Datenströme
Peter Sobe
6
OSI –Modell (4)
5: Sitzungsschicht – synchronisierter Datenaustausch, weitere
Mechanismen wie z.B. RPC (Remote Procedure Call)
6: Darstellungsschicht – Herstellung einer
systemunabhängigen Darstellung der Daten,
ggf. Anpassung an verschiedene Darstellungsformate,
Zusätzlich: Datenkompression und Verschlüsselung
7: Anwendungsschicht – verschiedene Anwendungen, wie z.B.
Dateitransfer (SCP,FTP), Email, Webserver/Webbrowser
Peter Sobe
7
Client-Server-Modell
Wir betrachten zwei Rechner, die über das Netz verbunden sind.
Auf jedem Rechner läuft eine Anwendung, die beide miteinander
kooperieren, d.h. Daten austauschen.
Eine Anwendung wird als Server bezeichnet, die andere als
Client. Der Server stellt einen Dienst bereit und der Client ist die
Anwendung, die den Dienst in Anspruch nimmt.
Gefordert:
Ein Protokoll, das bestimmt wie der Datenaustausch zwischen
Server und Client funktioniert.
 Zeitliche Abfolge der Nachrichten und Regeln für Client
und Server
 Inhalt und Format der einzelnen Nachrichten
Peter Sobe
8
Client-Server-Modell
Werden im Internet Dienste von allgemeinem Interesse zur
Verfügung gestellt, müssen die Protokolle publiziert werden.
Oft werden dann auch Clients zur Verfügung gestellt, über die
solche Dienste genutzt werden können.
Zugangspunkte für Dienste (Adressen) müssen bekannt sein:
 Adresse des Servers (IP-Adresse)
 Unterscheidung der Zugangspunkte, wenn ein Server mehr
als einen Dienst bereit stellt (Port)
Die Adressierung ist Aufgabe der
 Vermittlungsschicht (Schicht 3, Network Layer) im OSI-Modell
 IP-Schicht (Internet Schicht) im TCP/IP-Schichtenmodell
Peter Sobe
9
Client-Server-Modell –
Adressierung der Server
Ein Dienst wird mit einer so genannten Portnummer versehen.
Portnummer und Rechner (IP-Nummer) bilden ein Socket und
sind im Internet eindeutig definiert. Damit gelingt es beim
Datenversand im Internet durch TCP das Ziel der Daten, den
Server, eindeutig zu adressieren.
Server: www.htw-dresden.de IP-V4-Adr.: 141.56.16.49
WWW-Server an Port 80
FTP-Server an Ports 20,21
Peter Sobe
10
Client-Server-Modell –
Adressierung der Clients
Ein Client wird durch seine IP-Adresse ausgewiesen.
Jede Verbindung wird clientseitig einem anderem Port zugeordnet.
Damit kann der Client mehrere Verbindungen gleichzeitig aufrecht
erhalten.
Ports für Client-Prozesse werden durch Portmapper dynamisch
vergeben. Der Client-Port wird dem Server beim Verbindungsaufbau mitgeteilt.
Eine TCP-Verbindung (Socket-Verbindung) ist demnach durch
das 4-Tupel
(Server-IP-Addr, Server_Port, Client-IP-Addr, Client-Port)
gekennzeichnet.
Peter Sobe
11
Client-Server-Modell –
Szenarien (1)
Ein Server, mehrere Clients:
Clients
C1-IP-Adr,
C1-Port
Server
Server-IP-Adr,
Server-Port
C2-IP-Adr,
C2-Port
C3-IP-Adr,
C3-Port
Wenn Clients auf unterschiedlichen Rechnern laufen, dann
unterscheiden sich C1-IP-Adr, C2-IP-Adr und C3-IP-Adr.
Wenn Clients auf dem gleichen Rechner laufen (z.B. mehrere
Nutzer), dann unterscheiden sich ihre Port-Nummern,
z.B. C2-Port ≠ C1-Port
Peter Sobe
12
Client-Server-Modell –
Szenarien (2)
Ein Client, mehrere Server:
Server
S1-IP-Adr,
S1-Port
Client
Client-IP-Adr,
Client-Port
S2-IP-Adr,
S2-Port
Wenn Server auf unterschiedlichen Rechnern laufen, dann
unterscheiden sich S1-IP-Adr und S2-IP-Adr.
Wenn verschiedene Server auf dem gleichen Rechner laufen, dann
unterscheiden sich ihre Port-Nummern, z.B. S2-Port ≠ S1-Port.
→ Nachrichten unterschiedlicher Verbindungen sind immer
unterscheidbar.
Peter Sobe
13
TCP und UDP (1)
TCP (Transmission Control Protocol) –
Verbindungsorientiertes Protokoll aus OSI Schicht 4
 setzt Adressierung und Paket-Vermittlung voraus (IP)
 arbeitet intern wie dargestellte Socket- und PipeKommunikation
 TCP garantiert Reihenfolge der Daten und Fehlerfreiheit – bei
verlorenen Paketen werden diese wiederholt übertragen
 Auf TCP bauen viele Internetdienste auf, z.B. HTTP, FTP
Peter Sobe
14
TCP und UDP (2)
UDP (User Datagram Protocol) ist das verbindungslose
Pendant zu TCP. Das verbindungslose UDP kann schneller
sein.
 setzt Adressierung und Paket-Vermittlung voraus (IP)
 einzelne Pakete werden übertragen, ohne explizite
Verbindung
 keine Reihenfolgegarantie
 Pakete können verloren gehen
 einige Dienste, wie z.B. Audio-Streaming verwenden UDP
Peter Sobe
15
Client-Server-Kommunikation –
per Socket-Verbindung (1)
Eine Socket-Verbindung ist eine verbindungsorientierte
Kopplung zwischen zwei Prozessen, typischerweise einem
Server und einem Client.
Die Verbindung wird explizit aufgebaut, danach kann
bidirektional kommuniziert werden. Die Verbindung wird
geschlossen, wenn sie nicht mehr benötigt wird.
Vergleichbar mit Telefongespräch!
Prozess-1
Peter Sobe
Prozess-2
16
Client-Server-Kommunikation –
per Socket-Verbindung (2)
Phasen einer Socket-Verbindung als Sequenz-Diagramm
Server
es = socket ()
bind (es, address) … Angabe des Ports
listen(es)
Client
s = socket ()
connect(s, address)
… IP-Adresse und Port
s = accept(es)
write(s, …)
read(s, …)
write(s, …)
close(s)
Peter Sobe
read(s, …)
write(s, …)
read(s, …)
close(s)
17
Client-Server-Kommunikation –
per Socket-Verbindung (3)
• Der Server bindet eine Dienst an einen bekannten Port (bind)
und akzeptiert Verbindungen (accept).
• Ein Client verbindet sich mit einem Dienst an einem
bekannten Port (connect).
• Beide Prozesse können Daten senden und empfangen.
Funktionen: write() / read() oder send() / recv()
• Welcher Prozess wann sendet und wann empfängt, muss
durch das Protokoll zwischen Server und Client vorab
vereinbart worden sein.
• Ein Server erzeugt typischerweise nach dem Annehmen einer
Verbindung (accept) einen neuen Thread für die Verbindung.
Der verbleibende Thread nimmt wieder neue Verbindungen
an (Multi-Client Server).
Peter Sobe
18
C-Quellcode des Server-Programms (1)
Server source code (C language, important parts only):
int entry_sock;
entry_sock = socket(AF_INET,SOCK_STREAM,0);
/*connect sock_address with local address and a unique port */
sock_address.sin_port = htons( (unsigned short int)(port_base +
process_id*proc_inc));
sock_address.sin_addr.s_addr = INADDR_ANY;
// everyone may connect
sock_address.sin_family = AF_INET;
rc = bind(entry_sock, (void*)&sock_address, sizeof(sock_address));
P. Sobe
19
Quellcode des Server-Programms (2)
Server source code (C language, important parts only) continued:
listen(entry_sock, BACKLOG);
do {
// wait for a new connection
addrlen = sizeof(client_sock_address);
new_sock = accept(entry_sock, (void*)&client_sock_address, &addrlen );
/* connection_fun starten */
params_not_copied=1;
pthread_create(&connection_thread,NULL,(void*)&connection_fun,NULL);
/* wait for thread until parameters got copied*/
do { } while(params_not_copied);
} while(1);
P. Sobe
20
Quellcode des Server-Programms (3)
Server source code (C language, important parts only) continued:
void connection_fun(void *param){
selected = new_sock;
params_not_copied=0;
…
// communicate with client according a user-specified protocol
read(selected,&pmessage, MSG_LEN);
write(selected,&pmessage, MSG_LEN);
close(selected);
}
P. Sobe
Erklärung:
pmessage ist hier die
Datenstruktur, die zum
Nachrichtenaustausch dient.
Sie ist MSG_LEN Bytes lang.
21
Quellcode des Client-Programms
Client source code (C language, important parts only):
sock = socket(AF_INET,SOCK_STREAM,0);
serv_addr.sin_addr.s_addr = inet_addr(server_ipaddress);
serv_addr.sin_port
= htons(server[i].port);
serv_addr.sin_family
= AF_INET;
rc = connect(sock, (struct sockaddr *) &serv_addr, sizeof(serv_addr));
printf("client connected to %s:%d rc=%d \n", server_ipaddress, server[i].port, rc);
write(sock, &pmessage, MSG_LEN);
read(sock, &pmessage, MSG_LEN);
close( sock );
P. Sobe
22
Remote Procedure Call (1)
RPC: Auf Basis von Bibliotheken und Dienstverzeichnissen auf
Client- und Serverseite kann ein s.g. entfernter Prozeduraufruf
erfolgen (in C ist das ein Funktionsaufruf).
Client
Server
client- und
server-Stub
rc=calculate(p1,p2,p3, &solution);
wait …
Peter Sobe
calculate
23
Remote Procedure Call (2)
client-stub:
Stellvertreter-Prozeduren, die
Parameter sammeln und eine
Nachricht an den Server senden,
die den Funktionsnamen und die
Parameterwerte enthält. Auch
Rückgabewerte werden
empfangen und über die lokale
Schnittstelle zurückgegeben.
server stub:
Empfang der Nachrichten, Aufruf der
entsprechenden lokalen Funktion,
Zurücksenden der Ergebnisse
r = calc(a,b);
Stub: receive and call
local procedure
Stub
int calc(int x, int y)
res = calc(par1,par2);
OS and network stack
OS and network stack
P. Sobe
24
World Wide Web (auch Web)
Web – basierend auf dem Internet
 Das Internet war bereits eher als das Web vorhanden, mit
verteilten Anwendungen, Dateitransfer, NetzwerkDateisystemen (NFS)
 Web: entstanden durch Vorhandensein des HTTP-Protokolls,
der HTML-Sprache, URLs und DNS (Distributed Name Service)
 Nutzung des Webs: ein klassisches Client/Server-Szenario
 Mit dem Web erfolgte eine Kultur- und Wirtschaftsrevolution, da
sich dadurch die Verhaltensweisen der Menschen, die
Organisation wirtschaftlicher Prozesse und auch politische
Aspekte geändert haben.
 Web 2.0: kollaboratives Web, inhaltlich kein serverzentriertes
Web mehr
Peter Sobe
25
HTTP-Protokoll (1)
Hypertext Transport Protocol, größtenteils zum Austausch von
Hypertext (HTML, xHTML) benutzt
Herkunft:
• Das Protokoll wurde ab 1989 von Roy Fielding, Tim BernersLee und anderen am CERN entwickelt
• Zusammenspiel mit den Konzepten URL und HTML.
URL: Unified Ressource Locator
HTML: Sprache zum Aufschreiben von Hypertext-Dokumenten
→ Geburt des WWW (bzw. Web)
• Zur Kommunikation ist HTTP auf ein zuverlässiges
Transportprotokoll angewiesen. Dafür wird in nahezu allen
Fällen TCP verwendet
Peter Sobe
26
HTTP Protokoll (2)
Über HTTPS kann die Übertragung aber verschlüsselt erfolgen.
HTTPS nutzt SSL aus Transportschicht (Secure Socket Layer) und
TLS. Ein HTTPS-Dienst wird typischerweise auf Port 443 angeboten.
HTTP-Eigenschaften:
 HTTP ist zustandslos
 Anfrage, Antwort, Ende: keine komplexen
Kommunikationsszenarien
 Der Zustand eines Clients (Browsers) kann nur über s.g. Cookies
verwaltet werden
Typischer Protokollablauf:
• Anfrage an Server: Zum Beispiel GET-Request mit Angabe des
Dokumentennamen und des Servers
• Antwort: OK, Infos über Server und HTML-Dokument
Peter Sobe
27
HTTP-Protokoll (3)
Typischer Protokollablauf:
•
•
Anfrage an Server:
GET /~sobe/Ueb_Internet/anfang.html HTTP/1.1
Host: www2.htw-dresden.de
Antwort:
HTTP/1.1 200 OK
Date: Sun, 20 Mar 2011 11:59:21 GMT
Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny9 with
Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g mod_perl/2.0.4 Perl/v5.10.0
Vary: Accept-Encoding
Content-Length: 1538
Connection: close
Content-Type: text/html; charset=iso-8859-1
< !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN„
"http://www.w3.org/TR/html4/loose.dtd" >
< html> ...
Peter Sobe
28
HTTP-Protokoll (4)
HTTP-Operationen im Überblick:
GET – Anfordern einer Ressource mit Angabe einer URL
POST – Senden von Daten zum Server (z.B. für Formulare)
HEAD –Anfordern eines Headers zu einer Ressource
PUT – Hochladen einer Ressource,
bei Webservern oft nicht implementiert
DELETE – Löschen einer Ressource,
bei Webservern oft nicht implementiert
TRACE – Empfangen und Zurücksenden der Anforderung
OPTIONS – Server liefert eine Liste der unterstützten
Operationen zurück
CONNECT – nur für Proxy-Server
Das Hochladen von Web-Inhalten und Löschen erfolgt meistens
durch andere Protokolle (z.B. SFTP Secure File Transfer Prot.)
oder SSH (Secure Shell)
Peter Sobe
29
HTTP-Protokoll (5)
GET- Methode
Die GET-Methode ist die am häufigsten eingesetzte Methode bei
einer Client-Anforderung. Damit wird ein Dokument beim Webserver
zum Herunterladen angefordert. Der Name des Dokumentes und
eventuell sein Pfad müssen in der Request-URI angegeben sein.
Beispiel: GET /beispiel.html HTTP/1.0
Antwort:
Nach der Leerzeile ist
der Inhalt des Body zu
sehen, d.h. der Inhalt
des angeforderten
Dokuments in HTML.
Peter Sobe
30
HTML und xHTML
HTML – Hypertext Markup Language
Auszeichungssprache für Web-Seiten, folgte schon dem SMGLMeta-Standard
xHTML - eXtensible Hypertext Markup Language
XML-konformes HTML, weitestgehend gleiche Elemente wie
HTML, nun aber streng wohlgeformt
Peter Sobe
31
HTML
 Kodierungssprache für Webseiten, aus SGML entworfen.
 HTML-Dokument wird im Message-Body durch HTTP
übertragen
 Beispiel:
<HTML>
<HEAD><TITLE>DOM</TITLE></HEAD>
<BODY BGCOLOR="yellow">
<H2>Demonstration DOM</H2>
<P>
<IMG SRC="Comp2.gif" /> Bild 4.1
</P>
<P><I>Ende</I>
</P>
</BODY>
</HTML>
Peter Sobe
32
HTML
Elemente: <TITLE>DOM</TITLE>
Attribute: <IMG SRC="Comp2.gif" />
Kombination Element mit Attributen:
<BODY BGCOLOR="yellow"> … </BODY>
Die Elemente
 werden durch Tags eingefasst.
 und werden hierarchisch ineinander gesetzt
Darstellung als Baum mit Elementen auf gleicher Ebene und
unter/übergeordneten Elementen möglich.
→ DOM: Document Object Model eines HTML-Dokuments
Peter Sobe
33
DOM (1)
Element-Beziehungen im letzten Beispiel:
HTML
HEAD
BODY
TITLE
H2
DOM
Demonstration
DOM
BGCOLOR
P
Bild 4.1
P
IMG
I
Ende
SRC
Elementknoten (Tag)
Comp2.gif
Attributknoten
Attributwert
Elementwert (Text-Knoten)
Peter Sobe
34
DOM (2)
DOM dient z.B. in Javascript zum Zugriff auf Elemente der
dargestellten Webseite.
Beispiel aus jspage.html (siehe Übung am 21.3.2013):
Im Skript:
<script type="text/javascript">
<!—
function primzahl() {
var zahl =
document.Formular.Eingabe.value;
…
-->
</script>
…
Peter Sobe
Im HTML-Dokument:
<body>
…
<form name="Formular" action="">
<input type="text„
name="Eingabe"="3">
…
</form>
</body>
35
Architektur von Web-Anwendungen (1)
In HTML lassen sich JavaScript-Programme einbetten, die auf der
Clientseite durch einen Interpreter ausgeführt werden. Damit lassen
sich gewisse „dynamische Effekte“ bei der Anzeige eines HTMLDokumentes erreichen. Das nennt man clientseitiges Scripting.
Effekte:
 Anzeigen neuer Bilder
 zeitgebergesteuerte Animationen
 Reaktion auf Mausereignisse,
 Änderung von Eigenschaften von Objekten (Farbe, Stil,…),
 Öffnen neuer Fenster, Message-Boxen und Dialogfenster
 Prüfung von Nutzereingaben auf Korrektheit, vor Absenden an
Server
Peter Sobe
36
Architektur von Web-Anwendungen (2)
Client-seitiges Scripting (Fortsetzung):
Ein JavaScript kann auf Eigenschaften von Objekten der grafischen
Oberfläche zugreifen und über Methoden Manipulationen
durchführen. Das wird durch ein Document Object Model (DOM)
ermöglicht.
Architektur-Klassen:
2-Tier: Web-Anwendung ohne Scripting,
auch Webanwendungen mit clientseitigem Scripting
3-Tier: Webanwendungen mit serverseitigem Scripting
4-Tier: Webanwendungen mit serverseitigem Scripting und einer
weiterer funktionalen Ebene (meistens eine Datenbank)
Peter Sobe
37
Clientseitiges Scripting (1)
JavaScript
• auf Client-Seite ausgeführt
• Script-Code wird innerhalb der HTML-Seite übertragen
• Script-Code ist typischerweise im Head eingebettet
• Das Script kann die Webseite dynamisch verändern, oder
Nachrichtenboxen oder Dialoge initiieren
Peter Sobe
38
Clientseitiges Scripting (2)
JavaScript – Beispiel:
…
<html>
<head>
<title>Die Seite mit dem Datum</title>
<script language=“JavaScript“>
function date() {
var j,m,t;
var aktuellesdatum = new Date();
t = aktuellesdatum.getDate();
m = aktuellesdatum.getMonth()+1;
j = aktuellesdatum.getYear()+1900;
document.Formular.Datum.value=t+"."+m+"."+j;
}
</script>
</head>
Peter Sobe
<body … onload=“date()“>
<form name=“Formular“>
<input size=10 name=“Datum“/>
</form>
</html>
39
Serverseitiges Scripting (1)
Die Aufbereitung von Web-Inhalten kann auch durch
Programmverarbeitung auf dem Server erfolgen.
Typische serverseitige Skript-Technologien:
 CGI + „irgendetwas, das auf dem Server ausgeführt werden
kann und Hypertext zurückliefert“ , typisch ist CGI in Verbindung
mit einem Perl-Skript
 PHP – eine Sprache, die in HTML eingebettet ist.
Peter Sobe
40
Serverseitiges Scripting (2)
PHP - Hypertext Processor
 auf Server-Seite ausgeführt
 Die Ausgabe des Scrips erzeugt Seiteninhalt
 nur die Ausgabe des Scripts wird per HTTP übertragen
 PHP-Syntax ist an C und Perl angelehnt
Beispiel:
<html>
…
<script language=“php“>
$i=1;
while($i<11) { echo “<br> \n“; $i=$i+1 }
</script>
…
</html>
Peter Sobe
41
Web-Anwendungen unter Nutzung von HTTP
Web-Browser
Javascript
Ajax-Engine
HTTP, HTMLDokumente
Externe
Skripte
und Daten
Peter Sobe
CGI
XML
WebServer
PHP
42
Zusammenfassung
 Netzwerke erlauben, Verbindungen zwischen
Anwendungsprozessen auf verschiedenen Rechnern
herzustellen, z.B. durch Datagramme (UDP), SocketVerbindungen oder benannte Pipes
 Protokolle: Standards/Festschreibungen wie und mit welchen
Nachrichtenformaten kommuniziert wird.
 Web: HTTP-Protokoll,
transportiert wird: HTML, XML, eingebettete Inhalte, Dateien
 Skripte erlauben die Programmierung dynamischer Webseiten,
clientseitig und/oder serverseitig durch verschiedene
C-ähnliche Sprachen
Peter Sobe
43
Herunterladen