| AVS / Programmierung Kapitel 1: Programmierung Einführung Motivation – Entwicklung verteilter Anwendungen im Internet Welchen Dienst soll die Anwendung.

Slides:



Advertisements
Ähnliche Präsentationen
Klassen - Verkettete Liste -
Advertisements

Operating Systems Principles
Dominic Ziegler 12c Webprogrammierung.
1 Datenbankapplikationen 9.1MS Visio 9.2MS Access 9.3Embedded SQL 9.4JDBC 9.5Cold Fusion 9.6PHP.
Funktionen und Module Einführung anhand des Beispiels Wörter sortieren Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik.
DECUS IT-Symposium M01 Martin Vorländer PDV-SYSTEME GmbH RPC-Codegenerierung mit Perl.
P. Marwedel Informatik 12, U. Dortmund
Kurt Rosenberg. C# für.NET oder.NET für C# is(C# == C++ && Java)? true : false ; reines C# Ausblick Überblick.
Agenda Sitzung 2 für den Programmaufbau
Microsoft Referenzarchitekturen- Infrastruktur für Connected Systems
Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2009/01/17 Graphics:
Fakultät für informatik informatik 12 technische universität dortmund Universität Dortmund Middleware Peter Marwedel TU Dortmund, Informatik 12 Germany.
Fakultät für informatik informatik 12 technische universität dortmund Specifications Peter Marwedel TU Dortmund, Informatik 12 Graphics: © Alexandra Nolte,
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik F Verteilte Software - Java.
Verteilte Software - Java - Prozedurale Programmierung 1
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Internetzugriff mit Strings und Streams
Secure Socket Layer SSL For a secure E-Business Thomas Muskalla
Anwendungen in Rechnernetzen Tobias Wawryniuk
Internet Protokolle und Formate 1.1 HTTP 1.2 HTML 1.3 SGML 2. XML 3. WAP Matthias Thränhardt Sebastian Weber.
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
Dynamische Webseiten Java servlets.
Bs Kommunikation Kommunikation zwischen Benutzerprozessen (IPK) stellt andere Anforderungen als auftragsorientierte Kommunikation in mikrokernbasierten.
Objektorientierte Programmierung JDK-Klassenbibliothek
Hochschule Fulda – FB ET Sommersemester 2010
Operating Systems Principles
1. Einführung Lernziele: Auffrischen des Wissens aus Rechnernetze
Martin MauveUniversität Mannheim1 3.6 User Datagram Protocol (UDP) RFC 768. J. Postel. User Datagram Protocol unzuverlässiges Transportprotokoll.
F açade P attern By Nicolas Lanquetin. Façade Pattern Structural Pattern Bietet ein gemeinsames Interface, anstatt vieler Interfaces eines Subsystems.
Modulare Programmierung
Internet DVG1 - Internet.
Munz – IT/TG - Lörrach. Goals of this intensive lecture To learn: To learn: –What does it means programming in Java ? –What is JAVA good/bad for ? –Which.
Seminar Telematiksysteme für Fernwartung und Ferndiagnose Basic Concepts in Control Theory MSc. Lei Ma 22 April, 2004.
Einfach verkettete Listen
INSTITUT FÜR DATENTECHNIK UND KOMMUNIKATIONS- NETZE 1 Steffen Stein, TU Braunschweig, 2009 A Timing-Aware Update Mechanism for Networked Real-Time Systems.
M A X - P L A N C K - G E S E L L S C H A F T Bericht des Partnerinstituts Sabine Krott 1.0 Pilotentreffen im Harnack-Haus, 8. Juni 2006 Distribution:
Informatik I for D-MAVT
Learning By Doing TCP/IP Netzwerke mit TCP/IP Das Internet verwendet weitgehend das rund 30-jährige TCP/IP-Protokoll (TCP: Transmission Control Protocol,
SecureSocketLayer „Sicherheit in Datennetzen“
Institut AIFB, Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Towards Automatic Composition of Processes based on Semantic.
Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher
Automated Software Testing
Sanjay Patil Standards Architect – SAP AG April 2008
Einführung in die Programmierung
Julia Grabsch Florian Hillnhütter Fabian Riebschläger
Your name Bedeutung von Internet- Technologien Gruppe 1 Andreas Feuerstein Philipp Hochratner Christian Weinzinger.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Einführung in die Programmierung
JSP Einführung Skripte Direktiven Tomcat 3.2 Version 1.1
Praxis der Internet-Programmierung
XML IV: Cocoon 2.
Portabilität Seminar aus Softwareentwicklung: Programmierstil Christine Schiestl WS 02 / 03.
Univ.-Lektor Dipl.-Ing. Dr. Markus Schranz staatlich befugter und beeideter Ingenieurkonsulent für Informatik Web Application Engineering & Content Management.
1 (C)2006, Hermann Knoll, HTW Chur, FHO teKRY407 Geheimhaltung, Authentikation, Anonymität Protokolle: Übersicht Referat Santos: Hash-Funktionen.
Ciiema CITEM - Dr. Siegl VU Dr. Manfred Siegl ENTWURF, ERRICHTUNG, BETRIEB VON DATENNETZEN VU Dr. Manfred Siegl
Launch ON Global.vi System ID object name classname Services to suscribe Observer Control Ref vi-path Service name Step 1 : Objects register to the Global.vi´s,
IT Security Cross Protocol Scripting & NAT Pinning Emanuel Klein.
Technische Universität München 1 CADUI' June FUNDP Namur G B I The FUSE-System: an Integrated User Interface Design Environment Frank Lonczewski.
Programmiervorkurs WS 2014/15 Methoden
Schutzvermerk nach DIN 34 beachten TCP / IP. Schutzvermerk nach DIN 34 beachten TCP / IP und das OSI-Referenzmodell Process / Application Host-to-Host.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
LINUX II Unit 9 Network File Server NFS. NFS Überblick ● Zugriff von lokalen Rechner über Netzwerk auf Dateien oder Ordnern auf entfernten Servern ● Entwickelt.
1. Einführung Lernziele: Auffrischen des Wissens aus Rechnernetze
Netzwerk - Programmierung
Prof. Dr.-Ing. Franz-Josef Behr Geodaten und Datenmodell
Grundkurs Informatik mit Java
 Präsentation transkript:

| AVS / Programmierung Kapitel 1: Programmierung Einführung Motivation – Entwicklung verteilter Anwendungen im Internet Welchen Dienst soll die Anwendung (Server) anbieten? Wie unterhalten sich Dienstnehmer (Client) und Server? Wie wird das Anwendungsprotokoll beschrieben und realisiert? Soll die Anwendung auf TCP oder UDP basieren? Gibt es Gründe für TCP und UDP? Implementierung des Protokolls Verwendung von Standardprotokollen – evtl. bereits unterstützt durch die verwendete Programmierplattform Gänzlich neues Protokoll auf Basis von UDP oder TCP Erfordert Programmierunterstützung für Internet Sockets Berkeley Sockets Ursprünglich 1983 an der UC Berkeley als Bestandteil von BSD Unix Application Programming Interface (API) Sockets – RFC 147 WS 12/13 © Prof. Dr. Martin Gaedke Professur VSR Fakultät für Informatik TU Chemnitz 1

| AVS / Programmierung Kapitel 1: Programmierung Einführung: Socket – Server mit C WS 12/132 © Prof. Dr. Martin Gaedke Professur VSR Fakultät für Informatik TU Chemnitz for(;;) { msgsock = accept(sock, 0, 0); if (msgsock == -1) err("accept"); memset(buf, 0, sizeof(buf)); bufptr = buf; buflen = sizeof(buf); while (strstr(buf, "\r\n\r\n") == NULL && buflen > 0) { l = read(msgsock, bufptr, buflen); if (l == -1) err("read"); if (l == 0) { fprintf(stderr, "client closed conn\n"); break; } bufptr += l; buflen -= l; } fprintf(stderr, "request: %s\n", buf); if (write(msgsock,REPLY,sizeof(REPLY)) == -1) err("write"); if (close(msgsock) == -1) err("close"); } #include #define REPLY "HTTP/ OK\r\n\r\n" main(int argc, char **argv) { int sock, msgsock, l, buflen; struct sockaddr_in sa; char buf[1024], *bufptr; if (argc != 2) xerr("usage: tcpsrv port"); sock = socket(AF_INET, SOCK_STREAM, 0); if (sock == -1) err("socket"); /* Eigene Socket-Adresse konstruieren */ sa.sin_family = AF_INET; sa.sin_addr.s_addr = INADDR_ANY; sa.sin_port = htons(atoi(argv[1])); if (bind(sock,(struct sockaddr*)&sa,sizeof(sa))) err("bind"); if (listen(sock, 5) == -1) err("listen");

| AVS / Programmierung Kapitel 1: Programmierung Einführung: Socket – Client in C WS 12/13 © Prof. Dr. Martin Gaedke Professur VSR Fakultät für Informatik TU Chemnitz 3 #include #define REQUEST "GET /index.html HTTP/1.0\r\n\r\n" main(int argc, char **argv) { int sock, l; struct sockaddr_in sa; struct hostent *hp; char buf[1024]; if (argc != 3) xerr("usage: tcpcli host port"); sock = socket(AF_INET, SOCK_STREAM, 0); if (sock == -1) err("socket"); sa.sin_family = AF_INET; hp = gethostbyname(argv[1]); if (hp == NULL) herr("gethostbyname"); memcpy(&sa.sin_addr, hp->h_addr, hp->h_length); sa.sin_port = htons(atoi(argv[2])); if (connect(sock, (struct sockaddr*)&sa, sizeof(sa)) == -1) err("connect"); if (write(sock,REQUEST,sizeof(REQUEST)) == -1) err("write"); while ((l=read(sock, buf, sizeof(buf))) > 0) write(1, buf, l); if (l == -1) err("read"); if (close(sock) == -1) err("close"); }

| AVS / Programmierung Kapitel 1: Programmierung Secure Sockets Secure Sockets Layer (SSL) Version 1.0 by Netscape Communications (1994) Transport Layer Security (TLS) IETF-standard from the year 1999 (RFC 2246)RFC 2246 Network protocol for secure data transfer Since Version 3.0 SSL is being further developed under the name TLS Minor differences between SSL 3.0 & TLS 1.0 TLS 1.0 is presented as SSL 3.1 WS 12/134 CC-BY-NC: Prof. Dr. Martin Gaedke Professur VSR Fakultät für Informatik TU Chemnitz

| AVS / Programmierung Kapitel 1: Programmierung SSL/TLS – Architecture In OSI-model in layer 6 In TCP/IP-model Above the Transport layer (i.e. TCP,…) Below the Application layer (i.e. HTTP,…) Basic idea: generic security layer Protocol consists of 2 layers: Cf. Lecture SVS (Summer Semester) WS 12/135 CC-BY-NC: Prof. Dr. Martin Gaedke Professur VSR Fakultät für Informatik TU Chemnitz Handshake Protocol Change Cipher Spec Protocol Alert ProtocolApplication Data Protocol Record Protocol

| Secure Socket Client in C WS 12/136 CC-BY-NC: Prof. Dr. Martin Gaedke Professur VSR Fakultät für Informatik TU Chemnitz #include #define HOST " #define PORT 443 #define BUF "GET /index.htm HTTP/1.1\r\nHost: #define LEN 4096 static char *sslerr(void) /* Fehlerbehandlung */ { static char buf[1024]; ERR_error_string(ERR_get_error(), buf); return buf; } /* Secure Socket-Layer oberhalb der durch sock repraesentierten Transportschicht aufbauen: */ void init_ssl(int sock, SSL_CTX **ctx, SSL **ssl) { *ctx = SSL_CTX_new(SSLv23_client_method()); /* Wahl der SSL-Methode (Version) */ SSL_CTX_set_verify(*ctx, SSL_VERIFY_NONE, NULL); /* hier: Keine Zertifikatspruefung */ *ssl = SSL_new(*ctx); /* Erzeugung des Secure Socket-Layers */ SSL_set_fd(*ssl, sock); /* Aufsetzen des SSL auf vorhanden TCP-Verb. */ SSL_set_connect_state(*ssl); /* SSL-Handshake ausloesen */ if (SSL_connect(*ssl) <= 0) errx(1, "SSL_connect: %s", sslerr()); }

| Secure- Socket-Beispiel in C WS 12/137 CC-BY-NC: Prof. Dr. Martin Gaedke Professur VSR Fakultät für Informatik TU Chemnitz int main(int argc, char *argv[]) { int sock; char retbuf[LEN]; int len; struct sockaddr_in server_addr; struct hostent *hp; SSL_CTX *ctx; SSL *ssl; SSL_library_init(); /* SSL-Bibliothek initialisieren */ SSL_load_error_strings(); /* error-Strings laden */ /* normalen TCP-Socket erzeugen und verbinden: */ sock = socket(AF_INET, SOCK_STREAM, 0); if (sock == -1) errx(0, "socket"); server_addr.sin_family = AF_INET; hp = gethostbyname(HOST); if (hp == NULL) err(0, "gethostbyname"); memcpy(&server_addr.sin_addr, hp->h_addr, hp->h_length); server_addr.sin_port = htons(PORT); if (connect(sock, (struct sockaddr*)&server_addr, sizeof(server_addr)) == -1) err(0, "connect"); printf("connected\n"); init_ssl(sock, &ctx, &ssl); /* SSL auf TCP aufsetzen */ /* GET-Request verschluesslt senden: */ len = SSL_write(ssl, BUF, strlen(BUF)); switch (SSL_get_error(ssl, len)) { case SSL_ERROR_NONE: break; default: err(1, "SSL_write: %s", sslerr()); } /* Antwort vom Server lesen und entschluesseln: */ do { len = SSL_read(ssl, retbuf, LEN - 1); switch (SSL_get_error(ssl, len)) { case SSL_ERROR_NONE: break; case SSL_ERROR_ZERO_RETURN: len = 0; break; default: err(1, "SSL_read: %s", sslerr()); } if (len > 0) { retbuf[len] = '\0'; /* Antwort ausgeben */ printf("Antwort: %s\n", retbuf); } while (len > 0); SSL_set_shutdown(ssl, SSL_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN); SSL_free(ssl); SSL_CTX_free(ctx); ERR_remove_state(0); close(sock); } cc ssl_sock_client.c -o ssl_sock_client -lcrypto -lss./ssl_sock_client

| Distributed and Self-organizing Computer Systems Prof. Gaedke AVS / Programmierung Kapitel 2: Funktionsorientierte Ansätze FUNKTIONSORIENTIERTE ANSÄTZE Kapitel 2 WS 12/13 CC-BY-NC: Prof. Dr. Martin Gaedke Professur VSR Fakultät für Informatik TU Chemnitz 8