DIY Personal Fabrication Drahtlose Kommunikation Juergen Eckert – Informatik 7

Preview:

Citation preview

DIY

Personal Fabrication

Drahtlose Kommunikation

Juergen Eckert – Informatik 7

Fahrplan

• Bluetooth und WiFi Module (kurz)• Proprietäre Kommunikationsmodule• Robuste Kommunikation• ISO OSI

Bluetooth (1/2)• 1994 Entwicklung bei Ericsson• Bluetooth nach Wikingerkönig (Harald Blauzahn)

– Logo zeigt altnordischen Runen für H und B• 1998 Gründung Bluetooth Special Interest Group (SIG)

– Ericsson, Intel, IBM, Nokia, Toshiba, ...• 2001 Version 1.1 (IEEE 802.15.1-2002), erste Produkte für den Massenmarkt• 2004 Bluetooth Version 2.0 (ohne IEEE): Enhanced Data Rate (EDR) mit 3 Mbps• 2009 Version 4.0: Low Energy

– Nicht abwärtskompatibel– Stromsparender aber langsamer als Vorgänger– BT 4.x und älter kombiniert = „smart ready“

• Wireless Personal Area Network (WPAN)– „Kabelersatz“ für die Verknüpfung von Rechner mit Peripherie, tragbaren Geräten, PDAs,

Handys– Statt Infrarot, spontane drahtlose Kommunikation– Eingebettet in andere Geräte, preiswert, kurze Reichweiten

Bluetooth (2/2)

• Funkübertragung– 79 1-MHz-Kanäle im 2,4-GHz-ISM-

Band mit Frequency Hopping Spread Spectrum (FHSS)

– Gaussian Frequency Shift Keying (GFSK) Modulation, 1-100 mW Sendeleistung

• Topologien– Pikonetze: Stern mit Master mit

Slaves– Scatternetze: überlappende Pikonetze

• Sicherheit– Authentifikation und Verschlüsselung

Fotos: Wikipedia

FHSS

FSK

Bluetooth Pikonetz

• Geräten vernetzen sich spontan (ad-hoc)

• Ein Gerät wird zum Master, die anderen verhalten sich als Slaves

• Master bestimmt die Sprungfolge, Slaves müssen dieser folgen

• Jedes Pikonetz ist durch seine Sprungfolge definiert

• Bis zu 7 aktive Slaves, bis zu 200 geparkte Slaves, weitere im Standby

• Kommunikation immer Master Slave (nicht Slave Slave)

M=MasterS=Slave

P=ParkedSB=Standby

MS

P

SB

S

S

P

P

SB

Bluetooth Scatternetz• Verbindung mehrerer räumlich naher Pikonetze• Slaves können zwischen den Pikonetzen hin und her springen• Master kann Slave in anderem Pikonetz sein, aber nicht

nochmal Master

M=MasterS=SlaveP=ParkedSB=Standby

MS

P

SB

S

S

P

P

SB

M

S

S

P

SB

Pikonetze(jedes mit max. Datenrate)

Bluetooth Host Stack

Radio

Baseband

Link Manager

Control

HostControllerInterface

Logical Link Control and Adaptation Protocol (L2CAP)Audio

TCS BIN SDP

OBEX

vCal/vCard

IP

NW-Anw.

TCP/UDP

BNEP

RFCOMM (serial line interface)

AT modemcommands

Telefonie-AnwendungAudio Verwaltung

AT: attention sequenceOBEX: object exchangeTCS BIN: telephony control protocol specification – binaryBNEP: Bluetooth network encapsulation protocol

SDP: service discovery protocolRFCOMM: radio frequency comm.

PPP

Bluetooth in DIY

• RFCOMM stellt serielle Verbindung her• Kommunikation implementieren

komplex/zeitaufwendig → Module nutzen• Module mit seriellem Interface:– BT 2.1: HC05, BTM-112– BT 4.0: HM11, HM10, nRF8001

• Mikrocontroller mit BT 4.0:– nRF51822 (inkl BT Treiber)

HC05 @ EXP-tech.de 10Euro

WLAN in DIY

• Hohe Kommunikationsgeschwindigkeit idR unwichtig• Hoher Energiebedarf• Kommunikation implementieren komplex/zeitaufwendig

→ Module nutzen• Module mit integriertem TCP/IPv4 Stack:

– ESP8266 (China, 2,50 Euro)• Serielle Kommunikation• Integrierter 32bit Mikrocontroller (GNU Toolchain)

– TI CC3300 (> 30Euro)• SPI

– Atmel WILC3000• Bluetooth 4.0 + WiFi IEEE 802.11 b/g/n • Seit 2015

Adafruit CC3300

Proprietäre Kommunikation

• Wieso eine eigene Kommunikation aufbauen?– Standard braucht zu viel Strom– Latenzzeit nicht deterministisch– Kosten reduzieren– Reichweite erhöhen– ...– Because we can...?

• Effizienteste Lösung verwenden

Transmitter Receiver (Old School)

• Unidirektional– Frequenz (üblich 0.1-5kHz Bandbreite) an

Dateneingang von Transmitter anlegen– Gleiche Frequenz liegt (inkl. evtl. Störungen) an

Datenausgang des Empfängers• Encodierung und Decodierung obliegt dem

Benutzer (im MCU)• Einfacher Aufbau (DIY mögl.)• Große Reichweite

RF Link Kit @ EXP-Tech

Transceiver

• Bidirektional (Sender und Empfänger in einem)• En- und Decodierung übernimmt das

Modul– RFM12B (5 Euro)

• 433/868 Mhz, 115.2kbps, SPI• 16-bit RX Fifo (fast beliebige Paketlängen)• Kontinuierliches Auslesen erforderlich,

siehe UART Int.

– NRF24L01+ (5 Euro)• 2,4Ghz, 2Mbps, SPI• Max 32byte Pakete (längere Pakete in ein

paar Folien)

RFM12B @ Sparkfun.com

nrf24L01+ @ Ali-Express

Physikalische Schicht

Medienzugriff (MAC) (1/2)

• Zwei oder mehr Teilnehmer greifen auf ein Medium zu → Kollision → Koordinierung erforderlich

• Möglichkeiten für den Mehrfachzugriff– Feste Kanalaufteilung

• Geeignetes Multiplexverfahren in feste Kanäle für Knotenpaare aufgeteilt

• bekannt: Frequenz-, Zeit-, Raum-, Codemultiplex• + Sprachkommunikation• - Datenkommunikation: Daten werden typischerweise sporadisch

versendet, ineffiziente Nutzung des Mediums

1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4

Zeitschlitz Rahmen

Time Division Multiplex Access (TDMA)

Zeit

Medienzugriff (MAC) (2/2)

• (Weitere) Möglichkeiten für den Mehrfachzugriff– Zufallszugriffverfahren

• Stationen greifen zufällig auf Medium zu, eventuelle gleichzeitige Übertragungen (Kollisionen) müssen beachtet werden

• Urform: ALOHA, 1970ern zur Vernetzung von Rechnern der Uni Hawaii (Annahme: Medium kaum belegt):– Wenn die MAC-Schicht eines Knotens von der Netzwerkschicht ein

Datagramm erhält, wird der Rahmen sofort gesendet– Wenn der Empfänger ihn fehlerlos erhält, sendet er eine positive

Bestätigung (ACK) zurück– Wenn nach einem Timeout kein ACK zurückkommt, wartet der Sender

eine zufällige Wartezeit (Backoff) und wiederholt dann das Senden

Carrier Sense Multiple Access (CSMA)

• Knoten prüfen vor dem Senden, ob Medium belegt (listen before talking)

• Reduziert Kollisionen, trotzdem immer noch mögl.

wait fordata

trans-mission

/m=0 fromabove(data)/

random(0,...,2m-1)t/

timeout/m++

rcv(ACK)/stop_timer;m=0

wait for ACK

backoff

[finished]/start_timer

m = #collisionst = constant time

[free]/

wait oneslot 1-p

p[busy]/slot/

sense

P-persistentesCSMA

Mögliche Kollisionen

• „Gleichzeitiger“ Sendestart

• Hidden-Terminal Problem:– A, B hören sich– C, B hören sich– A, C hören sich nicht,

A und C wissen nichts von möglichen Kollisionen bei B

– genauso möglich durch Signaldämpfung:

AB

C

A B C

A’s signalstrength

space

C’s signalstrength

Weitere suboptimale Effekte

• Exposed-Terminal Problem– A, B1 und C, B2 hören sich

– B1, B2 hören sich

– A, B2 sowie C, B1 hören sich nicht

– während B1 an A sendet, KÖNNTE B2 an C senden

A B1 CB2

Zuverlässiges Übertragungsprotokoll (1/2)

• Funk ist sehr störanfällig (selbst bei optimalem Medienzugriff)

Sehr lange Nachricht

Daten: „Sehr lan“

ACKBobAliceAlles? ACK angekommen?ACK2

1) Bestätigungen werden NIE bestätigt!Timeouts nutzen!

ACK2 angekommen?

Zuverlässiges Übertragungsprotokoll (2/2)Sehr lange Nachricht

Daten: „Sehr lan“

ACKBobAlice

2) Daten müssen konsistent gehalten werden!Sequenznummern nutzen!

Daten verloren?Nochmal...

Daten: „Sehr lan“

ACK Daten:„Sehr lanSehr lan“

WTF??

Gesendet:„Sehr lan“

Daten: „ge Nachricht“

Fehlerkontrolle Übersitcht

Zuverlässiges Übertragungspro

tokoll

Host A Host B

rdt_send(data)

udt_send(pkt)

rdt_rcv(data)

udt_rcv(pkt)

Bitfehler, Paketverlust

udt_rcv(ACK) udt_send(ACK)

Sendeprozeß Empfangsprozeß

UnzuverlässigerKanal

Zuverlässiges Übertragungspro

tokoll

Protokolle für zuverlässigen Transport

• Stop-and-Wait– Sender fügt zur Fehlererkennung Prüfsumme (z.B. CRC) hinzu– Empfänger schickt Bestätigung (acknowledgment, ACK)– Wenn diese nach einem Timeout nicht eintrifft, wird das Paket

erneut gesendet– Dadurch können evtl. Duplikate gesendet werden, um diese zu

erkennen, benötigt man noch Sequenznummern (SQN) – Bei großem Bandbreiten-Verzögerungsprodukt: Sender ist die meiste

Zeit blockiert, ineffizient• Schiebefensterprotokolle (sliding window protocols)

– Mehrere Pakete auf einmal senden, um Kanal zu füllen– Go-Back-N und Selective Repeat– Unterscheiden sich bei Timeout, Bestätigungen, Sendewiederholung

Stop-and-Wait (Sender)

wait fordata

wait for ACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) SQN(ACK)SQN]/

timeout/udt_send(pkt);start_timerudt_rcv(ACK)

[biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

udt_rcv(ACK)/

Stop-and-Wait (Empfänger)

wait forpacket

/SQN=1

udt_rcv(pkt)[biterror(pkt) SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Rechnerkommunikation, Transportschicht 24

wait for data

wait for ACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait for paket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

timeSQN = ? SQN = ?

Stop-and-Wait: normaler Ablauf

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 25

wait for data

wait for ACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

timeSQN = 1 SQN = 1

Stop-and-Wait: normaler Ablauf

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 26

wait fordata

wait for ACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait for paket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

timeSQN = 1 SQN = 1

Stop-and-Wait: normaler Ablauf

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 27

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

timeSQN = 1 SQN = 1

Stop-and-Wait: normaler Ablauf

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 28

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

timeSQN = 1 SQN = 1

Stop-and-Wait: normaler Ablauf

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 29

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

timeSQN = 1 SQN = 1

ACK1

SQN = 2

Stop-and-Wait: normaler Ablauf

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 30

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

timeSQN = 1 SQN = 2

ACK1

Stop-and-Wait: normaler Ablauf

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 31

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

timeSQN = 1 SQN = 2

ACK1

SQN = 2

Stop-and-Wait: normaler Ablauf

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 32

wait fordata

wait for ACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

timeSQN = 2 SQN = 2

ACK1

Stop-and-Wait: Paketverlust

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 33

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 2 SQN = 2

Stop-and-Wait: Paketverlust

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 34

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 2 SQN = 2

Stop-and-Wait: Paketverlust

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 35

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 2 SQN = 2

Pkt2

Stop-and-Wait: Paketverlust

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 36

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/ data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 2 SQN = 2

Pkt2

Stop-and-Wait: Paketverlust

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 37

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 2 SQN = 3

Pkt2

ACK2

Stop-and-Wait: Paketverlust

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 38

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 2 SQN = 3

Pkt2

ACK2

Stop-and-Wait: Paketverlust

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 39

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 3 SQN = 3

Pkt2ACK2

Stop-and-Wait: Paketverlust

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 40

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 3 SQN = 3

Pkt2ACK2

Stop-and-Wait: Verlust eines ACKs

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 41

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 3 SQN = 3

Pkt2ACK2

Pkt3

Stop-and-Wait: Verlust eines ACKs

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 42

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 3 SQN = 3

Pkt2ACK2

Pkt3

Stop-and-Wait: Verlust eines ACKs

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 43

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 3 SQN = 4

Pkt2ACK2

Pkt3

ACK3

Stop-and-Wait: Verlust eines ACKs

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 44

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 3 SQN = 4

Pkt2ACK2

Pkt3

ACK3

Stop-and-Wait: Verlust eines ACKs

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 45

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) vSQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 3 SQN = 4

Pkt2ACK2

Pkt3ACK3

Pkt3

Stop-and-Wait: Verlust eines ACKs

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 46

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 3 SQN = 4

Pkt2ACK2

Pkt3ACK3

Pkt3

Duplikat!

Stop-and-Wait: Verlust eines ACKs

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 47

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 3 SQN = 4

Pkt2ACK2

Pkt3ACK3

Pkt3

ACK3

Stop-and-Wait: Verlust eines ACKs

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 48

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 3 SQN = 4

Pkt2ACK2

Pkt3ACK3

Pkt3

ACK3

Stop-and-Wait: Verlust eines ACKs

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 49

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 4 SQN = 4

Pkt2ACK2

Pkt3ACK3

Pkt3ACK3

Stop-and-Wait: Verlust eines ACKs

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 50

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 4 SQN = 4

Pkt2ACK2

Pkt3ACK3

Pkt3ACK3

Stop-and-Wait: verzögertes ACK

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 51

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 4 SQN = 4

Pkt2ACK2

Pkt3ACK3

Pkt3ACK3

Pkt4

Stop-and-Wait: verzögertes ACK

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 52

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 4 SQN = 4

Pkt2ACK2

Pkt3ACK3

Pkt3ACK3

Pkt4

Stop-and-Wait: verzögertes ACK

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 53

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 4 SQN = 5

Pkt2ACK2

Pkt3ACK3

Pkt3ACK3

Pkt4

ACK4

Stop-and-Wait: verzögertes ACK

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 54

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 4 SQN = 5

Pkt2ACK2

Pkt3ACK3

Pkt3ACK3

Pkt4

ACK4

Stop-and-Wait: verzögertes ACK

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 55

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 4 SQN = 5

Pkt2ACK2

Pkt3ACK3

Pkt3ACK3

Pkt4

Pkt4

ACK4

Stop-and-Wait: verzögertes ACK

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 56

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 4 SQN = 5

Pkt2ACK2

Pkt3ACK3

Pkt3ACK3

Pkt4

Pkt4

ACK4

Duplikat!

Stop-and-Wait: verzögertes ACK

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 57

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/ data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 4 SQN = 5

Pkt2ACK2

Pkt3ACK3

Pkt3ACK3

Pkt4

Pkt4

ACK4

Duplikat!

Stop-and-Wait: verzögertes ACK

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 58

wait fordata

wait for ACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 4 SQN = 5

Pkt2ACK2

Pkt3ACK3

Pkt3ACK3

Pkt4

Pkt4

ACK4

Stop-and-Wait: verzögertes ACK

Duplikat!udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 59

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 5 SQN = 5

Pkt2ACK2

Pkt3ACK3

Pkt3ACK3

Pkt4

Pkt4 ACK4

Stop-and-Wait: verzögertes ACK

Duplikat!udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 60

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 5 SQN = 5

Pkt2ACK2

Pkt3ACK3

Pkt3ACK3

Pkt4

Pkt4 ACK4

ACK4

Stop-and-Wait: verzögertes ACK

udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 61

wait fordata

wait forACK

/SQN=1

rdt_send(data)/pkt=pkt(SQN,data,CRC);udt_send(pkt);start_timer udt_rcv(ACK)

[biterror(ACK) v SQN(ACK)SQN)]/

timeout/udt_send(pkt);start_timer

udt_rcv(ACK) [¬biterror(ACK) SQN(ACK)=SQN]/stop_timer; SQN++

wait forpaket

/SQN=1

udt_rcv(pkt)[biterror(pkt) v SQN(pkt)SQN]/udt_send(ACK)

udt_rcv(pkt) [¬biterror(pkt) SQN(pkt)=SQN]/data=extractdata(pkt);rdt_rcv(data);ACK=ACK(SQN,CRC);udt_send(ACK);SQN++

Pkt1

ACK1

Pkt2

timeSQN = 5 SQN = 5

Pkt2ACK2

Pkt3ACK3

Pkt3ACK3

Pkt4

Pkt4 ACK4

ACK4Duplikat!

Stop-and-Wait: verzögertes ACK

udt_rcv(ACK)/

Open Systems Interconnection Modell

Schnittstelle

Anwendung

Präsentation

Sitzung

Transport

Netzwerk

Verbindung

Bitübertragung

Host A

Physical Physical

Data link Data link

Network Network

Router Router

Netzwerkprotokoll Host-RouterVerbindungsprotokoll Host-Router

Bitübertragungsprotokoll Host-Router

Transportprotokoll

Sitzungsprotokoll

Präsentationsprotokoll

Anwendungsprotokoll

SchichtName der ausgetauschtenInformationseinheit

Application

Presentation

Session

Transport

Network

Data link

PhysicalHost B

PPDU

APDU

SPDU

TPDU

Packet

Frame

Bit

7

6

5

4

3

2

1

PPDU

APDU

SPDU

TPDU

Paket

Rahmen

Bit

Interface

Layer

Protokolle Router-Router

Folie: 10-12

Folie: 13-15

Folie: ab 16

Folie 8+9OSI von 1977 !!

Datenübertragung• Gilt auf für DIY Projekte:

– Abstieg: jeweils ein Kopf dazu, Aufstieg: Kopf wird entfernt

Datagram

ApplicationTransportNetworkLinkPhysical

ApplicationTransportNetworkLinkPhysical

Source

HtHnHl MHtHn MHt M

M

Destination

HtHnHl MHtHn MHt M

M

HtHnHl M LinkPhysical

NetworkLinkPhysical

HtHnHl M

HtHnHl MHtHn M

HtHnHl MHtHn M

Link-layer switch

Router

MessageSegment

Frame

Cross-Layer Optimierung• Schichtentrennung wird aufgehoben• Steigerung der Effizienz

Projektabschluss

• Abschlussvortrag gleich im Anschluss• 6 Seiten IEEEtran Latex Dokumentation (PDF)

– 48h vor der Prüfung• Rechnungen bei mir abgeben

– Inklusive Bankverbindung– Bis zu 40 Euro pro gemeldeter Person– NICHT zur Prüfung

• FabLab Gutscheine (je 50Euro) für – „Beste Doku“– „Smarteste Umsetzung“– Benachrichtigung per Mail (und Homepage)

Nächstes mal...