1. Internet-Grundlagen und Überblickswissen OSI 7-Schichtenmodell Verteilte Anwendungen, allgemeines Client-Server-Modell Sockets, benannte Pipes und RPC als Kommunikationsmodelle auf der IP-Schicht WWW – ein klassisches Client-Server-System (C/S) mit HTTP als zustandsloses Verbindungsprotokoll in der Anwendungsschicht Architektur von Web-Applikationen Möglichkeiten des clientseitigen Scriptings Möglichkeiten des serverseitigen Scriptings Multi-Tier-Architekturen von Web-Applikationen Peter Sobe Internettechnologien 1 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 NetzwerkTechniken jeweils eine Schicht zu. Die oberen Schichten bauen auf der Funktionalität und den Schnittstellen der unteren Schichten auf. Peter Sobe Internettechnologien 2 OSI –Modell (2) Peter Sobe Internettechnologien 3 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 Internettechnologien 4 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 Internettechnologien 5 Einfacheres 4-Schichten-Modell (1) Angelehnt an TCP/IP mit Internetschicht und Transportschicht logischer Datenaustausch Rechner 1 4 3 2 1 Anwendungsschicht Transportschicht Internetschicht Rechner 2 http, ftp, smtp, pop, .... 4 TCP 3 IP 2 1 Netzzugangsschicht Anwendungsschicht Transportschicht Internetschicht http, ftp, smtp, pop, .... TCP IP Netzzugangsschicht realer Datenaustausch mit elektr. Signalen Peter Sobe Internettechnologien 6 Einfacheres 4-Schichten-Modell (2) Die beiden entscheidenden Schnittstellen, die Internetschicht und die Transportschicht gut zu erkennen. Darüber liegt dann die Anwendungsschicht, die die bekannten Internetdienste enthält. Der Name Internettechnologien kommt natürlich von der Internetschicht. Man rechnet alles, was direkt auf diese Internetschicht aufsetzt oder darüber liegt zu den Internettechnologien. In der Literatur ist oft der Begriff WebTechnologie zu finden. Peter Sobe Internettechnologien 7 Client-Server-Modell – Grundlage für die Internettechnologien 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 Internettechnologien 8 Client-Server-Modell – Grundlage für die Internettechnologien 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 Internettechnologien 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 Internettechnologien 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 Internettechnologien 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 Internettechnologien 12 Client-Server-Modell – Szenarien (2) Ein Client, mehrere Server: Server Client S1-IP-Adr, S1-Port 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 Internettechnologien 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 Internettechnologien 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 Internettechnologien 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-2 Prozess-1 Peter Sobe Internettechnologien 16 Client-Server-Kommunikation – per Socket-Verbindung (2) Phasen einer Socket-Verbindung als Sequenz-Diagramm Client Server es = socket () bind (es, address) … Angabe des Ports s = socket () connect(s, address) … IP-Adresse und Port listen(es) s = accept(es) write(s, …) read(s, …) write(s, …) read(s, …) write(s, …) read(s, …) close(s) Peter Sobe close(s) Internettechnologien 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 geklärt 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 Internettechnologien 18 Beispiel für ein socketbasiertes C/S-System (1) Beispiel: Im folgenden Bild die beiden Fenster links: zwei Client-Prozesse Fenster rechts: Server-Anwendung mit zwei Prozessen, die über die Ports 7707 und 7708 einen Dienst anbieten Dienst besteht in der verteilten Speicherung von Daten Hier auf einem einzelnen Rechner demonstriert Clients werden im Bild nacheinander bedient Gleichzeitige Bedienung von Clients ist möglich (aber nicht gezeigt) Kann auf unterschiedlichen Rechnern im Internet ausgeführt werden (sofern verbunden, sofern Client- bzw. Server-Binaries installiert, sofern Ports durch Firewall offen sind) P. Sobe Internettechnologien 19 Beispiel für ein socketbasiertes C/S-System (2) P. Sobe Internettechnologien 20 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 Internettechnologien 21 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 Internettechnologien 22 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); Erklärung: pmessage ist hier die Datenstruktur, die zum Nachrichtenaustausch dient. Sie ist MSG_LEN Bytes lang. close(selected); } P. Sobe Internettechnologien 23 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 Internettechnologien 24 „Benannte Pipe“ als Kommunikationskanal (1) Die „benannte Pipe“ (NamedPipe) ist ein alternativer Mechanismus, zwei Prozesse über das Netzwerk zu verbinden. Eine „benannte Pipe“ kann wie eine Datei angesehen werden, die auf der Seite des Server-Rechners eingerichtet ist und einen Kanal zwischen zwei verteilten, kooperierenden Prozessen darstellt. Einer schiebt Daten in den Kanal hinein (Schreiben) und der andere holt sich diese Daten auf der anderen Seite aus dem Kanal heraus (Lesen). Auf der Clientseite wird über eine URL \\hostname\pipe\pipename der Eingang des Kanals als Datei-Equivalent bereitgestellt. Der Datenaustausch läuft danach wie eine normale Dateioperation auf einem lokalen Rechner ab. Auf der Serverseite wird nur der pipename als Handle zum lokalen Eingang des Kanals bereitgestellt. Damit wird der Kommunikationskanal als eine Art virtuelle Datei angesehen und der Datenaustausch über normale Dateioperationen realisiert. Peter Sobe Internettechnologien 25 Pipe als Kommunikationskanal (2) Aktion erzeugt Pipe Wa rtet auf ankomm end e Verbi ndung em pfängt Daten Sendet Daten Löst die Verbi ndung Schließt Handle Legende: Aktion CreateNamedPipe() WaitNamedPipe() Wa rtet auf Pipe verfü gbar Schließt Datei an Pipe an ConnectNamedP ipe() CreateFile() ReadFile() WriteFile() sendet Daten WriteFile() ReadFile() em pfängt Daten DisconnectNamedP ipe() CloseHandl e() Schließt Handle CloseHandle() Ablaufsteuerung vom Protokoll der Kooperation a bhängig Austausch Daten notwendiger Ablauf Peter Sobe Internettechnologien - 26 Pipe als Kommunikationskanal (3) Pipe-Funktionen des Servers Erzeugen von Pipes - CreateNamedPipe() Der Server muss auf seinem Rechner die Pipe erzeugen und dabei die Funktionalität angeben. Bei der Erzeugung gibt er statt seinem eigenen Computernamen einen Punkt an und legt den Pipenamen fest, z. B.: \\.\pipe\p1 Beim Server dient der Punkt (.) als Rechnername. Beim Client muss dann anstatt des Punkts der Rechnername angegeben werden. Beispiel als C-Quelltext: hPipe=CreateNamedPipe("\\\\.\\pipe\\p1", PIPE_ACCESS_INBOUND, PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, 256,256,1000,NULL); Pufferlängen für Ein- und Ausgabe sind 256 Bytes, als Time-out Zeit gilt 1000 ms und es sind keine Sicherheitsattribute gesetzt. Peter Sobe Internettechnologien 27 Pipe als Kommunikationskanal (4) Warten auf Client-Verbindungen - ConnectNamedPipe() Mit der ConnectNamedPipe()-Funktion leitet der Server einen Warteprozess auf eine Clientanforderung ein. Der erste Parameter ist das Pipe-Handle, der zweite Parameter ist NULL oder enthält einen Pointer auf eine overlappedStruktur. Beispiel: ConnectNamedPipe(hPipe,NULL); Aufheben der Client-Verbindungen - DisConnectNamedPipe() Mit der DisConnectNamedPipe()-Funktion beendet der Server eine Verbindung zu einem Client. Der einzige Parameter ist das Pipe-Handle. Der Rückkehrwert ist bei Erfolg verschieden von 0. Beispiel: DisConnectNamedPipe(hPipe); Schließen des Pipe-Handles - CloseHandle() Mit der CloseHandle ()-Funktion schließt der Server das Handle zu einer Pipe. Beispiel: CloseHandle(hPipe); Peter Sobe Internettechnologien 28 Pipe als Kommunikationskanal (5) Pipe-Funktionen des Client Warten auf die Verfügbarkeit der Pipe - WaitNamedPipe() Mit der WaitNamedPipe()-Funktion wartet der Client auf die Pipe, die der Server erzeugen muss. Der erste Parameter enthält sowohl host- als auch pipe-Namen in der Form \\hostname\pipe\pipename. Der zweite Parameter enthält eine time-out-Angabe. Anschluß an eine Pipe - CreateFile() Mit der CreateFile()-Funktion realisiert der Client das Öffnen der Pipe als eine Datei. Der erste Parameter enthält das pipe-Handle in der Form \\hostname\pipe\pipename. Beispiel: hPipe=Create(“\\\\iserver.informatik.htw-dresden.de\\pipe\\p1“, GENERIC_WRITE, 0, NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); Peter Sobe Internettechnologien 29 Pipe als Kommunikationskanal (6) Datenaustausch mit der Pipe Der Client bedient sich hier normaler Datei-Operationen der Windowsoder Unix-Plattform. Im Wesentlichen kommen dabei die ReadFile()und WriteFile()-Funktionen zum Einsatz. Wir verweisen hier auf die Beispiele, wo einige Varianten verwendet wurden bzw. auf die Systemdokumentation. Beispiel: WriteFile( hPipe, text, strlen(text)+1, &dwW, NULL ); Bemerkung: text ist hier die Adresse eines Speicherbereichs, der die zu übertragende Nachricht enthält! In einigen Fällen ist es zweckmäßig, nach der Schreiboperationen die Pipe-Funktion FlushFileBuffers() aufzurufen. Der einzige Parameter ist das Pipe-Handle. Damit wird gewartet, bis die kooperierende Anwendung alle Informationen gelesen hat. Peter Sobe Internettechnologien 30 Pipe als Kommunikationskanal (9) Beenden der Verbindung mit der Pipe – CloseHandle() Der Client beendet die Verbindung mit der Pipe durch Aufruf der CloseHandle()-Funktion. Peter Sobe Internettechnologien 31 Remote Procedure Call (1) A new paradigm hides message transfer: Birrell and Nelson, 1984 Remote procedure call (RPC): • A program calls a subroutine or procedure in another address space • RPC is initiated by a client: procedure call and wait for return • request message to server (hidden) • server calls procedure locally and transfers the parameters • response message (hidden) • client continues operation • Sun RPC (UNIX), later Microsoft RPC, • later CORBA and Java RMI for object-oriented languages Peter Sobe Internettechnologien 32 Remote Procedure Call (2) RPC: Client Server rc=calculate(p1,p2,p3, &solution); calculate wait … client- und server-Stub Peter Sobe Internettechnologien 33 Remote Procedure Call (3/3) client-stub: provides proximity procedures that collect parameters and compose messages to server, receive responses and copy back results server stub: receives messages, extracts parameters and calls corresponding procedures on the server side, results are sent back to the client 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 Verschiedene RPC-Infrastukturen: Sun RPC (UNIX), later Microsoft RPC, CORBA and Java RMI for object-oriented languages, XML-RPC, SOAP-PHP-Webservice P. Sobe Internettechnologien 34 RPC am Beispiel von CORBA CORBA Common Object Request Broker Architecture (ORB) a distributed service for communication between objects a specification, programming language independent – but typically C++ or Java IDL (interface definition language) for specifications of the interfaces Every special CORBA implementation: ORB and IDL compiler, related to a programming language P. Sobe Internettechnologien 35 CORBA – Interface specification Workflow: Step 1 – manually: Specification of interface with IDL –language (C-like) Step 2 – automated: IDL compiler generates a skeleton (server object) and stubs (local objects that can be used by the clients). The skeleton and stubs fit to the applied ORB Step 3 – manually: Implementation of client and server classes, using generated stubs and skeletons P. Sobe Internettechnologien 36 CORBA – Interface specification IDL example: Example taken from: A. Vogel and K. Duddy: Java Programming with CORBA. Wiley and Sons Inc., 1997 P. Sobe module RoomBooking { interface Meeting { // A meeting has two read-only attributes: // the meeting purpose and the paricipants readonly attribute string purpose; readonly attribute string participants; interface MeetingGenerator { // method creates meeting objects Meeting CreateMeeting (in string purpose, in string participants); }; }; interface Room { enum Slot{ am9, am10, am11, pm12, pm1, pm2, pm3, pm4}; const short MaxSlots=8; typedef Meeting Meetings(MaxSlots); exception NoMeetingInThisSlot{}; exception SlotAlreadyTaken{}; Meetings View(); void Book(in Slot a_slot, in Meeting a_meeting); void Cancel(in Slot a_slot); }; }; 37 Internettechnologien WWW 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 Server-zentriertes Web mehr Peter Sobe Internettechnologien 38 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 (Quelle wikipedia) Peter Sobe Internettechnologien 39 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 Internettechnologien 40 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 Internettechnologien 41 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 Internettechnologien 42 HTTP-Protokoll (5) Weiteres in Kapitel 2 Detailinformationen zum HTTP-Protokoll in RFCs (Request for Comments die De Facto-Standards darstellen) RFC 1945 (HTTP/1.0) http://tools.ietf.org/html/rfc1945 RFC 2616 (HTTP/1.1) http://tools.ietf.org/html/rfc2616 Peter Sobe Internettechnologien 43 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 Internettechnologien 44 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 HTML-Dokumentes erreichen. Das nennt man clientseitiges Scripting. Es bleibt es bei einer Client-Server-Anwendung, d.h. einer 2-Schichten-Anwendung (2-Tier). 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 Internettechnologien 45 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 Internettechnologien 46 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 • Nachladen von Inhalten vorerst nicht möglich, ohne eine neue Webseite zu laden Peter Sobe Internettechnologien 47 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 Internettechnologien <body … onload=“date()“> <form name=“Formular“> <input size=10 name=“Datum“/> </form> </html> 48 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 Internettechnologien 49 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 Internettechnologien 50 Serverseitiges Scripting (3) Active Server Pages (Microsoft ASP.NET) Konzept: Mischung von Webseitencode in HTML mit Programmcode (Visual Basic oder C#) Varianten: eingebetteter Code (Inline, durch <% … %> eingefaßt) Code-behind Modell: gesonderte Quelltextmodule mit Klassen, die Methoden für Web-Elemente bereitstellen Durch ASP-Framework werden auch Elemente zur clientseitigen Interaktion mittels Javascript bereitgestellt Code wird übersetzt und innerhalb des IIS (Microsoft Webserver) ausgeführt. Entwicklung: Microsoft Visual Studio Test: Visual Web Developer (lokaler Webserver) Peter Sobe Internettechnologien 51 Serverseitiges Scripting (4) Beispiel für eine ASP.NET- Webseite: <%@ Page Title="Beispiel" Language="vb" MasterPageFile="~/Site.Master" AutoEventWireup="false“ CodeBehind="Default.aspx.vb„ Inherits="WebAppASPNET._Default" %> <asp:Content ID="HeaderContent" runat="server„ HTML-, Head- und Body-Tags ContentPlaceHolderID="HeadContent"> werden serverseitig </asp:Content> automatisch erzeugt. Inhalte <asp:Content ID="BodyContent" runat="server" können durch Code-behind ContentPlaceHolderID="MainContent"> Module programmiert werden. <h2> Eine ASP.NET-Beispielanwendung </h2> <% For i = 1 To 3 %> gewöhnliche HTML- Elemente <p> Hallo </p> <% Response.Write(i) eingebetteter Code (hier Visual Basic) Next %> </asp:Content> Peter Sobe Internettechnologien 52 Serverseitiges Scripting (5) Zwei Welten: PHP-basierte Webanwendungen ASP.NET-basierte Webanwendungen oft gekoppelt mit MySQL-Datenbank Gekoppelt mit MicrosoftPlattform, z.B. SQL-Server Wir werden in der Vorlesung und Übung vorrangig PHP benutzen. Einige Beispiele werden aber als Visual Basic – ASP gegeben. Peter Sobe Internettechnologien 53 Multi-Tier-Anwendungen Peter Sobe Internettechnologien 54 Multi-tier Anwendungen Peter Sobe Internettechnologien 55 Zusammenfassung Netzwerke erlauben, Verbindungen zwischen Anwendungsprozessen auf verschiedenen Rechner herzustellen, z.B. durch SocketVerbindungen, benannte Pipes oder Datagramme Client/Server – verbreitetes Paradigma für verteilte Systeme Web: Webserver und Client(Browser) Protokolle: Standards/Festschreibungen wie und mit welchen Nachrichtenformaten kommuniziert wird. Web: HTTP-Protokoll, transportiert wird: HTML, XML, eingebettete Inhalte, Dateien Skripte erlauben die Programmierung … clientseitig und/oder serverseitig durch verschiedene Sprachen Je nach Trennung in verschiedene Schichten (tiers): 2-tier, 3-tier, 4-tier -Web-Anwendungen (Multitier …) Peter Sobe Internettechnologien 56