DIY Personal Fabrication Drahtlose Kommunikation Juergen Eckert – Informatik 7.

Slides:



Advertisements
Ähnliche Präsentationen
Powerpoint-Präsentation
Advertisements

Mobile Systeme und drahtlose Netzwerke
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
Physical Layer. Link Layer Host Controller Interface L2CAP Attribute Protocol Attribute Profile PUIDRemote ControlProximityBatteryThermostatHeart Rate.
Link Layer Security in BT LE.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Spontane Vernetzung mit Bluetooth / Kleines Seminar / SS 2002 / Sascha Seipp.
Ultra Wideband Radio (Seminar „Advanced Topics in Networking“ – Rolf Winter) Von Martin Goralczyk.
2 Kommunikationssysteme bieten Kommunikationsdienste an, die das Senden und Empfangen von Nachrichten erlauben (sending & receiving messages) bestehen.
Kirsten Kropmanns Allgemeine Technologien II 21. April 2009
1 JIM-Studie 2010 Jugend, Information, (Multi-)Media Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
CSMA/CD Zugriffsverfahren
E / IDE Enhanced / Integrated Device Elektronics
Bluetooth von Thomas Hennig.
Aufgaben der Sicherungsschicht
Internet facts 2008-II Graphiken zu dem Berichtsband AGOF e.V. September 2008.
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Netze Vorlesung 11 Peter B. Ladkin
GAP Generic Access Profile. Physical Layer Link Layer Host Controller Interface L2CAP Attribute Protocol Attribute Profile PUIDRemote ControlProximityBatteryThermostatHeart.
Prof. Dr. Bernhard Wasmayr
1. Einführung Lernziele: Auffrischen des Wissens aus Rechnernetze
Sicherheit in drahtlosen Netzen
Wireless LAN Mobile Computing Seminar SS 2003 Ba Kien Tran
Einsatz intelligenter Netzwerktechnologien in der Domotik
CCNA1 – Module 3 (TIs 3.3.x) Wireless Media Fragen:
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
Distanzbasierte Sprachkommunikation für Peer-to-Peer-Spiele
2 Distanzbasierte Sprachkommunikation für Peer-to-Peer-Spiele.
Netzwerkkomponenten (Hardware)
Applikationsschichten
MicroLink dLAN.
20:00.
„Küsse deine Freunde“ – FlexKom-App teilen
Zusatzfolien zu B-Bäumen
Christian Schindelhauer Sommersemester Vorlesung
A MAC protocol for full exploitation of Directional Antennas in Ad-hoc Wireless Networks Ad hoc Network Seminar Referent: Dominik Erb basierend auf einer.
Übersicht Definition Netzwerk
Das OSI Schichtenmodell
für Weihnachten oder als Tischdekoration für das ganze Jahr
Bluetooth Autor: Ron Nitzsche IAV02 14.April 2008.
Vertiefung und Erweiterung des Referates von M. Dreier
PROCAM Score Alter (Jahre)
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Warum gibt es Netzwerke?
Symmetrische Blockchiffren DES – der Data Encryption Standard
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Netzwerke mit Wireless LAN
Folie Beispiel für eine Einzelauswertung der Gemeindedaten (fiktive Daten)
Christian Schindelhauer Sommersemester Vorlesung
Systeme II Christian Schindelhauer Sommersemester 2007
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Systeme II Christian Schindelhauer Sommersemester 2006.
Folie Einzelauswertung der Gemeindedaten
Anforderungen an Automotive Bussysteme
Die 7 Schichten des OSI-Schichtmodells
J-Team: Gymnasium Ulricianum Aurich und MTV Aurich Ein Projekt im Rahmen von UlricianumBewegt.de Euro haben wir schon…  8000 mal habt ihr bereits.
Ethernet-Applikationsschichten
Datum:17. Dezember 2014 Thema:IFRS Update zum Jahresende – die Neuerungen im Überblick Referent:Eberhard Grötzner, EMA ® Anlass:12. Arbeitskreis Internationale.
Schutzvermerk nach DIN 34 beachten Ethernet und Echtzeit.
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
von Prof. Thomas Deutsch
Kirsten Kropmanns Allgemeine Technologien II 9. März 2009
von Lukas Spiegel & Alexander Dür
Random Access: Einleitung TDMA-, FDMA- oder CDMA-Mehrfachzugriffssysteme Benutzertrennung über die Zeit, die Frequenz oder über Codes Random Access Systeme.
Systeme II 2. Die physikalische Schicht Christian Schindelhauer Technische Fakultät Rechnernetze und Telematik Albert-Ludwigs-Universität Freiburg Version.
1. Einführung Lernziele: Auffrischen des Wissens aus Rechnernetze
2 Kommunikationssysteme
ISO / OSI Referenzmodell
Aufbau und Konfigurationen
 Präsentation transkript:

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, Version 1.1 (IEEE ), 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, 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=Master S=Slave P=Parked SB=Standby M S P SB S S P P

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=Master S=Slave P=Parked SB=Standby M S P SB S S P P M S S P Pikonetze (jedes mit max. Datenrate)

Bluetooth Host Stack Radio Baseband Link Manager Control Host Controller Interface Logical Link Control and Adaptation Protocol (L2CAP) Audio TCS BINSDP OBEX vCal/vCard IP NW-Anw. TCP/UDP BNEP RFCOMM (serial line interface) AT modem commands Telefonie-AnwendungAudioVerwaltung AT: attention sequence OBEX: object exchange TCS BIN: telephony control protocol specification – binary BNEP: Bluetooth network encapsulation protocol SDP: service discovery protocol RFCOMM: 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) 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 WiFi IEEE 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 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) Sparkfun.com 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 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 for data trans- mission /m=0 from above(data)/ random(0,...,2 m -1)  t/ timeout/ m++ rcv(ACK)/ stop_timer; m=0 wait for ACK backoff [finished]/ start_timer m = #collisions t = constant time [free]/ wait one slot 1-p p [busy]/ slot/ sense P-persistentes CSMA

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: A B C A B C A’s signal strength space C’s signal strength

Weitere suboptimale Effekte Exposed-Terminal Problem – A, B 1 und C, B 2 hören sich – B 1, B 2 hören sich – A, B 2 sowie C, B 1 hören sich nicht – während B 1 an A sendet, KÖNNTE B 2 an C senden A B1B1 C B2B2

Zuverlässiges Übertragungsprotokoll (1/2) Funk ist sehr störanfällig (selbst bei optimalem Medienzugriff) Sehr lange Nachricht Daten: „Sehr lan“ ACK Bob Alice Alles? ACK angekommen? ACK 2 1)Bestätigungen werden NIE bestätigt! Timeouts nutzen! ACK 2 angekommen?

Zuverlässiges Übertragungsprotokoll (2/2) Sehr lange Nachricht Daten: „Sehr lan“ ACK Bob Alice 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ässiger Kanal 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 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++ udt_rcv(ACK)/

Stop-and-Wait (Empfänger) wait for packet /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++ time 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 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++ time SQN = 1 Stop-and-Wait: normaler Ablauf udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 26 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 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++ time SQN = 1 Stop-and-Wait: normaler Ablauf udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 27 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 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++ Pkt1 time SQN = 1  Stop-and-Wait: normaler Ablauf udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 28 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 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++ Pkt1 time SQN = 1  Stop-and-Wait: normaler Ablauf udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 29 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 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++ Pkt1 time SQN = 1  ACK1 SQN = 2 Stop-and-Wait: normaler Ablauf udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 30 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 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++ Pkt1 time SQN = 1 SQN = 2  ACK1 Stop-and-Wait: normaler Ablauf udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 31 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 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++ Pkt1 time SQN = 1 SQN = 2 ACK1 SQN = 2 Stop-and-Wait: normaler Ablauf udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 32 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 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++ Pkt1 time SQN = 2 ACK1 Stop-and-Wait: Paketverlust udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 33 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 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++ Pkt1 ACK1 Pkt2  time SQN = 2 Stop-and-Wait: Paketverlust udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 34 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 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++ Pkt1 ACK1 Pkt2  time SQN = 2 Stop-and-Wait: Paketverlust udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 35 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 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++ Pkt1 ACK1 Pkt2 time SQN = 2 Pkt2  Stop-and-Wait: Paketverlust udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 36 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 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++ Pkt1 ACK1 Pkt2 time SQN = 2 Pkt2  Stop-and-Wait: Paketverlust udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 37 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 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++ Pkt1 ACK1 Pkt2 time SQN = 2 SQN = 3 Pkt2  ACK2 Stop-and-Wait: Paketverlust udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 38 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 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++ Pkt1 ACK1 Pkt2 time SQN = 2 SQN = 3 Pkt2  ACK2 Stop-and-Wait: Paketverlust udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 39 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 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++ Pkt1 ACK1 Pkt2 time SQN = 3 Pkt2 ACK2 Stop-and-Wait: Paketverlust udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 40 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 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++ Pkt1 ACK1 Pkt2 time SQN = 3 Pkt2 ACK2 Stop-and-Wait: Verlust eines ACKs udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 41 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 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++ Pkt1 ACK1 Pkt2 time SQN = 3 Pkt2 ACK2 Pkt3  Stop-and-Wait: Verlust eines ACKs udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 42 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 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++ Pkt1 ACK1 Pkt2 time SQN = 3 Pkt2 ACK2 Pkt3  Stop-and-Wait: Verlust eines ACKs udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 43 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 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++ Pkt1 ACK1 Pkt2 time SQN = 3 SQN = 4 Pkt2 ACK2 Pkt3  ACK3 Stop-and-Wait: Verlust eines ACKs udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 44 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 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++ Pkt1 ACK1 Pkt2 time SQN = 3 SQN = 4 Pkt2 ACK2 Pkt3  ACK3 Stop-and-Wait: Verlust eines ACKs udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 45 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 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++ Pkt1 ACK1 Pkt2 time SQN = 3 SQN = 4 Pkt2 ACK2 Pkt3 ACK3 Pkt3  Stop-and-Wait: Verlust eines ACKs udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 46 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 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++ Pkt1 ACK1 Pkt2 time SQN = 3 SQN = 4 Pkt2 ACK2 Pkt3 ACK3 Pkt3  Duplikat! Stop-and-Wait: Verlust eines ACKs udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 47 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 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++ Pkt1 ACK1 Pkt2 time SQN = 3 SQN = 4 Pkt2 ACK2 Pkt3 ACK3 Pkt3  ACK3 Stop-and-Wait: Verlust eines ACKs udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 48 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 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++ Pkt1 ACK1 Pkt2 time SQN = 3 SQN = 4 Pkt2 ACK2 Pkt3 ACK3 Pkt3  ACK3 Stop-and-Wait: Verlust eines ACKs udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 49 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 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++ Pkt1 ACK1 Pkt2 time SQN = 4 Pkt2 ACK2 Pkt3 ACK3 Pkt3 ACK3 Stop-and-Wait: Verlust eines ACKs udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 50 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 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++ Pkt1 ACK1 Pkt2 time SQN = 4 Pkt2 ACK2 Pkt3 ACK3 Pkt3 ACK3 Stop-and-Wait: verzögertes ACK udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 51 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 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++ Pkt1 ACK1 Pkt2 time SQN = 4 Pkt2 ACK2 Pkt3 ACK3 Pkt3 ACK3 Pkt4  Stop-and-Wait: verzögertes ACK udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 52 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 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++ Pkt1 ACK1 Pkt2 time SQN = 4 Pkt2 ACK2 Pkt3 ACK3 Pkt3 ACK3 Pkt4  Stop-and-Wait: verzögertes ACK udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 53 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 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++ Pkt1 ACK1 Pkt2 time SQN = 4 SQN = 5 Pkt2 ACK2 Pkt3 ACK3 Pkt3 ACK3 Pkt4  ACK4 Stop-and-Wait: verzögertes ACK udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 54 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 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++ Pkt1 ACK1 Pkt2 time SQN = 4 SQN = 5 Pkt2 ACK2 Pkt3 ACK3 Pkt3 ACK3 Pkt4  ACK4 Stop-and-Wait: verzögertes ACK udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 55 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 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++ Pkt1 ACK1 Pkt2 time SQN = 4 SQN = 5 Pkt2 ACK2 Pkt3 ACK3 Pkt3 ACK3 Pkt4  ACK4 Stop-and-Wait: verzögertes ACK udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 56 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 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++ Pkt1 ACK1 Pkt2 time SQN = 4 SQN = 5 Pkt2 ACK2 Pkt3 ACK3 Pkt3 ACK3 Pkt4  ACK4 Duplikat! Stop-and-Wait: verzögertes ACK udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 57 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 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++ Pkt1 ACK1 Pkt2 time SQN = 4 SQN = 5 Pkt2 ACK2 Pkt3 ACK3 Pkt3 ACK3 Pkt4  ACK4 Duplikat! Stop-and-Wait: verzögertes ACK udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 58 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 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++ Pkt1 ACK1 Pkt2 time SQN = 4 SQN = 5 Pkt2 ACK2 Pkt3 ACK3 Pkt3 ACK3 Pkt4  ACK4 Stop-and-Wait: verzögertes ACK Duplikat! udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 59 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 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++ Pkt1 ACK1 Pkt2 time SQN = 5 Pkt2 ACK2 Pkt3 ACK3 Pkt3 ACK3 Pkt4 ACK4 Stop-and-Wait: verzögertes ACK Duplikat! udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 60 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 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++ Pkt1 ACK1 Pkt2 time SQN = 5 Pkt2 ACK2 Pkt3 ACK3 Pkt3 ACK3 Pkt4 ACK4 Stop-and-Wait: verzögertes ACK udt_rcv(ACK)/

Rechnerkommunikation, Transportschicht 61 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 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++ Pkt1 ACK1 Pkt2 time SQN = 5 Pkt2 ACK2 Pkt3 ACK3 Pkt3 ACK3 Pkt4 ACK4 Duplikat! 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 Data link Network Router Netzwerkprotokoll Host-Router Verbindungsprotokoll Host-Router Bitübertragungsprotokoll Host-Router Transportprotokoll Sitzungsprotokoll Präsentationsprotokoll Anwendungsprotokoll Schicht Name der ausgetauschten Informationseinheit Application Presentation Session Transport Network Data link Physical Host B PPDU APDU SPDU TPDU Packet Frame Bit PPDU APDU SPDU TPDU Paket Rahmen Bit Interface Layer Protokolle Router-Router Folie: Folie: Folie: ab 16 Folie 8+9 OSI von 1977 !!

Datenübertragung Gilt auf für DIY Projekte: – Abstieg: jeweils ein Kopf dazu, Aufstieg: Kopf wird entfernt Datagram Application Transport Network Link Physical Application Transport Network Link Physical Source HtHt HnHn HlHl M HtHt HnHn M HtHt M M Destination HtHt HnHn HlHl M HtHt HnHn M HtHt M M HtHt HnHn HlHl M Link Physical Network Link Physical HtHt HnHn HlHl M HtHt HnHn HlHl M HtHt HnHn M HtHt HnHn HlHl M HtHt HnHn M Link-layer switch Router Message Segment 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...