BEEP The Blocks Extensible Exchange Protocol Core

Slides:



Advertisements
Ähnliche Präsentationen
Dynamische WEB-Applikationen
Advertisements

M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
der Universität Oldenburg
der Universität Oldenburg
1 Multicast Routing in Ad Hoc Netzen.ppt Oliver Finger_ TECHNISCHE UNIVERSITÄT ZU BRAUNSCHWEIG CAROLO-WILHELMINA Institut für Betriebssysteme und.
Service Discovery in Home Environments
Kurt Rosenberg. C# für.NET oder.NET für C# is(C# == C++ && Java)? true : false ; reines C# Ausblick Überblick.
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Programmierkurs Java WS 98/99 Vorlesung 15 Dietrich Boles 17/02/99Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität.
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 -
JDBC & ODMG Motivation - Beispielanwendung JDBC - DriverManager - Connection - Statement - ResultSet Anwendung ODMG - Objektmodell /ODL - OQL - Java-Binding.
Binäre Bäume Richard Göbel.
Java: Dynamische Datentypen
FH-Hof Servlets Richard Göbel. FH-Hof Konzept Servlets werden auf der Server-Seite durch ein Formular aufgerufen werten die Eingaben aus einem Formular.
FH-Hof Sockets in Java Richard Göbel. FH-Hof Kommunikation über das Internet - Grundlagen Ein Rechner wird im Internet über die so genannte IP- Adresse.
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Internet Protokolle und Formate 1.1 HTTP 1.2 HTML 1.3 SGML 2. XML 3. WAP Matthias Thränhardt Sebastian Weber.
IF-ELSE-IF-Ketten Weiter mit PP..
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
M a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 9 IO – Streams in Java Sommersemester 2003 Lars Bernard.
Dynamische Webseiten Java servlets.
Objektorientierte Programmierung JDK-Klassenbibliothek
Link Layer. Physical Layer Link Layer Host Controller Interface L2CAP Attribute Protocol Attribute Profile PUIDRemote ControlProximityBatteryThermostatHeart.
Filiale pea09 Die Einbindung der MySQL-Datenbank in das Servlet.
4. Design Gliederung: Einführung Anforderungsdefinition Analyse Design
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.
Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich
F açade P attern By Nicolas Lanquetin. Façade Pattern Structural Pattern Bietet ein gemeinsames Interface, anstatt vieler Interfaces eines Subsystems.
Modulare Programmierung
DVG Ausnahmen. DVG Was sind Programmfehler? 4 Programm erzielt gar kein Ergebnis. 4 Berechnetes Ergebnis stimmt nicht mit dem erwarteten.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung in die Programmierung Datensammlung
Das Roboterprojekt Einführung Der erste Entwurf Das Thread-Konzept Hindernisse Website.
Verzweigung.
.NET – Quo Vadis? Dariusz Parys Developer Group Microsoft GmbH.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Rekursive Funktionen (Fakultät)
| AVS / Programmierung Kapitel 1: Programmierung Einführung Motivation – Entwicklung verteilter Anwendungen im Internet Welchen Dienst soll die Anwendung.
Servlet III Java Webanwendung Webcontainer Web.xml
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,
Socket-Programmierung
Projekt Alcatraz Java RMI / Spread - Gruppe A4.
The free XML Editor for Windows COOKTOP Semistrukturierte Daten 1 Vortrag Semistrukturierte Daten 1 COOKTOP The free XML-Editor for Windows
Informatik – Programmierpraktikum Alexander Volodarski Gruppe 14
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Exception Handling in Java
Praxis der Internet-Programmierung
XML IV: Cocoon 2.
Making people work together! Folie 1 NEXPLORE AG Stefan von Niederhäusern Einfache Anwendung der SuisseID durch das Software Development KIT
2002 XML 10.1XML I (Parsing) 17.1XML II (XLST,XPATH) (keinPraktikum) 24.1XML III FOP 31.1Cocoon2, XSP 7.2Struts, Turbine, Velocity 14.2Testat / Evaluation.
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
CuP - Java Zwölfte Vorlesung Klassen – Komposition und Vererbung Freitag, 15. November 2002.
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000.
Beispielanwendung von Java Threads
Programmiervorkurs WS 2014/15 Methoden
1 Karim El Jed TECHNISCHE UNIVERSITÄT ZU BRAUNSCHWEIG CAROLO-WILHELMINA Institut für Betriebssysteme und Rechnerverbund
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Robuste Programme durch Ausnahmebehandlung
© 2004 Pohlig Informatik Kurse © 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung:
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
 Präsentation transkript:

BEEP The Blocks Extensible Exchange Protocol Core KM-/VS-Seminar Wintersemester 2002/2003 Betreuer: Frank Strauß

Übersicht Einleitung Konzeption von BEEP Core Nachrichtaustausch Frame der Nachrichten Sitzungsverwaltung Abbildung auf TCP Implementierung der Konzeption mit Java BEEP Client Server Zusammenfassung

1. Einleitung BEEP – Ein standardisierter Rahmenwerk für Internet- Protokoll RFC 3080 und RFC 3081 - Marshall Rose Zielsetzung des BEEPs Verbindungsorientierung, Nachrichtenorientierung, Asynchronisation

2. Konzept von BEEP Core BEEP ist ein Anwendungsprotokoll nach dem Peer-to-Peer- Prinzip. Funktionalitäten von BEEP: Trennen einer Nachricht von der Nächsten (Frame), Kodierung der Nachrichten, Unterstützung mehrfacher logischer Kommunikationskanäle, Berichten über Störungen, Aushandlung von Verschlüsselungsparametern, Aushandlung von Authentisierungsparametern.

2.1 Nachrichtaustausch Rolle Austauscharten Listening-Rolle – auf eine eingehende Verbindung wartet. Initiating-Rolle – eine Verbindung zum Listener erstellen will. Client und Server. Austauscharten message/reply message/error message/answer

2.2 Frame der Nachrichten Die BEEP-Nachrichten sind in der Regel durch MIME ‎[8] strukturiert. Text oder binärer Code. Beschreibung der Inhalttypen durch MIME-Kopf - „entity- headers“. Defaultwerte: „Content-Type“ - „application/octet-stream“, „Content-Transfer-Encoding“ - „binary“. Beschreibung der Nachrichten durch XML.

2.2 Frame der Nachrichten Syntax eines BEEP-Frames message frame frame header payload trailer header SP SP type channel SP SP megno more SP CR LF seqno size payload OCTET frame CR LF END

2.2 Frame der Nachrichten Kopf eines Frames channel identifiziert, auf welchem Kanal die BEEP-Peers miteinander kommunizieren sollen. msgno identifiziert die Nummern der Nachrichten. more ist ein Fortsetzungsindikator, der entweder mit „*“ oder mit „.“ gekennzeichnet wird. seqno identifiziert die Sequenznummer des ersten Oktetts in der Nutzlast. size kennzeichnet die Anzahl der Oktetts in der Nutzlast eines Frames.

2.2 Frame der Nachrichten Nutzlast Abschluss Ein Beispiel Besteht aus null oder mehren Oktetts, Zugeordnet durch Sequenznummer. Abschluss besteht aus der Zeichenkette END <CR> <LF> Ein Beispiel C: MSG 0 1 . 52 120 C: Content-Type: application/beep+xml C: <start number=’1’> C: <profile uri=’http://iana.org/beep/SASL/OTP’ /> C: </start> C: END

2.3 Sitzungsverwaltung Verteilung der Sitzung in verschiedenen Kanäle Kanal 0 - Verwaltungskanal Regelung durch Profile session . channel 0 (management) channel 1 (profile A) channel n (profile P, Q)

2.3 Sitzungsverwaltung Nachrichtenelement Nachrichten wird präsentiert durch Nachrichtenelement (XML-Element). Fünf Grundtypen von Nachrichtenelement für Sitzungsverwaltung, Beziehungen zwischen Rolle, Nachrichtenarten und Nachrichtenelement: Rolle MEG RPY ERR I und L greeting error I oder L start profile close ok

2.3 Sitzungsverwaltung Greeting-Nachrichten Start-Nachrichten L: RPY 0 0 . 0 110 L: Content-Type: application/beep+xml L: <greeting> L: <profile uri=’http://iana.org/beep/TLS’ /> L: </greeting> L: END I: RPY 0 0 . 0 110 I: Content-Type: application/beep+xml I: <greeting /> I: END Start-Nachrichten C: RPY 0 1 . 30 120 C: Content-Type: application/beep+xml C: C: <start number=’1’> C: <profile uri=’http://iana.org/beep/SASL/OTP’ /> C: <profile uri=’http://ibr.cs.tu-bs.de/fangming/contact’ /> C: </start> C: END

2.3 Sitzungsverwaltung Error-Nachrichten C: RPY 0 2 . 390 80 C: Content-Type: application/beep+xml C: <close number=’1’ code=’200’ /> C: END S: RPY 0 2 . 211 27 S: Content-Type: application/beep+xml S: <error code=’550’>still working</error> S: END Close-Nachrichten und OK-Nachrichten C: RPY 0 2 . 390 80 C: Content-Type: application/beep+xml C: C: <close number=’1’ code=’200’ /> C: END S: RPY 0 2 . 210 257 S: Content-Type: application/beep+xml S: S: <ok /> S: END

2.3 Sitzungsverwaltung Profile Vordefinierte Profile für: Ein Profile stellt dar, welche Nachrichten über den Kanal übertragen werden sollen/können. Ein Profile ist durch einen URI identifiziert und regelt die Syntax und Semantik zugelassener Nachrichten. Vordefinierte Profile für: Kanalmanagement, TLS – „Transport Layer Security“ – und Authentisierung.

2.4 Abbildung auf TCP Sitzungsverwaltung TCP A TCP B BEEP Peer A CLOSED OPEN-Active OPEN-Passive SYN, … SYN+ACK, … OPEN-Success ESTABLISHED ACK, … . …, <close number=’1’> BEEP Peer A BEEP Peer B Initiator Listener RECEIVE (<close>) SEND (<ok>) SEND (<close>) RECEIVE (<ok>) CLOSE …, <ok> FIN, … CLOSING TERMINATE

2.4 Abbildung auf TCP Nachrichtenaustausch TCP A TCP B BEEP Peer A ESTABLISHED SEND (<profile>) SEND (<start>) RECEIVE (<profile>) …, <profile url=’…’> . BEEP Peer A BEEP Peer B Client Server …, <start number=’1’> RECEIVE (<start>) initial channel 1 successful SEND (<error>) RECEIVE (<error>) …, <error code=’550’> …, <start number=’2’> initial channel 2 unsuccessful SEND (<greeting>) RECEIVE (<greeting>) …, <greeting> SEND (<query>) …, <query uid=’fm007’> RECEIVE (<query>) search person RECEIVE (<person>) …, <person tel#=’…’>

3. Implementierung der Konzeption mit Java BEEP Bestandteil der BEEP Konzeption – Klassenabstraktion Channel ... sendMSG() getProfile() getSession() Message ... getChannel() getMsgno() getAnsno() sendMSG() sendRPY() sendANS() sendERR() sendNUL() Session ... startChannel() firedChannelClose() firedChannelStarted() firedChannelReceived() sendProfile() -zero channel -session Reply ... getNextReply() hasNext() receiveRPY() receiveERR() receiveANS() receiveNUL() TLSProfile Profile Init() ... Init()

3. Implementierung der Konzeption mit Java BEEP Client import org.beepcore.beep.core.*; import org.beepcore.lib.Reply; import org.beepcore.transport.tcp.*; ... public static void main (String args[]) { Session session; try { session = AutomatedTCPSessionCreator.initiate( "dragon", 8888, new ProfileRegistry()); } catch (BEEPException e) { // exception handling } Channel channel; channel = session.startChannel( "http://ibr.cs.tu-bs.de/fangming/ADDRESSBOOK"); //profile uri } catch (BEEPError e) { // catch and deal with errors System.out.print("error code: "+ e.getCode()); // catch lower level exceptions String message = "<person>"+ "<name>Fangming</name>" + "<tel>0049-531-2145611</tel>"+ "</person>"; ByteDataStream msgst = new ByteDataStream( request.getByes("utf-16")); msgst.setContentType("text/xml"); msgst.setTransferEncoding("utf-16"); Reply reply = new Reply(); channel.sendMSG(msgst, reply); while (true) { Message repmsg = reply.getNextReply(); DataStream ds = repmsg.getDataStream(); InputStream is = ds.getInputStream(); // the reply is a stream, not a string byte inputbuf[]=new byte[256]; int inputlen; String reptxt; while (ds.isComplete() == false || is.available() > 0) { inputlen = is.read(inputbuf); if (inputlen > 0) { reptxt = reptxt.concat(new String(inputbuf, 0, inputlen, "utf-16"); } System.out.println("got back:" +reptxt); Thread.currentThread.sleep(6000); } // end while } // end main

3. Implementierung der Konzeption mit Java BEEP Server public class AddressbookProfile implements Profile, StartChannelListener, MessageListener { ... public StartChannelListener init(String uri, ProfileConfiguration config) throws BEEPException { return this; } public void startChannel( Channel channel, String encoding, String data) throws StartChannelException { channel.setDataListener(this); public void closeChannel(Channel channel) throws CloseChannelException { channel.setDataListener(null); public void receiveMSG(Message message) throws BEEPError, AbortChannelException { DataStream ds = message.getDataStream(); AddressbookEntry newentry; String replytxt = "<person uid=\"" + String.valueOf(newentry.getUID()) + \""/>"; DataStream reply=new ByteDataStream( replytxt.getBytes("utf-16")); reply.setContentType("text/xml"); try { message.sendRPY(reply); } catch (BEEPException e) { // exception handling } ... } // end class AddressbookProfile

4. Zusammenfassung BEEP ist ein verbindungsorientiertes Protokoll und unterstützt die asynchrone Interaktion. Die ausgetauschten Daten werden mit XML kodiert. BEEP hat die Fähigkeit von Peer-to-Peer, Client-to-Server oder Server-to-Server. Der „Missbrauch“ von HTTP für Anwendungsprotokolle kann durch BEEP elegant abgelöst werden.