verteilte systeme (uni lbeck) - kapitel 3 ?? in den daten: byte stuffing von dle-zeichen 38 dle stx...

Download Verteilte Systeme (Uni Lbeck) - Kapitel 3 ?? In den Daten: Byte Stuffing von DLE-Zeichen 38 DLE STX Daten DLE ETX . Byte Stuffing Beispiel • Daten vor Byte Stuffing • Daten „gestuffed“

Post on 06-Mar-2018

220 views

Category:

Documents

7 download

Embed Size (px)

TRANSCRIPT

  • Verteilte Systeme

    Kapitel 3: Nachrichtenreprsentation

    Prof. Dr. Stefan Fischer

    Institut fr Telematik, Universitt zu Lbeck

    https://www.itm.uni-luebeck.de/people/fischer

  • bersicht

    Motivation / Problemstellung

    Reprsentation von Nachrichten ASCII-basiert

    RFC 1014: External Data Representation (XDR)

    Abstract Syntax Notation One (ASN.1)

    Extensible Markup Language (XML)

    JavaScript Object Notation (JSON)

    Objektserialisierung

    Trennung von Nachrichten (Framing)

    Unterscheidung mehrerer Nachrichtentypen

    2

  • Motivation

    3

    Stefan Fischer Stefan Fischer Mensa-Protokoll (MP)

  • Reprsentation von Nachrichten

    Umwandlung Daten(-Strukturen) Payload von

    Netzwerknachrichten

    Marshalling / Unmarshalling

    Serialisierung / Deserialisierung

    Encoding / Decoding

    4

  • 1:1 Kopie aus dem Arbeitsspeicher

    5

    1234234534563469

  • Gre der Datentypen

    Gre verschieden je nach Programmiersprache

    Rechnerarchitektur

    Beispiel: unsigned int Datentyp in C

    6

    Jennic (32 Bit)

    MSP430 (16 Bit)

    PC (64 Bit)

  • Byte Order (Big-/Little-Endian)

    Reprsentation im Speicher je nach

    Rechnerarchitektur

    Problematisch bei Multi-Byte-Werten (int, long int, ...)

    Floating Point unproblematisch IEEE 754

    Darstellung

    Little Endian (least significant lowest address)

    x86, x86-64, MOS-6502 (Apple II, PET), DEC Alpha,

    Altera Nios, Atmel AVR

    Big Endian (most significant lowest address)

    Java, SPARC, Motorola 6800, IBM System/360, IBM

    System/370, ESA/390, and z/Architecture

    7

    Little

    Endian

    Big

    Endian

    Adresse

  • Alignment (Speicherausrichtung)

    Datentypen werden im Speicher aligned abgelegt

    Starten an Adressen, sodass sie in einem Zyklus gelesen werden knnen

    Alignment abhngig von Architektur, Compiler und Sprache

    8

    sizeof(d.d1): 1 sizeof(d.d2): 2 sizeof(d.d3): 4 sizeof(d.d4): 1 Sum : 8 sizeof(d) : 12

    sizeof(d.d1): 1 sizeof(d.d2): 2 sizeof(d.d3): 4 sizeof(d.d4): 1 Sum : 8 sizeof(d) : 12

  • Network Byte Order

    Festlegung der Byte Order fr Nachrichten

    TCP/IP: Big Endian (hchstwertige Bits zuerst)

    Vor dem Senden mssen Daten ggf. konvertiert werden

    BSD Socket API

    C-Funktionen

    ip->len = htons(42);

    9

  • Struktur von Netzwerknachrichten

    Hufig: Textuelle Definition (Dokument) Alle Felder in network byte order oder IEEE 754

    Bytes 0 bis 1: Source port (unsigned int, 16 bit)

    Bytes 2 bis 3: Destination port (unsigned int, 16 bit)

    ...

    Alternative: Grafische Darstellung (z.B. in RFCs)

    10

  • Reprsentation von Nachrichten

    Architektur- und programmiersprachenunabhngige Nachrichtenreprsentation schwierig

    Vielzahl von Formaten, Standards, Frameworks, etc. ASCII-basiert

    RFC 1014: External Data Representation (XDR)

    Abstract Syntax Notation One (ASN.1)

    Extensible Markup Language (XML)

    JavaScript Object Notation (JSON)

    Objektserialisierung

    Google Protocol Buffers

    Apache Thrift

    ...

    11

  • External Data Representation (XDR)

    Ursprnglich definiert von Sun Microsystems

    Ziel: Rechnerunabhngige Darstellung von Daten

    Basis von

    Open Network Computing Remote Procedure Call (ONC RPC),

    damals Sun RPC

    Network File System (NFS)

    Funktionen zum (De-)Serialisieren

    Primitive Typen (xdr_char, xdr_short, xdr_int)

    Arrays (xdr_array)

    Strings (xdr_string)

    12

  • External Data Representation (XDR)

    Serialisierung strukturierter Daten

    Sequentieller Aufruf der Xdr-Funktionen fr primitive

    Datentypen

    Beispiel

    13

  • External Data Representation (XDR)

    Vereinfachung durch Codegenerierung Unix-Tool: rpcgen

    Definition der Datetypen in C-hnlichem Format

    Generierung von C-Header und Sourcedateien

    Generelles Prinzip

    14

  • External Data Representation (XDR)

    Definition in XDR-Sprache (C-hnlich)

    Beispiel: daten.x

    Codegenerierung

    rpcgen -c -o xdrtest.c xdrtest.x

    rpcgen -h -o xdrtest.h xdrtest.x

    15

  • xdrtest.h (Auszug)

    16

  • xdrtest.c (Auszug)

    17

  • Serialisierung

    18

  • Deserialisierung

    19

  • Abstract Syntax Notation One (ASN.1)

    Standardisiert durch ISO/IEC und ITU-T CCITT X.409:1984, heute X.208

    Anwendungsbeispiel: X.509 Zertifikate

    Definition von Datenstrukturen in der ASN.1 Notation

    Verschiedene Serialisierungsformate Basic Encoding Rules (BER)

    Canonical Encoding Rules (CER)

    Distinguished Encoding Rules (DER)

    XML Encoding Rules (XER)

    Packed Encoding Rules (PER)

    Generic String Encoding Rules (GSER)

    20

  • ASN.1: Beispiel

    Beispiel in ASN.1 notation

    Codegenerierung in C asn1c von http://sourceforge.net/projects/asn1c/

    asn1c -gen-PER asn1test.asn1

    Codegenerierung in Java http://bnotes.sourceforge.net/

    21

    http://sourceforge.net/projects/asn1c/

  • ASN.1: Verschiedene Serialisierungen

    XER encoding (81 bytes)

    97 100 300 90

    DER encoding (15 bytes) Bytes (dec): 48 13 2 1 97 2 1 100 2 2 1 44 2 1 90

    Bytes (hex): 0x30 0xD 0x2 0x1 0x61 0x2 0x1 0x64 0x2 0x2 0x1 0x2C 0x2 0x1 0x5A

    PER encoding (7 bytes) Bytes (dec): 97 0 100 2 1 44 90

    Bytes (hex): 0x61 0x0 0x64 0x2 0x1 0x2C 0x5A

    22

  • Extensible Markup Language (XML)

    Auszeichnungssprache zur Darstellung

    hierarchisch strukturierter Daten

    Standardisiert durch das W3C

    Maschinen- und menschenlesbare Textserialisierung

    Wohlgeformt: Korrekte Syntax

    Gltig: Folgt einer Grammatik (XML Schema, DTD,

    Schematron, RELAX NG)

    23

  • Extensible Markup Language (XML)

    XML Schema

    Grammatik

    Gltiges Dokument

    24

  • Extensible Markup Language (XML)

    Typisierte XML Dokumente ohne Schema

    25

  • Extensible Markup Language (XML)

    Textuelle Reprsentation von XML nur eine Mglichkeit

    Alternativen Fast Infoset (ITU-T Rec. X.891, ISO/IEC 24824-1, 2005)

    In ASN.1 formalisiertes Datenformat fr XML Dokumente

    Keine Kenntnis des Schemas erforderlich zur (De-)Serialisierung

    Efficient XML Interchange (EXI, W3C standard) Zwei Betriebsmodi: schemagebunden, schemalos

    Binre Reprsentation von XML Dokumenten Vorteile: Weniger Speicherbedarf, geringere Latenz

    Nachteile: Nicht menschenlesbar, keine weite Akzeptanz

    26

  • JavaScript Object Notation (JSON)

    Ursprnglich zur Reprsentation von Objekten in

    JavaScript verwendet

    Textbasiertes maschinen- und menschenlesbares

    Datenaustauschformat

    Heute fr viele Programmiersprachen verfgbar

    Vornehmlich fr Web-basierte Anwendungen

    Standardisiert in RFC 4627

    27

  • JSON-Datentypen

    Nullwert (null)

    Boolescher Wert (true, false)

    Zahlen (z.B. 100, +100, -100, 2e+6, ...)

    Strings (Hallo, Welt)

    Arrays ([ ])

    Objekte ({ })

    28

  • JSON: Erweitertes Beispiel

    29 Quelle: http://de.wikipedia.org/wiki/JavaScript_Object_Notation

  • Objektserialisierung

    In Programmiersprachen integrierte

    plattformabhngige Serialisierung

    Beispiele

    Java Serializable

    .Net Remoting

    Funktionieren meist nur von VM zu VM da keine

    Unterschiede in der Datenreprsentation

    30

  • Wahl des Serialisierungsformats

    Gre der serialisierten Daten (Payloadgre, Latenz)

    Maschinen- und Menschenlesbarkeit

    Validierbarkeit

    Rechenaufwand

    Komplexitt der Toolchain

    Erweiterbarkeit (z.B. einzelne Felder hinzufgen)

    Versionierung

    Verbreitung (Standards, De-facto Standards)

    Programmiersprachenunabhngigkeit

    Verfgbarkeit fr Programmiersprachen und Zielplattformen

    ...

    31

  • Trennung von Nachrichten (Framing)

    Ausgangslage

    Sender schickt Nachrichten in Form eines Bytestroms

    Beispiele: TCP-Stream, serielle Schnittstelle, Dateien

    Empfnger liest Bytes aus Strom

    Problem: Streams kennen keine Nachrichtengrenzen

    Wann ist eine Nachricht vollstndig empfangen?

    Wann beginnt die nchste Nachricht?

    Ziel: Zerlegung des Bytestroms in einzelne Nachrichten

    Framing: Verfahren zur Trennung

    Rahmen markiert Anfang (und Ende) einer Nachricht

    Framing ist bei Streams notwendig

    32

  • 33

    Namenskonventionen

    TCP UDP

    Anwendungsschicht

    Stream Stream Message Message

    Transportschicht Segment Segment Packet Packet

    Netzwerkschicht

    (IP Layer) Datagram Datagram Datagram Datagram

    Subnetzwerk Frame Frame Frame Frame

    Message Message

  • Beispiel: Senderseite

    Sendet 3 Nachrichten ABC, DEF und GHI

    Schreibt serialisierte Nachrichten auf Strom

    Betriebssystem sendet Pakete vgl. Nagles Algorithm und TCP_NODELAY

    34

    t

    t

  • Nagles Algorithm (nach John Nagle)

    Verhindert Versenden von zu kleinen TCP-Segmenten M

Recommended

View more >