Client/Server-Systeme



Ähnliche Dokumente
Client/Server-Systeme

Wiederholung: Beginn

ObjectBridge Java Edition

7.4 Verteilungsabstraktion in heterogener Umgebung

Szenario 3: Service mit erweiterter Schnittstelle

Workflow, Business Process Management, 4.Teil

Client-Server mit Socket und API von Berkeley

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

ARCHITEKTUR VON INFORMATIONSSYSTEMEN

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

Übungen zu Softwaretechnik

MODBUS/TCP und Beckhoff Steuerelemente

2.3 Applikationen. Protokolle: TCP/IP. Telnet, FTP, Rlogin. Carsten Köhn

Java und XML 2. Java und XML

MC-Hx 006. Einbindung des MC-Hx Modul als MODBus TCP Slave. MB DataTec GmbH. Stand:

I.1 Die Parrot Assemblersprache

Sicherheit in Client/Server-Umgebungen

Überblick. Netzprogrammierung 7b. Zustand in Web Anwendungen. Zustand in HTTP HTTP ist zustandslos Zwei Interaktionen sind unabhängig voneinander

15 Transportschicht (Schicht 4)

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Mobile und Verteilte Datenbanken

Objektorientierte Programmierung

Client/Server-Systeme

SIMP 1.01 Protokollspezifikation (Mindestanforderung)

Befehlssatz zum High Speed Interface-88-USB (HSI-88-USB) (ab Firmware 0.71) (Version 1.2)

KN Das Internet

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/2013. WebSphere MQ Teil 2

Einführung in die Netzwerktechnik

Mainframe Internet Integration. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013. WebSphere Application Server Teil 4

3-schichtige Informationssystem-Architektur

Verteilte Systeme: Übung 4

Web Sockets mit HTML5. Quelle:

WSDL. Web Services Description Language. André Vorbach. André Vorbach

Anwendungsprotokolle: HTTP, POP, SMTP

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version Optional einen DHCP Server.

Kontrollfragen: Internet

TCP/IP-Protokollfamilie

C.M.I. Control and Monitoring Interface. Zusatzanleitung: Datentransfer mit CAN over Ethernet (COE) Version 1.08

Enterprise Applikation Integration und Service-orientierte Architekturen. 09 Simple Object Access Protocol (SOAP)

FOPT 5: Eigenständige Client-Server-Anwendungen (Programmierung verteilter Anwendungen in Java 1)

Protokollbeschreibung Modbus TCP für EMU TCP/IP Modul

Einführung in Javadoc

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

KIP Druckerstatus Benutzerhandbuch KIP Druckerstatus Installations- und Benutzerhandbuch

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

Cisco AnyConnect VPN Client - Anleitung für Windows7

Distributed Computing Group

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Man liest sich: POP3/IMAP

Objektbasierte Entwicklung

OP-LOG

Man unterscheidet zwischen LAN (Local Area Network) und WAN (Wide Area Network), auch Internet genannt.

Einführung. Internet vs. WWW

Installation der SAS Foundation Software auf Windows

Multiuser Client/Server Systeme

CORBA-Konzept. Ziele. Common Object Request Broker Architecture CORBA. Plattformunabhängige Kommunikation Transparente Verteilung von Objekten

Das Handbuch zu Simond. Peter H. Grasch

Voraussetzungen für die Nutzung der Format Rechenzentrumslösung (Hosting)

Rechnernetze. 6. Übung

Dokumentation IBIS Monitor

Fragen und Antworten. Kabel Internet

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Werkzeuge der Informatik UNIX

ecall sms & fax-portal

Step by Step Webserver unter Windows Server von Christian Bartl

Installation mit Lizenz-Server verbinden

Online-Publishing mit HTML und CSS für Einsteigerinnen

Inhaltverzeichnis 1 Einführung Zugang zu den Unifr Servern Zugang zu den Druckern Nützliche Links... 6

VS Praktikum 03 Konzept

Die Installation eines MS SQL Server 2000 mit SP3a wird in diesem Artikel nicht beschrieben und vorausgesetzt.

Themen. Web Services und SOA. Stefan Szalowski Daten- und Online-Kommunikation Web Services

MSXFORUM - Exchange Server 2003 > Konfiguration NNTP unter Exchange 2003

Übung: Verwendung von Java-Threads

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

6 Seminar "Informations- und Kommunikationssysteme" Unterteilung des Vortrags. Das Lookup Service Teil 1. Einführung und Discovery Protocols

WEBSEITEN ENTWICKELN MIT ASP.NET

UNIVERSITÄT LEIPZIG. Mainframe Internet Integration SS2013. Java Remote Method Invocation Teil 3 RMI over IIOP

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13

Samba Linux-Kurs der Unix-AG

eurovat Magento Extension Magento - Extension Extension V1.4.2 Dokumentation Version 1.0 SNM-Portal UG (haftungsbeschränkt) & Co. KG Vorherstraße 17

Rechnernetzwerke. Rechnernetze sind Verbünde von einzelnen Computern, die Daten auf elektronischem Weg miteinander austauschen können.

Modem: Intern o. extern

Anleitung zum Prüfen von WebDAV

Virtuelle COM-Schnittstelle umbenennen

Benutzung der LS-Miniscanner

Referenz-Konfiguration für IP Office Server. IP Office 8.1

Nutzung von GiS BasePac 8 im Netzwerk

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version Deutsch

SOA. Prof. Dr. Eduard Heindl Hochschule Furtwangen Wirtschaftsinformatik

RO-Serie CAN-Übertragungsprotokoll

SNMP und der MIB- Browser von MG-Soft

4 Objektorientierte Programmierung mit Java 4.1 Java-Grundlagen

TCP/UDP. Transport Layer

CORBA. Systemprogrammierung WS

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

Zählen von Objekten einer bestimmten Klasse

Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu)

Transkript:

Client/Server-Systeme Prof. Dr.-Ing. Wilhelm G. Spruth WS 2007/2008 Teil 3 Remote Procedure Call cs 0400 ww6 wgs 09-96

Schwierigkeiten mit Sockets Sockets nur Schnittstelle zur Transportschicht. Keine Unterstützung zur Kommunikationssteuerung Datendarstellung Anwendungsprogrammierer muß selber Protokolle definieren und implementieren um und Kommunikationspartner finden Name Server Austausch von Nachrichten steuern Sync Punkte Eigenschaften des Transportmechnanismus berücksichtigen Verbindungsorientiert verbindungslos Wechsel der Transferrichtung steuern Please Token auf Fehler reagieren (z.b. Verbindungsabbruch) Waisen einheitliche Datendarstellung XDR, ASN.1 Bei komplizierten Anforderungen aufwendige und fehleranfällige Programmierung cs 0408 ww6 wgs 09-98

RPC - Remote Procedure Call Unterprogrammaufruf auf einem anderen Rechner standardisierte Prozeßkommunikation zwischen Rechnern unterschiedlicher Architektur und Hersteller verdeckt den Transportmechanismus des darunterliegenden Netzes; gleiche Schnittstellen für den Aufruf über TCP und UDP RPC definiert: Auffinden des Kommunikationspartners Steuerung des Datenaustausches Wechsel der Transferrichtung Erkennung von Fehlern Überwachung von Zugriffsberechtigungen Datenrepräsentation Der Begriff "RPC" wird sowohl generisch als auch für spezifische Implementierungen verwendet : A.D. Birrel, B.J. Nelson: "Implementing Remote Procedure Calls". ACM Transactions on Computer Systems, Vol. 2, 39-59 (Feb. 1984).

RPC ähnliche Interprozesskommunikation CICS Direct Program Link (DPL) Message based Queuing Corba RMI und RMI/IIOP Microsoft DotNet (DCOM, COM+, DNA) Web Services (SOAP, WSDL, UDDI) cs 0307 ww6 wgs 09-99

Viele Hersteller, viele RPC Produkte OSI SUN CICS ASN.1 RPC, XDR DPL DCE RPC Zeitachse CORBA Microsoft RMI Web Obj. RPC Services Viele Programm Pakete, die RPC intern benutzen z. B. Tivoli (DCE) Entwicklung des RPC cs 0327 ww6 wgs 02-03

SUN RPC (auch als ONC RPC bezeichnet) Die Firma SUN entwickelt 1. RPC (Remote Procedure Call) Aufruf eines Unterprogramms auf einem anderen Rechner ohne Wechsel des Programmkontextes einheitliches Protokoll für die Prozeßkommunikation auf Rechnern unterschiedlicher Architektur und Hersteller 2. XDR (external Data Representation) betriebssystem- und rechnerunabhängige, einheitliche Darstellung von Daten RPC und XDR Protokolle und Quellcode werden von SUN als Public Domain Software zur Verfügung gestellt. Internet Activity Board nimmt RPC und XDR als RFC (Request For Comment) auf: RPC RFC 1050 XDR RFC 1014 cs 0404 ww6 wgs 09-98

OSI Schichten 5-7 Anwendung 4 TCP UDP 3 IP 2 z. B. Ethernet 1 Hardware Schichten der Internet Protokoll Suite cs 0406 ww6 wgs 09-98

OSI Schichten 7 Anwendung 6 XDR 5 RPC 4 TCP UDP 3 IP 2 z. B. Ethernet 1 Hardware Einordnung des SUN RPC in das OSI Modell cs 0405 ww6 wgs 09-98

Was ist eine Prozedur? Die Begriffe Funktion Prozedur Funktionsprozedur Unterprogramm Methode Service werden in der Informatik nicht einheitlich verwendet. Unterschiede u.a. je nach verwendeter Programmiersprache. Im Rahmen der Vorlesung ist eine Prozedur (Methode...) ein ausführbares Programm auf einem Server. Ein Klient ruft das Serverprogramm auf, indem er eine Nachricht an den Server schickt, die den Namen des auszuführenden Programms, eine Vereinbarung über die Eingabedaten und eine Vereinbarung über die Ausgabedaten enthält. Prozedur- Eingabe- Ausgabe name Parameter Parameter Server wartet an einem bestimmten Port auf das Eintreffen der Nachricht.

Klient Server Klienten- Programm warten RPC (... ) ; RPC Aufruf warten Server Programm RPC Ergebnis warten Synchroner RPC Klient blockiert während der Ausführung des Server Programms cs 0316 ww6 wgs 09-00

Client Argumente Server Aufrufende Aufgerufene Prozedur Ergebnisse Prozedur Local Procedure Call Ein aufrufender Prozess führt eine aufgerufene Prozedur in seinem eigenen Adressraum aus Client Aufrufende Prozedur Server Aufgerufene Prozedur Argumente Ergebnisse Argumente Ergebnisse Client Stub Server Stub Request Reply Request Reply Nachricht Nachricht Nachricht Nachricht Netzwerk Remote Procedure Call Client und Server laufen als zwei separate Prozesse. Sie können (Ausnahmefall), müssen aber nicht, auf dem gleichen Rechner laufen. Die beiden Prozesse kommunizieren über Stubs. Stubs sind Routinen, welche lokale Prozedur Aufrufe auf Netzwerk RPC Funktionsaufrufe abbilden. cs 0308u ww6 wgs 09-99

Stubs und Skeletons Der RPC versucht den Anschein zu erwecken, als würde eine lokale Prozedur aufgerufen. Die Klienten Prozedur glaubt, sie hätte die Server Prozedur direkt aufgerufen. In Wirklichkeit ruft sie den Client Side Stub auf. Die Server Prozedur glaubt, sie würde von der Klienten Prozedur aufgerufen. In Wirklichkeit ruft sie der Server Side Stub auf. Die Stubs senden sich gegenseitig Nachrichten für eine transparente Ausführung des RPC. Je nach verwendeter Programmiersprache können die Begriffe procedure function subroutine Unterprogramm eine unterschiedliche Bedeutung haben. Im Zusammenhang mit dem Konzept des RPC sind diese Unterschiede vernachlässigbar. In Corba and Java/RMI werden die Server Side Stubs als Skeletons bezeichnet.

Aufgaben der Stubs (Prozedurrümpfe) 1. Binden (eindeutige Zuordnung) einer Client- Prozedur zu einer Server Prozedur. 2. Parameter des RPC einsammeln und in einen Puffer packen, dessen Inhalt in der Form einer Nachricht an den Empfänger gesendet wird. Dieser Vorgang wird als Parameter marshalling bezeichnet. 3. Fehlerbehandlung Kommunikationsfehler Klientenfehler Serverfehler 4. Transparente Kommunikation Transportmechanismus, z.b. TCP, UDP, SNA, NetBios Datenrepräsentation, z.b. ASN.1, XDR 5. Sicherheit Verschlüsselung, Authentifizierung z.b. Kerberos, SSL vs1010 ww wgs 06-95

Stub RPC Routine SVC System Call User Status Kernel Status Transport Schicht Routine Stub des Klienten-Programms RPC und XDR sind System Calls. Die Routinen laufenteilweise im User Status, verzweigen aber in den Kernel status. cs 0317 ww6 wgs 09-00

Schicht 7 Client Aufrufende Prozedur Server Aufgerufene Prozedur 1 12 7 6 5,6 Client Server Marshalling Stub Stub 2 11 8 5 3,4 TCP/ IP TCP/ IP 3 10 9 4 Netzwerk Marshalling (Schicht 5 und 6) sowie TCP/IP (Schicht 3 und 4) verursachen erheblichen Aufwand: CPU Zyklen Latency Bandbreite Wichtiger Gesichtspunkt bei der Dimensionierung von komplexen Client/Server Infrastrukturen. Bis zur Einführung des Pentium (ca. 1995) wurde TCP/IP auf den Arbeitsplatzrechnern kaum eingesetzt. s 0310u ww6 wgs 09-99

FF..FF RPC RPC RPC Service Service Service RPC Server andere Prozesse Betriebssystem Kernel 00..00 Die RPC Services können entweder in getrennten virtuellen Adressenräumen laufen, oder alternativ als Threads innerhalb eines virtuellen Adressenraums implementiert werden. Ein RPC Service wird auch als Implementation bezeichnet. Häufig hunderte unterschiedlicher RPC Services auf dem gleichen Rechner. Der RPC Server stellt Verwaltungsdienste für seine RPC Services zur Verfügung, z.b. das Binding. Auf einem Rechner können mehrere RPC Server laufen, die z.b. unterschiedliche Arten von RPC Services gruppieren.

RPC Dienstprogramme RPC Dienstprogramme sind Prozeduren. Ein RPC Programm (RPC Service, RPC Implementation) kann mehrere Prozeduren enthalten, evt. auch in mehreren Versionen Bei RMI entspricht eine Procedure einer Java Methode.

Identifikation eines RPC Dienstprogrammes o Jedes RPC Dienstprogramm (RPC Procedure) auf einem Server ist eindeutig durch das Tripel Programmnummer Versionsnummer Prozedurnummer program number version number procedure number identifiziert. Jede Nummer wird durch einen 4-Byte langen Integer- Wert dargestellt. o Klient kennt nur Internetadresse und das Tripel Programmnummer, Versionsnummer, Prozedurnummer um über einen RPC ein Dienstprogramm des Servers aufzurufen. o Portnummer des Servers ist dem Klienten unbekannt. cs 0201 ww wgs 06-94

0 31 Transaktions-ID Senderichtung RPC - Protokollversionsnummer Programmnummer Versionsnummer Prozedurnummer Berechtigungsnachweis Berechtigungsnachweis-Verifizierung Parameter des Prozeduraufrufes RPC - Protokollkopf cs 0315 ww6 wgs 05-94

Die RPC Ebenen RPC bietet Schnittstellen in mehreren Ebenen an. Die wichtigsten sind: High Level einfache Schnittstelle um einen RPC abzusetzen keine besonderen Kenntnisse über Netzwerkarchitektur notwendig basiert auf dem UDP-Protokoll Lower Level erlaubt detaillierte Kontrolle über Verbindung Auswahl des Protokolls (z.b. TCP oder UDP) Übermittelung komplexer Datenstrukturen verschiedene Arten der Zugriffsüberwachung Setzen von Zeitkonstanten (timeouts) Überwachen der Sockets Reaktion auf Fehler Call Back Mechanismen cs 0409 ww6 wgs 06-94

High Level RPC

RPC Binding Wie findet der Klient die Lokation des RPC Services und des dazugehörigen Servers? 2 Probleme für den Klienten: 1. Server identifizieren (z.b. Internet Adresse) 2. RPC Service identifizieren (z.b. Port Nummer) Portnummer muss aus Portierungsgründen variabel sein. Binding ist die Abbildung (mapping) von Programmnummer, Versionsnummer und Prozedurnummer auf die physische Adresse (z.b. Internet Adresse und Port Nummer). Ein Binder ist ein Dienst der das Binding zur Verfügung stellt (z.b.. portmapper beim Sun RPC). Der Binder hat drei Functionen: 1. Register 2. Unregister 3. LookUp Der High Level RPC setzt voraus, das der Klient die physische Adresse des Servers kennt (z.b. Internet ID).

#include... int main(... ) { int result; static char *datain ; static char *dataout ; result=callrpc(host, PROGNUM, VERSNUM, PROCNUM, inproc, &datain, outproc, &dataout); return(1); } High Level RPC Client Programm inproc() ist eine XDR Routine, welche die Daten von &datain encodiert um dem Server das Request Argument mitzuteilen. outproc() ist eine XDR Routine, welche die Antwort des Servers nach &dataout decodiert. xdr_u_long ist ein Beispiel für inproc() oder outproc() für ein Filter für die Übertragung eines Parameters.

#include... progname(... ) { RPC Service Implementation /* hier passiert die eigentliche Arbeit der RPC Server Routine */ } int main(void) { } RPC Server /* register with port mapper so that the client knows where to contact for service */ registerrpc(prognum, VERSNUM, PROCNUM, progname, inproc, outproc); /* run the server RPC */ svc_run(); High Level RPC Server Programm Ein RPC Server Programm besteht in der Regel aus zwei Teilen: dem eigentlichen Server, und einem oder mehreren Services ( auch als Server Implementation bezeichnet) Wenn der Server eine Anforderung für PROGNUM, VERSNUM, PROCNUM erhält, versucht er progname auszuführen.

Arbeitsweise des High Level RPC Aufrufes Der High Level RPC Aufruf bewirkt unter der Decke 2 RPC Aufrufe: 1. Aufruf des Server-Portmappers. Dieser teilt dem Klienten die zu der angegebenen Programmnr./Versionsnummer dazugehörige Portnummer des Serverrechners mit. 2. Aufruf des Server Programms über die so ermittelte Portnummer. Jeder High Level RPC Aufruf benötigt somit für den Benutzer unsichtbar 2 reale Aufrufe (zusätzliche Netzbelastung). Das aufgerufene Server-Programm kann aus mehreren Prozeduren bestehen, von denen der RPC Aufruf eines in Anspruch nimmt. Nur das Server-Programm ist über die Portnummer ansprechbar. Das Server-Programm enthält einen Dispatcher, welcher in die gewünschte Prozedur verzweigt. High Level RPC Aufrufe benutzen das verbindungslose UDP Protokoll. Die Verwendung von TCP ist nur in Verbindung mit den lower level RPC Aufrufen möglich. vs1016 ww + wgs 05-94

Auswahl von Portnummern 1-255 reserviert für Internet Dienste 256-1023 ursprünglich reserviert für privilegierte Benutzer, z.b. Superuser in UNIX, heute ebenfalls für Internet Dienste reserviert 1024-5000 transienter Bereich. Portnummern werden dynamisch generiert 5001-65535 Portnummern frei für Anwendungen Well known Ports sind reservierte Ports für offizielle Dienste, z.b.: ftp 21 telnet 23 smtp 25 http 80 pop3 110 RPC Port Mapper 111 snmp 161 zu finden z.b. in der Datei etc/services Unsere S/390 Rechner in Tübingen und Leipzig werden über Port 23 angesprochen Ein Web Browser fordert alle HTTP Verbindungen von Port 80 des über die URL adressierten Web Servers an; es ist möglich einen anderen Port explizit zu spezifizieren, z.b. Port 81 mit : http//:www.xxx.com:81 cs 0142 ww6 wgs 08-02

Portmapper RPC Nummern sind 32 Bit Integer. TCP und UDP verwenden 16. Bit Portnummern. Server Programme müssen portierbar sein; well known Portnummern sind nicht möglich. Der Portmapper ist eine RPC Prozedur des Servers, welche: über eine well known Portnummer des Servers erreichbar ist, spezifisch Portnummer 111, einem Paar (Programmnummer, Versionsnummer) eine transportspezifische Portnummer zuordnet. Die Anfrage an den Portmapper muß Programmnummer und Versionsnummer enthalten. Return = Portnummer. Der Portmapper ermöglicht das dynamische Binden entfernter Programme, da die Menge der verfügbaren Portnummern beschränkt ist. Zum Registrieren und Deregistrieren von Prozeduren und Programmen dienen die APIs registerrpc() (benutzt UDP), svc_registerrpc(), svc_unregister().

Client Rechner Server Rechner Port Port 111 Mapper Port a Port b 2 1 Client Port RPC Program c Service 3 Client - Server Adressierung 1. RPC Server etabliert Adresse, auf der er auf Anforderungen lauscht. Er registriert diese Adresse (hier Port c) beim Port Mapper 2. Klient erfragt beim Port Mapper die Adresse der gewünschten Server Prozedur 3. Klient öffnet Übertragungsweg mit der gewünschten Server Prozedur cs 0411 ww6 wgs 06-94

Erfragen der Portnummer cs 0403a ww6 wgs 07-03

Erfragen der Portnummer (2) Beim Hochfahren des Servers registrieren sich die Serverprogramme beim Port Mapper. Dieser erstellt Einträge im seiner Abbildungstabelle. Port Nr. 111 ist eine well known Portnummer, und immer für den Port Mapper Prozess reserviert. Portnummern 1027 und 2435 liegen im transienten Bereich 1024...5000. Bei jedem Hochfahren des Servers können andere Portnummern innerhalb des dynamischen Bereiches zugeordnet werden. Port Nr. 5374 liegt in dem für Anwendungen vorgesehenen Bereich 5001... 65553. Der Socket benötigt Portnummer und Protokoll (TCP, UDP), sowie die Internet ID. Beim SUN RPC muß der Klient die Internet ID des Servers kennen. Die Programmnummern (0X2000500A bzw. 0X32005000) sind 32-Bit-Werte und liegen im Bereich 0X20000000... OX3FFFFFFF, der von SUN für benutzerdefinierte Programmnummern vorgesehen ist. Die beiden Serverprogramme haben jeweils die Versionsnummern 1 bzw. 12. Es ist die Aufgabe des Serverprogramms, in eine von mehreren möglichen Prozeduren zu verzweigen.

Dynamische Adressumsetzung Portmapper unterhält eine Abbildungstabelle, welche RPC Programmnummern auf Portnummern abbildet (umsetzt). Das Betriebssystem des Servers kann bei jedem Boot- Vorgang (IPL) andersartige Portnummern zuordnen. Abbildungstabelle RPC Programm Nr. Port Nr. Protokoll 2000500A 1027 UDP 3200500C 2435 TCP

Unterschiede in der Datenrepräsentation Mainframe (z/os), AS/400 Rechner verwenden EBCDIC-Zeichen (etwa 2/3 aller wirtschaftlich relevanten Daten), die meisten anderen Architekturen verwenden ASCII (etwa 1/3). Beide setzen teilweise inkompatiblen Code Pages ein. Der Großteil der Rechner verwendet 16 oder 32 Bit Integer in Zweierkomplement-Arithmetik; die Cyber Rechner arbeiten mit dem 60 Bit-Einerkomplement. Das Bitmuster 0xFFF0 bedeutet -15 im Einerkomplement, und -16 im Zweierkomplement. Neben den IEEE Gleitkomma Standards (binary) gibt es zahlreiche andere Darstellungen, u.a. von IBM (Hex), Digital, wissenschaftliche Großrechner mit Worddarstellung, andere. Integer Werte in C sind entweder 16 Bit oder 32 Bit. Unter den Windows Betriebssystemen laufende Compiler können inkompatible Datenpräsentation erzeugen. (Wenig Probleme bei homogenen S/390 oder Java (Bytecode) C/S Systemumgebungen). cs 0422 ww6 wgs 06-95

Adresse Hauptspeicherinhalt 004710 1 2 11 3 4 1 2 3 4 5 6 7 8 12 5 6 13 7 8 Big Endian 004710 1 2 11 3 4 7 8 5 6 3 4 1 2 12 5 6 13 7 8 Little Endian Wenn Halbworte oder Worte im Hauptspeicher gespeichert sind, dann befindet sich an der adressierten Hauptspeicherstelle: - Das wertniedrigste Byte bei Little Endian Rechnern - Das werthöchste Byte bei Big Endian Rechnern Die Bytes eines Halbwortes oder Wortes werden bei Little Endian Rechnern in umgekehrter Reihenfolge abgespeichert wie bei Big Endian Rechnern. css0503 ww6 wgs 10-96

Hauptspeicheradressen sind Byteadressen - es wird ein bestimmtes Byte adressiert. Bei Zugriff auf ein Halbwort, Wort oder Doppelwort im Hauptspeicher bezieht sich Adresse entweder auf das werthöchste oder das wertniedrigste Byte. Little Endian Das wertniedrigste Byte wird adressiert. Beispiele: DEC Alpha DEC VAX Intel Pentium, Pentium Pro Intel 80860 Big Endian Das werthöchste Byte wird adressiert. Beispiele: HP Precision IBM ESA/390 IBM/Motorola PowerPC (mit little Endian Option) MIPS 10000 (mit little Endian Option) Motorola 68040 Motorola 88110 (mit little Endian Option) Sun Sparc Beim Internet (TCP/IP) wird der Big Endian Standard eingesetzt. Die Network Byte Order, RFC 791, legt fest, wie Bits und Bytes im Netzwerk übertragen werden. css0502 ww6 wgs 10-96

Data Representation or Byte Ordering When you build an RPC application, XDR isolates your network application from the differences in data representations across machines. It is handled consistently and elegantly below the application. If you write a network IPC application, you must isolate both sides of the network application from byte order issues. Both incoming and outgoing data must be explicitly converted to network order or most significant byte first. Different processors store numbers in different order and formats. The following functions provide a variety of conversions: ntohs (3N) ntohl (3N) htons (3N) htonl (3N) Convert network to host short-integer. Convert network to host long-integer. Convert host to network short-integer. Convert host to network long-integer. For example. before you send a short integer out through a network IPC, you should first pass it through the htons ( ) filter function: u_short is; is = htons(is); your_network_write_routine(ipc_w_descriptor, &is, sizeof(is)); Any incoming short integers should be sanitized as follows: your_network_read_routine(ipc_r_descriptor, &is, sizeof(is)); is = ntohs(is); You should get in the habit of using the conversion filters, even if you know the networked machines are compatible. Take a look in the <net.inet/in.h> include file and you'll probably find the macros that actually do the work. On Motorola or SPARC processors, the macros are empty as network order is the same as host order. On Intel (e.g., 80386) processors, the macros swap byte order. In other words, if you call them and they are not needed, the compiler will remove them. It pays to be safe, making it possible for future heterogeneous clients and servers to work without revision. --------------------------------------------------------------------------------------------------------------------------------------- - htons() und ntohs() konvertieren short integer, die beiden anderen Funktionen konvertieren long integer. unsigned long int htonl( unsigned long int hostlong ); unsigned short int htons( unsigned short int hostshort ); unsigned long int ntohl( unsigned long int netlong ); unsigned short int ntohs( unsigned short int netshort ); 'ntohs()', 'ntohl()', 'htons()', and 'htonl()' are not part of the C standard, and thus do not guarentee portability. The POSIX implementations of 'ntohs()', 'ntohl()', 'htons()' and 'htonl()' take arguments of 'uint16_t' and 'uint32_t' argument types and can be found in the header file netinet/in.h. The Windows implementations use 'unsigned short' and 'unsigned long' and can be found in the header file winsock2.h.

n : m Transfer Syntax n : 1 : m Transfer Syntax Konvertierungsmöglichkeiten XDR und ASN.1 sind die beiden etablierten Standards. CICS (COMMAREA), CORBA (IDL), JAVA/RMI (Java Interface) und Web Services (WSDL) benutzen eigene Standards. The X.694 specification defines a mapping from XSD to ASN.1. Consequently, the XML schema referenced in a WSDL document can be considered an abstract schema, with an equivalent ASN.1 description, whose instances can be encoded using XML or an ASN.1 encoding. cs 0415u ww6 wgs 05-96

XDR und ASN.1 Zwei konkurrierende Transfer Syntax Standards mit einen sehr ähnlichen aber miteinander inkompatiblen Funktions-umfang: XDR External Data Representation (SUN) ASN.1 Abstract Syntax Notation (ISO) SUN RPC benutzt XDR. Definiert in RFC 1014. ASN.1 ist ein Plattform-übergreifender Standard. SNMP verwendet ASN.1, ebenso DCE. Corba, DCOM/Dotnet und Java/RMI benutzen eigene Standards. CICS verwendet den COMMAREA Standard css0504 ww6 wgs 10-96

Abstrakte Syntaxnotation 1 (ASN.1) 8 verschiedene Zeichenketten: Numeric String 0,1,2...9 Printable String A,B,...Z, a,b,...z, 0,1,2,...9, () +-.,/:=? Teletex Zeichensatz Bildschirmtext Zeichensatz Internationale ASCII Zeichensätze GeneralizedTime 5/12 bedeutet 5. Dezember und nicht 12. Mai 1727 07 05 21 05 38.8 bedeutet fünf Minuten und 38,8 Sekunden nach 21 Uhr am 5. Juli 1727 vs1111 ww wgs 06-94

XDR External Data Representation (XDR) ist ein abstrakter technischer Kommunikationsstandard, der von Sun Microsystems definiert wurde, um den Datenaustausch zwischen Servern und Clients hardwareunabhängig zu standardisieren. XDR ist eine Implementierung der Darstellungsschicht des OSI-Modell zur Netzwerkkommunikation und ist im RFC 1014 verbindlich festgeschrieben. Eine Reihe von Programmiersprachen unterstützen das Lesen und Schreiben von XDR-Daten durch Bibliotheksfunktionen (z.b. xdr_*-funktionen in der libc unter Unix für C, XDR-Modul für Perl, xdrlib- Modul für Python). XDR definiert eine Repräsentation für die gebräuchlichsten Datentypen wie z.b. Integer, Strings oder Arrays, ist jedoch selbst untypisiert. Die XDR-Byte-Reihenfolge wird in den aktuellen Standards auf Big Endian festgelegt, was der Network Byte Order von TCP/IP entspricht. Eine XDR-Einheit entsprechen 4 Bytes. Gleitkommazahlen werden in einfacher und doppelter Genauigkeit nach dem IEEE 754-Standard kodiert.

#include... int main(... ) { int result; static char *datain ; static char *dataout ; result=callrpc(host, PROGNUM, VERSNUM, PROCNUM, inproc, &datain, outproc, &dataout); } return(1); High Level RPC Client Programm inproc() ist eine XDR Routine, welche die Daten von &datain encodiert um dem Server das Request Argument mitzuteilen. outproc() ist eine XDR Routine, welche die Antwort des Servers nach &dataout decodiert. Vorgefertigte XDR Routinen (Filter) aus der XDR Library xdr_char xdr_double xdr_enum xdr_float xdr_int xdr_long Translates between C language characters and their external representations. Translates between C language double-precision numbers and their external representations. Translates between C language enumerations and their external representations. Translates between C language floats and their external representations. Translates between C language integers and their external representations. Translates between C language long integers and their external representations

XDR Filter XDR Filter können sowohl kodieren als auch dekodieren cs 0420 ww6 wgs 09-00

Lower Level RPC

Basis-Datentypen int: float: char: alle ganzen Zahlen (im Rechner darstellbar) Menge der Gleitkommazahlen Menge der Zeichen Datentyp Verbund (struct) Zusammenfassung von zusammengehörigen Daten unterschiedlicher Typen. _ Beispiel Vorname Name Adresse Alter Fritz Müller Hauptstr. 73 38 Hans Albers Marktstr. 44 63 Programmiersprachliche Darstellung struct person { char vorname[30] char name[30] char adresse[100] int alter } Ein Verbund Datentyp in einer Client/Server Nachricht wird oft als Unit Record bezeichnet.

Interface Definition Language XDR Filter sind ideal wenn nur einfache Parameter übertragen werden. Komplexere Parameter, z.b eine Zeile in einer relationalen Datenbaktabelle werden als Verbund Datentyp übertragen. Beispiel: C++ Struktur. SAP/R3 und z/os benutzen die Bezeichnung Unit Record. Die unterschiedlichen Parameter und unterschiedlichen Prozeduren eines RPC Programms stellen die Schnittstelle (Interface) dar, über die der Klient mit dem Server kommuniziert. Beim lower Level RPC wird diese Schnittstelle mit Hilfe einer Interface Definition Language (IDL) spezifiziert. Die IDL Beschreibung der Schnittstelle enthält die Namen und Parameter aller Proceduren des RPC Programms, sowie Angaben zur Fehlerbehandlung. Jede Prozedur muss in der Schnittstellenbeschreibung festgehalten werden

IDL Compiler Ein IDL Compiler liest die IDL Schnittstellenbeschreibung und produziert zwei Stub Proceduren für jedes Server Programm (Client Side Stub und Server Side Stub). Eine IDL dient der Beschreibung von Schnittstellen. Schnittstelle: Beschreibung von Prozeduren und Parametern eines Server-Dienstes (Server Programm). Stub-Generator generiert aus der Schnittstellen- Beschreibung Client- und Server-Stubs. sprachabhängig, z.b.: C/C++, Cobol, PL/1, Java, Ada. Vorgehensweise Der Server Programmierer implementiert das Server Programm und linked es mit dem Server Side Stub Der Klient Programmierer implementiert das Klienten Programm und linked es mit dem Client Side Stub Die Stubs sind zuständig, alle Details der Kommunikation zwischen Klient und Server zu steuern und zu verwalten.

/* date.x - Specification of remote date and time service. */ /* Define 2 procedures: bin_date_1() returns the binary time and date (no arguments). str_date_1() takes a binary time and returns a human-readable string. */ program DATE_PROG { version DATE_VERS { long BIN_DATE(void) = 1; /* procedure number = 1 */ string STR_DATE(long) = 2; /* procedure number = 2 */ } = 1; /* version number = 1 */ } = 0x31234567; /* program number = 0x31234567 */ Lower Level RPC Interface Definition Language (IDL) RPCL

Corba oder Java/RMI Objekt DATE_PROG Methode BIN_DATE Methode STR_DATE Vergleich mit der IDL eines objekt-orientierten RPC

Sun RPC Sprache (RPCL) Ermöglicht formale Beschreibung eines Sun RPC Aufrufes. RPCL ist ein Beispiel für eine Interface Definition Language (IDL). Compiler der RPC Sprache ist rpcgen erzeugt Klient und Server Stubs Die RPC Sprache beinhaltet zusätzlich Elemente für XDR (XDR Sprache; die RPC Sprache entstand historisch aus einer Erweiterung der XDR Sprache) rpcgen Compiler Lauf erzeugt zusätzlich XDR Filter. vs1011 wp wgs 06-94

IDL File rpcgen xyz rpcgen Compiler Client Client Header Server Server Program Stub Files Stub Program Compile Link Compile Link ausführbarer Klienten Code ausführbarer Server Code Erstellung einer Lower Level Remote Procedure Call Anwendung

DCE Remote Procedure Call Der DCE RPC ist eine Weiterentwicklung des SUN RPC. Bestandteil des Open Group Distributed Computing Environment (DCE) Standards. 20 unterschiedliche Nachrichten Typen definiert, davon einige nur für den verbindungslosen oder den verbindungsorientierten Transport. Die Nachrichten werden als Protocol Data Units (PDU s) bezeichnet. Der DCE RPC kann konfiguriert werden, die Host Computer Sicherheitseinrichtungen zu benutzen. DCE verwendet ASN.1. Sowohl der Sun - als auch der DCE RPC sind heute unter nahezu allen Betriebssystemen verfügbar. Der Sun RPC dominiert unter Solaris und Linux. Unter den HP-UX, IBM AIX und z/os sowie den Windows Betriebssystemen wird der DCE RPC bevorzugt eingesetzt. cs 0806 ww6 wgs 06-98

Aufruf eines z/os Mainframe-Programms aus Java Die Integration von OS/390 Mainframe-Programmen in Javabasierte Client/Server-Systeme funktioniert prinzipiell recht einfach. In der folgenden Methode wird ein OS/390 RPC-Programm namens KFZRES01 aufgerufen.diesem Programm werden zwei Strings übergeben,einer für die Eingabeparameter,der zweite für die durch KFZRES01 erzeugte Ausgabe. /** *Folgende Methode ruft einen RPC auf dem Mainframe auf. */ private boolean rpccall(string inputstring, StringBuffer outbuffer){ RPC m_rpc =new RPC(); try { //Mainframe braucht UserID und Password! m_rpc.setuser( k3216 ); m_rpc.setpwd( TESTPW ); //Name des aufzurufenden Programms setzen m_rpc.setrpcname( KFZRES01 ); //remote procedure call ausführen m_rpc.execute(inputstring,outbuffer); return true; } catch (Exception e) { m_statefield.settext( Execute-Error: +m_rpc.getapimessage()); return false; } } Seitens der z/os Mainframe-Programme ändert sich rein gar nichts gegenüber der Nutzung per 3270-Terminal. Das Programm KFZRES01 weiß also nicht, ob es durch ein Java-Programm benutzt wird oder über konventionelle z/os Mainframe-Terminals. cs 0328 ww6 wgs 02-03

Second Generation RPCs Inhärent objekt-orientierte RPCs wie Corba RMI Microsoft DotNET verfügen über eine volle IDL Funktionalität. Im Gegensatz dazu keine IDL erforderlich bei Java RMI CICS Distributed Program Link (DPL) da die Datenrepräsentation impliziert ist. XML - RPC Teil der Web Services, nicht objekt-orientiert. XML - RPC ist ein Remote Procedure calling Protokoll welches über das Internet arbeitet. Eine XML - RPC Nachricht ist eine HTTP- POST Request. Der Body der Request ist in XML geschrieben. Eine Procedure wird auf dem Server ausgeführt und der Wert (value) wird in XML formattiert zurückgegeben. Procedure Parameter können Scalare, Ziffern, Strings, Datumsangaben usw. sein.

cs 0313 wgs 09-00

Schicht 7 Anwendungen 5-6 Named RPC Pipes CPI-C Sockets NetBIOS APPC NLM API LU 6.2 API 4 TCP/IP NetBIOS SNA IPX Gebräuchliche Programmierschnittstellen (zahlreiche Querverbindungen weitere Protokolle: HTTP, 3270 (verwendet SNA) Corba / IIOP, RMI, DCOM, verwenden Sockets und/oder RPC. Microsoft SMB verwendet Named Pipes. CICS Distributed Program Link cs 0401 ww wgs 01-96

Anwendungen SMB TCP/UDP NetBIOS NetBEUI IPX/SPX IP, PPP Ethernet, Token Ring, Seriell Service Message Block (SMB) Protokoll Stack Ein SMB ist ein Kommando mit dessen Hilfe ein Klient auf einen Server zugreift. Beispiel: Die Partition C: eines Servers erscheint auf einem Klienten als Partition E:. Microsoft proprietärer Standard, 1987 definiert, wird mit allen Windows Betriebssystemen (3.11, 95, 98, NT) als Klient und als Server ausgeliefert. Mehrere inkompatible Varianten. Klient sendet negprot Kommando an Server, um Protokollvariante zu vereinbaren. NT LAN Manager, OS/2 LAN Server, PATHWORKS (Digital) sowie LAN Manager for Unix verwenden SMB, ebenso SAMBA s NT Version. Microsoft TCP Implementierung ist in Wirklichkeit eine NetBIOS over RCP/IP Implementierung, entsprechend RFC 1001 und 1002, von Microsoft alternativ auch als NBT oder NetBT bezeichnet. CIFS (Common Internet File System) ist ein neuer, SMB basierter Microsoft Standard. Wird ein NT Netzwerk installiert, erfolgt automatische die Installation des.arbeitsstationsdienstes. Es erscheint Meldung: Installiert Unterstützung für das SMB (Server Message Block) Protokoll. Anderes Beispiel: Interlnk, Intersvr Kommandos. cs 0417x ww6 wgs 11-99