Rechnernetze 1 INF 5T Wintersemester 2003/2004

Inhaltsverzeichnis

0 - Einleitung	5

0.1 - Entwicklungsgeschichte	5

0.2 - Rechnernetzwerke	5

0.3 - Dienste und Protokolle	7

0.4 - Das TCP/IP-Referenzmodell	9

0.5 - Das OSI-Referenzmodell (Open Systems Interconnect)	10

1 - Bitübertragungsschicht	11

1.1 - Analoge und Digitale Signale	11

1.2 - Übertragungsmedium	13

1.2.1 - Metallische Leiter	13

1.2.2 - Lichtwellenleiter	13

1.2.3 - Aerische Medien	14

2 - Sicherungsschicht	16

2.1 - Rahmenbildung	16

2.2 - Fehlersicherung	17

2.3 - Flusssteuerung	20

2.3.1 - Sende- und Warteprotokoll	20

2.3.1.1 - Einfaches ACK/NAK-Protokoll	20

2.3.1.2 - ACK/NAK-Protokoll mit Zeitschranke	20

2.3.1.3 - Erweiterung um Reihenfolgenummern	20

2.3.1.4 - Erweiterung um Alternating-Bit	21

2.3.2 - Gleitfensterprotokolle	22

2.4 - PPP	24

2.5 - Kanalsteuerung	26

2.5.1 - CSMA/CD	26

2.5.2 - Rahmenaufbau	27

2.5.3 - Token-Passing-Verfahren	29

3 - Vermittlungsschicht	32

3.1 - Routing	32

3.1.1 - Shortest Path Algorithm	32

3.1.2 - Distance Vector Routing	34

3.1.3 - Link State Routing	36

3.1.4 - Exterior Gateway Protocols	37

3.1.5 - Hierarchisches Routing	37

3.2 - Adressierung	38

3.2.1 - Klassenbasierte IP-Adressierung	38

3.2.2 - Klassenlose IP-Adressierung	38

3.2.3 - Ipv6	40

3.2.4 - Namensauflösung	41

3.2.5 - Gruppenadressen	43

3.3 - Aufbau von IP-Paketen	45

4 - Transportschicht	47

4.1 - Transmission Control Protocol	48

4.1.1 - Aufbau eines TCP-Segments	48

4.1.2 - TCP-Verbindungsverwaltung	51

4.1.3 - Datentransfer	52

4.1.4 - Zeitschrankenfestlegung	53

4.1.5 - Überlast-Kontrolle	54

4.2 - UDP	55

5 - Anwendungsschicht	56

5.1 - File Transfer Protocol (FTP)	56

5.2 - Telnet	58

5.3 - SMTP	58

5.4 - HTTP	59

5.5 - SNMP	60

Einleitung

“The network ist the computer” (1987)

SUN = Stanford University Network

Internet > 120 Mio. Registrierte IP-Adressen

Entwicklungsgeschichte

“Peer-to-Peer”-Netzwerke: Netzwerkkarte, Verbindungskabel, Treibersoftware waren nötig.

Client/Server-Computing: zuerst File-/Print-/Mailserver

“offene Systeme” -> gemeinsames Regelwerk (“Protokoll”); es wird definiert von Standardisierungsgremien

Modems mit ¾ kbit/s (80er Jahre); dann DATEX (Data Exchange) mit 9.6 kbit/s;
dann ISDN mit 64 kbit/s (Digitalisierung der Sprache)

Glasfaser heute: 2-10 Gbit/s; in Experimenten 1-2,5 Tbit/s; Rekord (März 2003): 6,7 Gbyte in 58s über 11.000 km = 1 Tbit/s; Experiment: > 10 Tbit/s

Pionierleistungen: SITA (Societé International des Télécommunications Aéronautiques); IATA; ARPA-Net

1962 RAND-Corporation / 1962 Dissertation von Student Leonard Kleinrock: Pakettechnik

1964 Konzept: Dezentralisierung

1968 ARPA (Advanced Research Projects Agency)

IMP Interface Message Processor/NCP Network Control Protocol -> TCP(/IP) Transmission

UDP geht Richtung schnelles Protokoll

seit Festlegung von TCP/IP als Standard ging die Verbreitung stark bergauf

Rechnernetzwerke

Definition: Ein Rechnernetz ist ein Verbund autonomer (Einzel-)Systeme zum Zwecke der verschiedenen Verbundarten. Die Verbindung erfolgt mit einem beliebigen Übertragungsmedium

Verbundarten:

Kommunkationsverbund: Nachrichten- und Datenaustausch

Leistungsverbund: gemeinsame (verteilte) Bearbeitung von Aufträgen

Datenverbund: Zugriff auf gemeinsame (zentral abgelegte) Daten

Verfügbarkeitsverbund: redundante Datenhaltung, Ausgleichen ausgefallener Ressourcen

Lastverbund: Ausgleich von Spitzenasten

Funktionsverbund: Erweitern der Funktionalität

Klassifikationskriterien:

Netzwerktopologie:

Punkt-zu-Punkt-Topologie: je zwei Einzelsysteme sind miteinander verbunden.

Mehrpunkttopologie: gemeinsames Medium auf das gleichzeitig mehrere Einzelsysteme Zugriff haben

Topologie	Pro	Contra
Stern	Einfache Erweiterbarkei	Zentrum ist kritisch
Baum (Verallg. Vom Stern)	Wie bei Stern	Wie bei Stern
Vollvermaschtes Netz	Extrem hohe Ausfallsicherheit => Ausfall eines Einzelsystems stört Netz gar nicht	Sehr teure Verbindungsstruktur; Dezentralisierte Steuerung
Teilvermaschtes Netz (einzelne Verb. Weggelassen; typ. Für “chaotisches” Wachstum -> siehe Internet)		Problem der Wegesuche/Routing incl. Wegeoptimierung
Bus	Nicht beliebig erweiterbar	
Ring	Theoretisch beliebige räumliche Ausdehnung	

Räumliche Ausdehnung:

LAN: local area network; einige 100 m; 10-1000 Mbit/s

MAN: metropolitan (area) network / Stadt-/Ortsnetz; 50km, DQDB (Ringstruktur)
Breitband-ISDN/ATM (ATM = asynchronious transfer mode mit 155-622 Mbit/s)

WAN: wide area network; 100-1000 km, länderweit, kontinentweit

internets = interconnected networks; Merkmale:
Verbundnetze
Gateway = “gemeinsamer Knoten” + evtl. Konvertierung/Abrechnung

Internet ist ein bestimmtes Netz der internets mit dem Protokoll-Standard TCP/IP

GAN: global area network (z.B. IABG); weltumspannendes Netz mit Satellitenverbindung

Vermittlungsprinzip

Leitungsvermittlung => circuit switching = elektrische Schaltkreisvermittlung

Paketvermittlung => store-and-forward-schwitching = Speichern und Weiterleiten
=> message switching = Nachrichtenvermittlung
also: Teile werden unabhängig voneinander vermittelt (jedes Paket braucht einen Adressaten) und die Reihenfolge beim Empfang kann nicht mehr die Reihenfolge beim Senden sein (jedes Paket braucht eine ID)

Protokolle: Kommunikationsproblem zerlegt , für jedes Teilproblem wird ein spzeielles Protokoll entwickelt. Man gewinnt Flexibilität.
=> Menge aufeinander abgestimmte Teilprotokolle: Protokollfamilie (en: protocol suite), z,B. TCP/IP, OSI, XNS (Xerox Network System) -> IPX/SPX (Novell Netware), SNA (System Network Architecture from IBM), DecNet (Digital Equipment Corporation Network), AppleTalk

Dienste und Protokolle

Protokollfamilie

Layering, Schichtenbildung

Die Projektion eines Netzknotens in die Schicht N heißt (N)-Instanz. Durch Kooperation von (N)-Instanzen wird für die übergeordnete Schicht N+1 bzw. die Anwendung ein (N)-Dienst (en: service) geleistet. Grob gesehen: (N)-Dienst überträgt Daten von einer (N)-Instanz zu ihrer (N)-Partnerinstanz (en: peer entity).

(N)-Dienst:

vergindungslos

verbindungsorientiert
(<- Zustand der Partnerinstanz muss gekannt werden)

Bei verbindungsorientierten Diensten unterscheidet man die Phasen

Verbindungsaufbau	CONNECT

Datenübertragung	DATA	UNIT-DATA	EXPEDITED-DATA

Verbindungsabbau	DISCONNECT	verbindungslos	Vorrangdaten
ABORT
RESET

Dienste sind nicht elementar, sondern bestehen aus Dienstelementen:

Anforderung (en: request): fordert Dienst an, und übermittelt Parameter

Anzeige (en: indication): von Diensterbringer ausgelöst um

Anforderung anzuzeigen

Aktion des Diensterbringers selbst

Antwort (en: response): vom Dienstnutzer ausgelöst um auf indication zu reagieren

Bestätigung (en: confirmation): vom Diensterbringer ausgelöst, um request zu bestätigen.

Hinweis: bestätigte Dienste Besitzen Elemete 1-4, unbestätigte Dienste lediglich Elemente 1-2. Eine Anforderung mit Anzeige durch den Diensterbringer erfolgt durch eine Anforderung vom Dienstnutzer und einer direkten Bestätigung des Diensterbringers.

Notation:

<Kennbuchstabe der Schicht>.<Dienstname>.<Dienstelement>

Beispiel: T.CONNECT.request( Zieladresse, Quelladresse, Prioriät, QoS, ... )

Dienstzugangspunkt:

(N)-SAP (eng.: service access point), gekennzeichnet durch Adresse

Beispiel:	Telefonieren	-> TAE-Stecker	(Telefonnummer)
http	-> Port	(Port 80)

(N)-Protokoll

Menge von Regeln, nach denen (N)-Partnerinstanzen miteinander kommunizieren, um der übergeordneten Schicht den aufgeforderten Dienst leisten zu können. Eine Aufgliederung in drei Aspekte:

Syntax (Struktur der ausgetauschten Informationen) (z.B. 128 Bit mit gewissen Reihenfolgen)

Semantik (Bedeutung möglicher Inhalte, erwartete Reaktion Darauf -> Definition der Wirkung)

Zeitfluss (Vereinbarung von Echtzeitintervallen)

<Grafik mit viel Gewusel, Pfeilen, Strichen, ... :-) >

Erklärungen zur Grafik:

ID => engl. interface data = Nutzinformation

ICI := engl. interface control information = Steuerinformation

ID => engl. interface data unit = Paket aus ICI und ID

SDU => engl. service data unit = unveränderte Dienstdateneinheit

PCI => engl. protocol control information = Steuerinformation für äquivalente Partnerinstanz

PDU => engl. protocol data unit = Paket aus PCI und SDU = (N)-ID also reine Nutzinformation für die untergeordnete Schicht

< Grafik 5-Schichten-Modell>

Das TCP/IP-Referenzmodell

5 Schichten-Modell:

Bitübertragungsschicht (engl. Physical Layer): Dienst ist, dass eine Folge von Bits übertragen werden kann. (elektr. und mech. Anschlussnormen, Synchronisation, Medien etc.)
-> Bit

Sicherungsschicht (engl. Data Link Layer): Fehlersicherung, bei Mehrpunkttopologien auch Zugriffskontrolle (wie kann ich verhindern, dass zwei Sender zur selben Zeit senden?)
Dienst: zwei direkt miteinander verbundene Systeme kommunizieren fehlerfrei.
-> Rahmen/Frame

Vermittlungsschicht (engl. Network Layer): eindeutige Adressierung, Wegesuche (Routing)
Dienst: Kommunikation auch nicht direkt miteinander verbundener Systeme
-> Paket/Packet

Transportschicht (engl. Transport Layer): Verlust- und Reihenfolgesicherung auf Ende-zu-Ende-Ebene; Zerlegen beliebig langer Datenströme in passende Segmente
-> Segment/Segment

Anwendungsschicht (engl. Application Layer): berücksichtigt die Art der Daten z.B. Dateitransfer (SCP), Fernsteuerung eines Rechners (SSH), E-Mail (SMTP), multimedialer Dokumentenaustausch (HTTP), Netzwerkmanagement, ...
-> Nachricht/Message

<Folie Übersicht der Protokolle>

Das OSI-Referenzmodell (Open Systems Interconnect)

7 Schichten-Modell

Bitübertragungsschicht (engl. Physical Layer)

Sicherungsschicht (engl. Data Link Layer)

Vermittlungsschicht (engl. Network Layer)

Transportschicht (engl. Transport Layer)

Kommunikationssteuerungsschicht (engl. Session Layer): logische Verbindung z.B. wenn mehrere Prozesse eines Rechners mit anderen Prozessen eines anderen Rechners kommunizieren.
Notwendigkeit: Multiplexen, Sicherheit, Benutzerrechte, Recovery

Darstellungsschicht (engl. Presentation Layer): Formate (little- and big-Endian), Komprimierung;
Abstrakte Transfersyntax, z.B. ASN.1 (engl. abstract syntax notation)

Anwendungsschicht

Bitübertragungsschicht

Analoge und Digitale Signale

Bits werden auf allen Medien als elektromagnetische Wellen (Potentialverlauf, Licht, Funk) übertragen. Diese Wellen bilden ein analoges Signal; sie sind Wert- und Zeit-kontinuierlich

FOURIER:

f = “fundamentale Frequenz”

Vorteil digitaler Signale:

durch Toleranz können „leicht“ gestörte Werte noch „exakt“ interpretiert werden

digitale Verstärker („Repeater“) leiten nicht unter Aufkummulieren von Störungen (wie andere Verstärker)

Aber, wie oft muss man jetzt ein Signal abtasten, um sicherzustellen, dass es auch wirklich das Signal ist, das wir wollen? Da kommt das NYQVIST-Theorem ins Spiel: im idealen Medium kann ein beliebiges Signal mit maximalem Frequenzanteil f durch 2f Abtastungen vollständig rekonstruiert werden.

Beispiel

Ein 3 kHz-Kanal ist mit 6000 Abtastungen vollständig gelesen: es gibt keine weitere Information mehr, die noch in ihm verborgen sein könnte.
⇒ starke Idealisierung: jeder Abtastwert entspricht einen Bit -> in diesem Kanal können maximal 6000 Bit/s übertragen werden
⇒ Zusammenhang Bitrate/Bandbreite; „hoch-bitratig“ = „breitbandig“

Wertigkeiten:	Bitrate = n * Baudrate, wenn bei
Abtastung 2n Werte unterschieden
werden

Codierung: NRZ (eng. Non Return to Zero)

Codes mit Takt-Rückgewinnung

Manchester Code

Differenzieller Manchester Code

Übertragungsmedium

Metallische Leiter

Cu: geringer widerstand, gute Korrosionseigenschaft

Bauformen:

verdrillte Doppelader	Koaxialkabel
verdrillte Doppelader (twisted pair): balanciertes Signal um 180° phasenverschoben. Weitere Bauformen: UTP = eng. unshielded twisted pair (bis Cat. 6) STP = eng. shielded twisted pair (bis Cat. 7) U/STP -> innen einzelne verdrillte Adern abgeschirmt, äußere Schicht Kunststoff S/STP -> alles komplett abgeschirmt Die Länge der Kabel sind beschränkt, da jedes Kabel einen inneren Widerstand hat und die Signale deshalb langsam schwächer werden. Die Länge bis zum nächsten Verstärker (eng. Repeater): bei 100 Mbit/s ca. 100m bei 2400 bit/s ca. 10 Meilen = 16 km Fehlerrate bei Twisted Pair: 10-5	innen ein massiver Kupfer-Kern. Dann eine Isolierschicht und um die Isolierschicht herum ein geflochtener Außenleiter Übertragungsrate: Gbit/s bis 1 km Fehlerrate: 10-7

Lichtwellenleiter

Vorteile:

unempfindlich gegenüber elektromagnetischen Störungen

keine Korrosion

geringer Innenwiderstand

dünner als Kupferkabel

Nachteile:

Biegeradius begrenzt

spleißen (zusammenkleben der Kabel) kompliziert -> Klebe/Schleifvorgang

Lichtquellen:

LED: billiger und hohe Lebensdauer, geringe Temperaturempfindlichkeit

Halbleiterlaser: höhere Datenraten, längere Strecken da hochenergetisch

Die Datenübertragung im Glasfaserkabel basiert auf dem Brechungsgesetz bzw. den Phänomen der Totalreflexion: ab einem gewissen Einfallswinkel wird der einfallende Lichtstrahl komplett reflektiert. Voraussetzung: das äußere Material muss einen höheren Brechungsindex haben als der Kern.

Aufbau Stufenindex-Multimode-Faser:

innen einen hoch reinen Quark-Kern, dann eine unreinere Glasschicht. Außen eine Kunststoffschicht als Schutz. Es kommt stets zu scharfen Reflexionen -> das Signal ist am Ende stark verzerrt (unscharf).

Aufbau Gradientenindex-Multimode-Faser:

vom hoch reinen Kern geht es langsam und Stufenlos zur unreinen Schicht über -> das Endsignal ist schon besser.

Aufbau Single-Mode Fiber (Monomode-Faser)

der Kern wird so dünn gemacht, dass bloß noch einer der Mode übrig bleibt: der Axial-Mode -> Top Endsignal!

Multimode (Gradientenindex)	Single
Kern/Mantel-Durchmesser: 50/125 um (Europa) max. 550m 62.5/125 um (US) max. 220 m	Kern-/Mantel-Durchmesser: 9/125 ca. 30 km

Aerische Medien

<Folie Frequenzbänder>

Prinzipien

Richtfunk

Punkt-zu-Punkt-Verbindung zwischen Funkstationen

hochfrequente Wellen 200 MHz – 40 GHz,, geringe Streuung

Problem: max. 50 km wg. Erdkrümmung

typ. Datenraten: 2 – 1000 Mbit/s

Frequenzband: ISM-Band (eng. Industrial, Scientific, Medical) 2,4 GHz – 2,4835 GHz

Terrestrische Mobilfunk:

lokal -> WLAN

1997: IEEE 802.11

1999: IEEE 802.11b (bei 2,4 GHz

Ende 2002: IEEE 802.11a (bei 5 GHz)

Juni 2003: IEEE 802.11g (bei 2,4 GHz)

HiperLan, europ. High Perform. Radio LAN mit 20 Mbit/s

HiperLan/2 komp. mit 11a -> aber, ist am bröckeln

DECT: 1,9 GHz-Bereich, ca. 550 kbit/s, 300m

Bluetooth, ca. 10m, 2,4 GHz, 1 Mbit/s

national-international -> WWAN

GSM; 900 MHz, 1,8 GHz, 9,6 kbit/s

Folgestandards: HSCSD: High Speed Circuit Switched Data Service, 115,2 kbit/s

Oder: GPRS: General Packet-Switched Radio Service; Paket-vermittelt, 171,2 kbit/s

UMTS: 2Mbit/s (in HotSpots für Flughäfen und Bahnhöfe); 368 kbit/s in Städten, sonst weniger als 100 kbit/s

Satellitenfunk

geostationäre Satelliten, 36.000 km Höhe, das größte: INMARSAT mit 4 Stück deckt die gesamte Erdoberfläche ab.

tief fliegende Satelliten (eng. LEO = low earth orbit sat.) ca. 1000 km

Globalstar mit 48/8 Bahnen

Iridium mit 66/6 Bahnen

Problem v.a. bei geostationären Satelliten: ¼ s Ende-zu-Ende-Verbindung

Gefahr: Hintergrundstrahlung aus dem All

Frequenzbereiche für Satellitendienste (Details siehe Folie):

FSS = Fixed Satellite Service

MSS = Mobile Satellite Service

Fehlerrate: 10-2 – 10-3 (also ziemlich schlecht)

Sicherungsschicht

Rahmenbildung

erste Methode: Zeichenzählung (gibt an, wie lang ein Rahmen ist; damit werden Rahmen besser ausgenutzt, z.B. wenn die zu übertragende Nachricht viel kleiner als ein fixer Rahmen ist)

Nachteil: bei Fehler in der Längenrate ist ein Wiederaufsetzen mehr möglich.

Zweite Methode: Zeichenstopfen (character stuffing)

einfacher Algorithmus beim Empfänger: nach jedem empfangenen DLE prüfen, ob

STX folgt => Rahmenanfang

ETX folgt => Rahmenende

DLE folgt => gestopftes DLE: es muss also entfernt und verworfen werden

anderes Zeichen: Fehler!

Dritte Methode: Bitstopfen (bit stuffing)

Rahmenanfang/ende „flag“; üblich: 0111 1110 (also doch wieder ein Byte; aber das soll nicht stören)

Verfahren: nach 5 Einsen wird eine „0“ künstlich hinein gestopft.

Beispiel: Nutzdaten 0101 1111 011 0111 1111 0

Rahmen:

Fehlersicherung

Arten von Fehlern:

Einzelbitfehler (eng. single bit error); typ. für LWL

n-fach Fehler (also wenn vereinzelt ein paar Bits pro Rahmen kaputt sind)

Bündelfehler (eng. burst error); typ. für Cu, Funk

Störhäufigkeit gemessen als Bitfehlerrate:

oder anstatt auch: .

Codierungs-Arten:

Kanalcodierung: zusätzliche Redundanz um evtl. Übertragungsfehler zu erkennen

Leitungscodierung: siehe Grafik oben

Quellencodierung: Codierung der Nutzdaten, Datenkomprimierung, entfernen der Redundanz

Kryptocodierung: nicht mehr Informationen (ohne Redundanz) sondern die Sicherheit vor ungewolltem Zugriff zu gewährleisten

Beispiel: m = 2 (nur 2-Bit-Wörter); { 00, 01, 10, 11 }

Cod = Verfünffachung
⇒ Fehlererkennung bei

Fehlerkorrektur FEC (eng. Forward Error Correction) möglich für 2-fach-Fehler (der Leitung)!
Fehlerkorrektur nicht mehr möglich für 3-fach-Fehler; nur noch Fehlererkennung!
Fehlererkennung ARQ (eng. Automatic Repeat Request) für 4-fach-Fehler.

HAMMING-Distanz

Überlegung:

Wir benötigen die Distanz von Codewörtern (z.B.: w1, w2):
⇒ Anzahl der Bitpositionen, wo w1, w2 unterschiedlich

im Verfünffachungsbeispiel:

Es gilt:	zum Erkennen von e Fehlern muss der Code erfüllen
zum Korrigieren von e Fehlern muss der Code

Beispiel: m = 2, k = 1

Voraussetzung: Prüfbit soll Codewort so ergänzen, dass die Gesamtzahl der Einsen gerade ist.

⇒ höchstens Einzelfehler erkennbar

⇒ keine Korrekturfähigkeit

(durchgestrichene Wörter: keine gerade Anzahl 1eer!!)

Übliche Codes

VRC/LRC-Codes

Prüfbit Querparität (vertical redundancy check): Prüfbit wird so gesetzt, dass Anzahl Einsen gerade (even) oder ungerade (odd) ist.

Längsparität (longitudinal redundancy check): Parität über eine Spalte

Korrekturfähigkeit: durchschnittlich

Prüfwort Erkennung: Einzelfehler

Kreuzsicherung (block parity): VRC + LRC

korrigiert Einfachfehler

erkennt Zweifachfehler

CRC-Codes (Cyclic Redundancy Check)

Codewort wird als Koeffizienten­darstellung aufgefasst

Z.B. wird interpretiert als:

Sender und Empfänger vereinbaren „Generatorpolynom“ G. Algorithmus:

bilde; entspricht Anfügen von k Nullen, k Grad des Generators; Grad = höchster Index eines Polynomterms
D hat Länge m + k, wenn m die Länge von w ist

mod-2-Division von D durch G (G ist der Generator)
Ergebnis ist ein Wert und ein Rest R.

Führe mod-2-Subtraktion [XOR-Verknüpfung] D-R durch, dann kann der Empfänger einfach auf Rest = 0 prüfen

Zusammenfassung: Sendewort

Beispiel:

1101 0110 1100 00 : 1001 1 = 1100 0010 10

- 1001 1

--------

100 11

- 100 11

--------

010 110

- 10 011

---------

1010 0

- 1001 1

--------

11 10 // Rest

Sendewort:

typischer HAMMING-Abstand ist 3 ⇒ korrigiert Einzelfehler, erkennt 2-fach-Fehler

aber: CRC erkennt Bündelfehler bis zur Länge , zu 100%

für
z.B.:	⇒ 99,997%
⇒ 99,9985%

üblicherweise wird CRC nur zur Fehlererkennung eingesetzt. Typisches Generatorpolynom:

CRC-CCITT (jetzt CRC-ITU): oder: ; beliebige Basis .

CRC-32: für Ethernet mit 33 Stellen

Realisierung:

Fehler:

Verfälschungsfehler (corruption faults)

Verlustfehler (loss fault)

Phantomfehler (spurious message fault)

Flusssteuerung

Sende- und Warteprotokoll

Einfaches ACK/NAK-Protokoll

Darstellung im Message Sequence Chart (dt. Zeitflussdiagramm)

Sender	Medium/ Kanal	Empfänger
Daten 1		
	ACK	Daten1
Daten 2	Fehler	
NAK		Fehler!
Daten 2 wiederholt		
		...

ACK/NAK-Protokoll mit Zeitschranke

Verbesserung gegenüber vorherigem Protokoll. Denn was passiert, wenn der Empfänger das Paket gar nicht erhält?

Sender	Medium/ Kanal	Empfänger
Daten 1		
Timeout T		
Daten 1		
ACK		Daten 1
...		

Dieses Protokoll sichert gegen Verlust -> Wiederholungszähler, falls Verbindung getrennt oder Empfänger abgeschaltet

Falls auf NAK ganz verzichtet wird: PAR-Protokoll (eng. Positive Acknowledge and Retransmission)

Erweiterung um Reihenfolgenummern

Problem: Ack geht verloren
Lösung: Reihenfolgenummern

Sender	Medium/ Kanal	Empfänger
Daten (1)		
Timeout T	ACK	Daten (1)
Daten 1		
ACK		Daten (1) Dublikat! verwerfen
Daten (2)		
		...

Erweiterung um Alternating-Bit

Problemszenario:

Sender	Medium/ Kanal	Empfänger
Daten 1		
Timeout T	ACK	Daten (1)
Daten (1) wiederholt		
Daten (2)	ACK	Duplikat, verwerfen 1
Daten (3)		
		Daten (3), außerhalb der Reihenfole! verwerfen! [hier kein Ack, da scheinbar Phantom
Daten (3) wiederholt		
		...

Verbesserung: Alternating Bit Protocol (ein Bit genügt für die Reihenfolge)

Sender	Medium/ Kanal	Empfänger
Daten 1		
Timeout T	ACK (1)	Daten (1)
Daten (1) wiederholt		
Daten (2)	ACK (1)	Duplikat, verwerfen 1
Daten (2) wiederholen ACK (1) verwerfen		
		Daten (2)
Daten (3)		
		...

Praxis: Reihenfolgenummerierung bei den Rahmen. Es genügt aber Modulo-2! Name: Alternating Bit Protocol
⇒ Problem: „floating corpses“: Wasserleichen

Lösung: maximale Lebensdauer für Rahmen

Gleitfensterprotokolle

Für Gleitfensterprotokolle (sliding window protocols) gilt: Sendefenster der Größe WS (Protokollkonstante); aber es kann auch passieren, dass die Protokolle diesen Wert untereinander aushandeln. Dafür sorgen spezielle Algorithmen. Die Größe WS sagt aus: es dürfen WS-viele Rahmen gleichzeitig in den Kanal gesendet werden, ohne dass eine Bestätigung vorliegt.

Beispiel: Rahmennummern von 0 – 7

Frage: wann muss/soll bestätigt werden?

(spätestens) wenn Empfangsfenster voll

nach Ablauf einer Zeitschranke

Huckepack-Verfahren (engl. piggy-backing)

d.h. bestätigt wird, wenn ohnehin gerade ein Senderahmen für die andere Richtung ansteht.

Strategien im Fehlerfall (relevant):

Go-Back-N

Selective-Repeat

Zu (1): Go-Back-N

Der Empfänger bestätigt jeden Rahmen; der Sender muss bei neg. Bestätigung/Timeout alle Rahmen wiederholen, die in seinem Sendefenster sind (d.h. die noch nicht bestätigten)

[+] einfach zu realisieren
[-] manche Rahmen werden unnötig wiederholt

Zu (2): Selective Repeat

Verfälschte Rahmen / nie empfangene Rahmen werden durch explizite neg. Bestätigung neu angefordert.

[-] komplizierte Verwaltung
[-] Pufferbedarf höher

Beispiel: Go-Back-N

SN (Send-Number):	nächste Reihenfolgenummer bei eigener Sendung
RN (Receive Number):	nächste vom Partner erwartete Reihenfolgenummer
== Bestätigung aller Rahmen

Partner 1 (SN, RN)	Medium/ Kanal	Partner 2 (SN, RN)
(0, 0)		(0, 0)
(1, 1)		(1, 0)
Fehler! NAC(1)		(2, 1)
verwerfen, falsche Reihenfolge­nummer!		Go-Back-N auf SN = 1 ...
(2, 1)		(1, 2)
(3, 2)		(2, 2)
(0, 3)		...
		...

Was ist die maximale Sendefenstergröße?
⇒ sei N die Anzahl der Reihenfolgenummern

Beispiel:

sei ⇒

pos. Bestätigung für 1; als nächstes: pos. Bestätigung für 1:
⇒ Dilemma: wurde kein weiterer Rahmen bestätigt oder: werden jetzt alle 8 bestätigt?

darum gilt: ; typisch:

max. Empfangsfenstergröße (nur bei Selective Repeat):

SN, RN initialisiert beim Verbindungsaufbau:

PPP

PPP (engl. Point-To-Point-Protocol) => Punkt-zu-Punkt-Verbindung

SLIP (engl. Serial Line Internet Protocol) (Vorläufer)

RFC 1661-1663 -> IETF (Internet Engineering Task Force)

Rahmenaufbau:

1 Byte 1 1  0 2 1 flag address control data FCS flag 0111 1110 Nutzdaten d.h.
Schicht-3-PDU CRC-CCITT Zeichenstopf-Methode:
~ -> {^
{ -> {[

address: stets 1111 1111 “All Station Addres”

control:

PPP Phasen:

UP: (carrier detection): physik. Verbindung vorhanden

Establish: zur Kommunikation absolut nötige Informationen werden ausgetauscht, z.B. Maximum Receive Unit (MRU)-Größe

Authenticate: Authentifizierung

Network: Auswahl der übergeordneten Protokolle und verhandeln der protokollspezifischen Konfigurationsparameter

Open: Daten werden übertragen

Terminate: Verbindung abbauen

DOWN: ≙ Zeichen, dass physikalische Verbindung aufgegeben werden kann

Establish-Phase:

LCP: Link Control Protocol

Datenfeld im unnumerierten Rahmen

Protocol Information Code Identifier Length Options 1 Byte 1 Byte 2 Byte n Byte LCP=C02116 0..1500 Byte 0116: Configure Request 0216: Conf. ACK 0316: Conf. NAK 0416: Conf. Reject Analog: Ihre Zeichen/ Unsere Zeichen Länge des gesamten LCP-Rahmens Type Length Data 0116: MRU Wort

Password Authentication Protocol

Challenge Handshake Authentication Protocol

Server		
		Client
	Codierung	Codierung (Zufallswort)
vergleicht mit eigener Lsg.		

zusätzlich: in regelmäßigen Abständen wird die Auth. wiederholt.

NCP =	IPCP	802116
IPXCP	802B16
...	...

Open-Phase:	IP = 2116	IP-Paket
IPX = 2B16	IPX-Paket

Code	0516 Termination Req.
0616 Termination Ack

Kanalsteuerung

nur bei Mehrpunkt-Topologien nötig: regelt den Zugriff auf gemeinsames Medium

LLC = Logical Link Control-Layer: Flusskontrolle wie bisher

Medium Access Control Layer

Vorsicht! das dedizierte Protokoll IEEE 802.2 (LLC) ist HDLC-orientiert! Also nicht verwechseln!

Strategien:

kontrollierter/geordneter Zugriff: Token-Passing

ungeordneter/chaotischer Zugriff: CSMA/CD

CSMA/CD

historisch: ALOHA, ~ 1970 Uni Hawaii, von Abramson. Sie hatten den Wunsch, miteinander zu quatschen und Dokumente auszutauschen. Nur ist halt Hawaii eine Inselgruppe, und Unterseekabel gab es damals nicht. Deshalb gab es bodengestützten Richtfunk:

jeder Rechner hat einen eigenen Sender und Empfänger

ein zentraler Verteiler („hub“) wird auf Frequenz f1 angefunkt und verteilt auf Frequenz f2 im Broadcast an alle weiter

Regel: jeder Sender sendet sofort in voller Länge seinen Rahmen

Problem: zwangsläufig gibt es viele Kollisionen, also zerstörte Rahmen
Regel: vergleichen mit Info im Rückkanal; wenn die nicht übereinstimmt oder die Zeitschranke (Timeout) erreicht wird, wiederholen!

Warten: Zufallselement um sofortiges Wieder-Kollidieren zu verhindern.

=> Nutzrate von ALOHA: ca. 18% Erfolgsrate! Naja.

Xerox: Robert Metcalfe 1976: Idee auf Kabel übertragen mit 2,94 Mbit/s; ab 1977 DIX-Ethernet 10 Mbit/s => IEEE 802.3 alias Ethernet 10Mbit/s

2 Verbesserungen:

Erst hören (vor dem Sendevorgang), ob jemand spricht. Dann nur beginnen, wenn das Medium frei ist. => CSMA (engl. „carrier sense multiple access“)

Auch abhören während des Sendevorgangs: bei Kollision sofort aufhören und ein kurzzeitiges Störsignal senden („jamming“).

Manchester: Gleichstrombilanz 0, bei Kollison != 0; kann mit analoger Elektronik gemessen werden.

Rahmenaufbau

Hinweis zur MAC-Adresse:

3 Byte sind Hersteller-Code (von IEEE verg.)

3 Byte sind Hersteller-individuell

Warum Mindestlänge 64?

Beispiel:

A muss, um eine Kollision bemerken zu können, zum Zeitpunkt noch senden! =>ist die Mindestsendedauer eines Rahmens

max. Entfernung
Signalausbreitung in Koax:
Aufgrund Repeaterlogik werden ankommen.

;

Datenrate (hin und zurück auf dem Bus)

Jam-Signal: „den kompletten Bus unter Störsignal setzen” ⇒ 32 Byte Länge

zufällige Wartezeit: „Zeitschlitze“ à (slot time)

; neuer Sendeversuch nach ⇒ 50% Wahrscheinlichkeit, dass Kollision aufgelöst wird

zweite Iteration:

allgemein gilt: nach der i-ten Kollision beträgt die Wartezeit „binary exponential backoff“

Weiterentwicklungen:

1995: Fast Ethernet (IEEE 802.3u) 100 Mbit/s mit 250m max. Netzausdehnung

100 Base TX : 2x STP/UTP Cat. 5

100 Base FX : 2x Glasfaser

100 Base T4: 4x UTP Cat. 3, 3 Aderpaare à 33,3 MBit/s, 1 für Kollisionserkennung

Topologie: Stern

1998: Gigabit Ethernet (GE) (IEEE 802.3z) 1000 MBit/s

Mindestrahmenlänge 512 Byte

nur geswitcht (kein Hub): keine Kollisionen

1000 Base SX: Short Wavelength (Glasfaser, Multimode)

1000 Base LX: Long Wavelength (Glasfaser, Monomode)

1000 Base CX: 2x STP

IEEE 802.3ab: 1000 Base T: 4x UTP Cat. 5

2002: 10 GE (IEEE 802.3ae) 10.000 Mbit/s

nur noch Glasfaser

Reichweiten bis 40km

Drahtlose Netze (802.11)

Variante von CSMA/CD:	CSMA/CA	Collision Avoidance

A<--------d--------->B<--------d--------->C

Sender sendet RTS(geplante Sendelänge) (engl. Request To Send)

Empfänger antwortet CTS(geplante Sendelänge) (engl. Clear To Send)

wird auch von C empfangen -> C verhält sich solange ruhig

Falls Kollision: B antwortet nicht mit CTS => A,C wiederholen RTS nach zufälliger Wartezeit

Token-Passing-Verfahren

Standards:

IEEE 802.5: Tokenring

IEEE 8021.4: Tokenbus; GM (General Motors) mit MAP (Manufactoring Automation Protocol) mit 100 Mbit/s

ArcNet: Industrie der USA, in Europa praktisch gar nicht verbreitet, 2,5 Mbit/s

FDDI: Fast Distribution Digital Interface

DQDB:

Wir konzentrieren uns jetzt nur noch auf den Standard IEEE 802.5, den Tokenring. Historie:

1985 IBM

1989 Standardisiert mit 4 Mbit/s und 260 Stationen bzw. 16 Mbit/s und 72 Stationen

1998 High Speed Tokenring HSTR, 100 Mbit/s

2001 Gbit/s mit der einzigen Firma, die weltweit übrig bleibt: Madge (UK)

Token

Man kann die Leitung wirklich wie hier in der Grafik verlegen oder ähnlich wie bei Ethernet, dass in der Mitte ein Hub (hier: Wire-Center oder MAU – Multistation Access Unit) sitzt und der Ring sternförmig aufgefächert wird. Fällt ein Rechner aus, schaltet die MAU automatisch um.

Leitungscode: Differentieller Manchester-Code

Es gilt:

SD: gezielte Codeverletzung; JK00JK00; für J: wie 0, aber ohne Wechsel in Perioden-Mitte; für K: 1 , aber ohne Wechsel in Perioden-Mitte

ED: JK1JK1IE
⇒ I: Intermediate:	0 letzter Rahmen
1 Folgerahmen kommen
⇒ E: Error	0 kein Fehler
1 CRC-Fehler

Information:

Möglichkeit: Prioritäten: 3 P-Bit; 0 = höchste, -1 niedrigste
wenn ich eigene Priorität n habe, darf ich das Token nur nehmen, wenn

Setzen über Reservierungs-Bits (R): muss ich trotz Sendewunsch das Token mangels Prio weitergeben, trage ich eigene Prio in R ein (falls dort nicht bereits eine höhere steht). Derjenige, der das nächste Token frei gibt, überträgt R in P.

Tokenverlust bringt Netz zum Erliegen ⇒ Monitor-Station passt auf

Aufgaben:

Periodische Anzeige des Vorhandenseins
Steuerrahmen ACTIVE_MONITOR_PRESENT( Steuerrahmen, A = 0101 )

Tokenverlust feststellen: warten, bis maximal

Verwaiste Rahmen von Ring entfernen

zu kurzen Ring kompensieren;
falls Ring weniger als 24 Stationen hat, erweitert der Monitor seine Ringschnittstelle um entsprechend viele Pufferplätze, um in Summe wieder auf 24 zu kommen.

Vermittlungsschicht

Wegesuche (Routing) + Adressierung

Routing

statische Verfahren (nicht-adaptiv): nutzt nur Topologie

dynamische Verfahren (adaptiv): reagieren auf Änderungen im Verkehr

Shortest Path Algorithm

1959 E. Dijkstra

Idee: sei der kürzeste Pfad von i zu k gegeben, j ein Knoten auf diesem Pfad, so ist der Teilpfad von i nach j der kürzeste Pfad von i zu j.

Beweis: Gäbe es einen kürzeren Pfad von i zu j, könnte ich den Teilpfad j->k anhängen und hätte einen kürzeren Pfad i->k als in der Annahme => Widerspruch!!

Algorithmus:

N	Menge aller Knoten
D	=Distanzmatrix
s  N	Startknoten
C	=Vektor der minimalen Kosten von i bis s
R	Menge der bereits bearbeiteten Knoten

Vorgehensweise:

initialisiere , für alle

füge den Knoten mit minimalem zu hinzu

setze für alle

wiederhole ab 2. bis

Beispiel:

Initialisierung ,

minimal, d.h. , ,

, ,

, , ,

, , ,

, , ,

, , , Schritt 3 ist no-op

Daraus folgt: die optimalen Kosten erhält man, wenn man den 4 wählt

Wann (bei Behandlung von m) wurden optimale Kosten (zu i) gefunden?

Distance Vector Routing

BELLMANN, FORD 1957,
FORD, FULKERSON 1962

Jeder Routeri hält eine Tabelle mit

den geschätzten Kosten von i zu j,  „Distanzvektor“

dem Ausgangsport/den direkten Nachbarn, um von i letztlich j zu erreichen

Mit diesen Methoden kann ein Router die Entfernung zum direkten Nachbarn über Steuerpakete ermitteln. Dafür gibt es zwei Arten der Metrik:

hop count (er zählt einfach die Anzahl der Zwischenstationen (Router); Distanz konstant 1)

Zeit oder der gleichen

Idee: jeder Knoten teilt in gewissen Abständen seinen direkten Nachbarn seinen Distanzvektor mit.

Beispiel: Topologie mit symmetrischer Kostenfunktion

Initialisierung: Routing-Tabelle

Eigenschaften des Distanzvektor-Verfahrens:

gute Nachrichten verbreiten sich schnell (= Hinzukommen eines Routers)

schlechte Nachrichten verbreiten sich langsam (= Ausfall eines Routers)

Beispiel: Ausfall eines Knotens

Bei Ausfall von Knoten 1 speichert Knoten 2, dass die Kosten zum Knoten 1 unendlich hoch sind.

Aber: 2 könnte mal nachfragen, wer sonst noch einen Weg zu 1 kennt

3 teilt mit: kenne Weg mit Kosten n

also denkt 2: kann über 3 Pakete an 1 mit Kosten n+m ausliefern

O-Ton Tiedemann: Das ist S C H E I S S E ! ⇒ „count-to-infinity“-Problem

Lösungs-Varianten:

„Split Horizon“: an Router j wird entsprechender Eintrag im Distanzvektor nicht gemeldet, wenn der Ausgangsport j selber ist

„Split Horizon and Poison Reverse“: meldet ∞ zurück

leider keine 100% Lösung des Problems! Das „count-to-infinity“-Problem existiert immer noch.

Beispiel: Ausfall eines Knotens

„echtes Protokoll“:

RIP (engl. Routing Information Protocol)

bis 1979 im ARPANET, hop-count, maximal 16, in kleineren Netzen auch heute noch verwendet.

RIP-2, RFC 2454, 1998; 30 s Periode

Link State Routing

Idee:

über Steuerpakete ermittelt (wie zuvor) jeder Knoten seine Kosten zu den direkten Nachbarn

periodisch: bindet diese Info in ein „LSA-Paket“ (engl. Link State Advertisement) und „flutet“ sie ins Netz. Insbesondere gilt dabei:

Mit fluten ist gemeint: jeder Router verteilt LSA-Paket weiter über alle Ports außer dem Port, von dem er selbst die Information (das LSA-Paket) erhalten hat.

Periodisch: Da so was aber alle 30 s vorkommen müsste und dann alle Router auf einmal ins Netz. Um das zu verhindern wird zufallsgesteuert die Information versendet (im Minuten-Bereich)

Wenn eine Information über mehrere Wege zu einem Knoten gelangt, dann kommt die selbe Nachricht verspätet an, evtl. so stark verspätet, dass inzwischen (neue) Information überschrieben wird. Dem begegnet man, indem man einer Information einen Zeitstempel in Form einer ID hinzufügt:

Versionskontrolle über Reihenfolgenummer (Sequenz): neue Information kann von älterer/bereits erhaltener unterschieden werden

Lebenszeit: wird in jedem Router dekrementiert, Pakete mit abgelaufener Lebenszeit werden nicht weiter geflutet.

zu jedem Zeitpunkt existiert in jedem Router ein (mehr oder weniger genaues) Bild der aktuellen Topologie

nach DIJKSTRA können optimale Pfade berechnet werden

OSPF (Open Shortest Path First), FRC 1247, Internet-Standard seit 1990

Autonome Systeme AS

Arten von Gateways:

Interior Gateway Protocols: OSPF, RIP

Exterior Gateway Protocols: ?

Beispiele zu Autonomen Systemen:

AS680: DFN (Deutsches Forschungs-Netz; die FH ist da auch angebunden

AS3320: Deutsche Telekom

Weblink aller Autonomer Systeme: http://bgg.potaroo.net/cidr/autnums.html

Exterior Gateway Protocols

BGP4 Border Gateway Protocol V4, RFC 1771

Distanzvektorverfahren

Beispiel: Umgehung des „count-to-infinity“-Problems

F verwirft Alternativen, in denen er sich selbst wiederfindet

BGP bietet dadurch die Möglichkeit, taktische Vorgaben („policies“) zu beachten, z.B.

vermittle ein Paket vom Pentagon nie durch den Irak

vermittle ein Paket von einer Microsoft-Niederlassung zu einer anderen Microsoft-Niederlassung niemals über IBM

vermittle Pakete vom Linuxtag niemals über Washington

allgemein: vermeide, dass ein Weg durch AS# gewählt wird

Hierarchisches Routing

Das Ziel ist es, ein Autonomes System nochmal in kleinere Einheiten zu zerstückeln in Regionen, Zonen, .... Damit werden die Routing-Tabellen klein gehalten. Siehe Folie „Hierarchisches Routing“.

Vorgehensweise:

Ein AC wird in einzelne Zonen aufgeteilt mit der Bezeichnung mit und

Der Router schaut nach, wie er zu den einzelnen Knoten kommt und speichert sie in einer regulären Routing-Tabelle

Dann werden alle Sub-ASs mit äquivalentem zusammengefasst und nur noch ein Eintrag für das gesamte Sub-AS gespeichert ⇒ „collapsing of routing-table“, also ein starkes Zusammenschrumpfen der Tabelle

Pro/Kontra-Betrachtung:

Vorteil: (viel) kürzere Routing-Tabellen

Nachteil: für einzelne Knoten ergibt sich dadurch ein längerer (nicht optimaler) Weg (⇒ CIDR)

Adressierung

Klassenbasierte IP-Adressierung

1984: Ipv4-Adressen mit 32 Bit

Klasse A:

128 Netze

16 Millionen Knoten

Klasse B:

16 tausend Netze

65 tausend Knoten

Klasse C:

2 Millionen Netze

256 Knoten

Klasse D:

Sonderfälle:

host = 1...1: alle Knoten des Netzes

net = 0...0: „dieses“ Netz

alles 1: alle Knoten in diesem Netz

alles 0: man selbst

127.0.0.x: Loopback-Interface; man selbst

Beispiel:

110 | 1 0010. 0101 1110. 1111 0000. | 1111 0010

⇒ 194.94.240.242 (ist die IP-Adresse des Webservers der FH Ingolstadt)

Klassenlose IP-Adressierung

(CIDR Classless Interdomain Routing)

Grenze zwischen net/host ist nicht mehr Byte-aligned sondern beliebig.
Schreibweise: <IP-Adresse>/<Präfixlänge>

Beispiel: 194.94.240.242/21

erlaubt hosts adressierbar

alternative Schreibweise: 194.94.240.242 und Subnetzmaske 255.255.248.0 =

Beispiel: Organisation vieler Rechner

Vorhanden ist ein Netzwerk mit 30.000 Rechnern in 15 Subnetzen (2000 Rechner), welche jeweils weiter in 8 Subnetze unterteilt sind mit ca. 250 Rechnern.

Zugeteilt von RIPE, z.B.:

131.42.0.0/17

131.42.128.0/17  diesen halben Klasse-B-Block bekommen wir zugewiesen

Wir haben also insgesamt 32.000 IP-Adressen zur Verfügung, von denen wir in erster Instanz nur 30.000 benötigen. Der Administrator teilt diesen Block in 15 Subnetze mit 4 Bit zur Unterscheidung:

1. Subnetz: 131.42.128.0/21
2. Subnetz: 131.42.136.0/21
...	...
15. Subnetz: 131.42.240.0/21
16. Subnetz: 131.42.248.0/21

Wir können aber auch anders verfahren und werden z.B. das dritte Subnetz in 8 weitere Subnetze aufteilen (3 weitere Bits):

131.42.144.0/24
131.42.145.0/24
...	...
131.42.151.0/24

CIDR zur Strukturierung des Netzes eingesetzt:

Weitere Konzepte, um IP-Adressen zu sparen:

NAT (Network Address Translation): m Rechner teilen sich n IP-Adressen, m > n eine temporär gültige Zuordnung. Rechner-Adresse ist in einer NAT-Tabelle zu pflegen; Vorteil: innere Struktur des Netzes nach außen verborgen.
Extreme Variante: n = 1; „IP-Masquerading“, PAT (Port and Address Translation)

private Adressen (RFC 1918):

10.*.*.*

172.16.*.* - 172.31.*.*

192.168.*.*

Ca. 80% der IP-Adressen sind bereits vergeben. Die restlichen 20% versucht man nun, strukturiert zu vergeben und so die Geographie der Erde auf die Topologie des Netzes abzubilden. Folgende Bereiche werden momentan noch vergeben:

194.0.0.0 – 195.255.255.255:	Europa

198.0.0.0 – 199.255.255.255:	Nordamerika

200.0.0.0 – 201.255.255.255:	Mittel/Südamerika

202.0.0.0 – 203.255.255.255:	Asien/Pazifik

204.0.0.0 – 223.255.255.255:	reserviert

Notreserve Klasse E mit 4 Bit Klassenerkennung am Anfang

Ipv6

128-Bit-Adressen! Das sähe so aus:
aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh

0000:0000:0000:0000:0000:0000:194.94.240.242 ≙ ::194.94.240.242

Zum Vergleich:
wenn wir die Erdoberfläche von 510 Mio. km² in m² aufteilt, dann kann man Elemente auf dem m² Erde adressieren, also praktisch jedes Molekül! Wahnsinn!

Weil sich kein Mensch solche Adressen merken kann (mit Ausnahme vom Sven), werden Namen vergeben. Sie haben folgende Struktur: .

Namensauflösung

Für Menschen ist es schwer, ja sogar unmöglich, sich IPv4- oder IPv6-Adressen zu merken. Darum verwendet man einen Alias für eine Adresse. Es gibt verschiedene Wege, einen Alias zurück umzuwandeln in eine IP-Adresse:

Tabelle in die Datei „hosts“: <IP-Adresse> leer <hostname>

DNS (Domain Name System): verteiltes DB-System (das größte der Welt)

DNS

Namensstruktur:

Dadurch, dass DNS eine weltweit verteilte Datenbank ist und jede Datenbank nur einen Teil aller bekannten IP-Adressen abbilden kann, ergibt sich ein Leistungs-Problem: angenommen ein Student der Uni möchte die IP-Adresse von Naomi aus Somalia wissen, dann könnte die Befragung der Datenbanken wie folgt aussehen:

Der Desktop-Rechner des Studenten kennt die IP-Adresse nicht. Also wird er den DNS-Server der Uni fragen.

Der DNS-Server der Uni kennt die geforderte IP-Adresse auch nicht. Er wird also den DENIC-Server (für die Domain .de) fragen.

Der DENIC-Server ist ebenfalls überfragt und bitten den Root-Server um Auskunft.

Der Root-Server kennt die IP auch nicht, weiß aber sehr wohl, welche IP-Adresse der DNS-Server für Somalia hat und frägt ihn.

Der DNS-Server für Somalia schließlich kennt Naomi und schickt die gefundene IP-Adresse zurück an den Root-Server.

Der Root-Server seinerseits schickt die Daten zurück an den DENIC-Server.

Der DENIC-Server leitet die Daten weiter an den Uni-Server.

Bis der Uni-Server die Daten letztendlich an den Desktop-PC des Studenten übergibt.

Man erkennt sehr schnell, dass dieses Verfahren ineffizient ist. Es muss also eine Lösung gefunden werden, wie die sinnlose Überlastung aller übergeordneten DNS-Server umgangen werden kann:

Die gefundenen Zuordnungen werden temporär in einem Cache gespeichert. Ist der Cache voll, so wird der letzte Eintrag entfernt, der am längsten ohne Referenz im Cache gehalten wurde.

Beispiel: praktisches Experiment

Um herauszufinden, ob ein autorisierter Server auf eine DNS-Anfrage antwortet oder ein zwischen gekoppelter Server, starte man folgendes Kommando in einer UNIX-Shell:

root $> nslookup www.uni-passau.de;

Das Kommando liefert den Server, der die IP zustellt.

ARP/RARP

ARP (engl. Address Resolution Protocol) löst das Problem, eine IP-Adresse einer MAC-Adresse zuzuordnen, sodass Datenpakete auch bei der richtigen Netzwerkkarte ankommen. In einem MAC-Rahmen fragt der Router: „Wer hat IP-Adresse a.b.c.d?“ (via Broadcast) ⇒ ARP-Request. Der betroffene Knoten antwortet mir ARP-Reply (einem speziellen Steuerrahmen, der die MAC-Adresse enthält)

RARP (engl. Reverse Address Resolution Protocol) kommt bei „diskless workstations“ zum Einsatz. Da so ein Client keine Festplatte hat und meistens auch kein Betriebssystem, kann er die IP-Adresse nicht abspeichern und muss sie somit beim Booten von einem RARP-Server: „Wie ist meine IP-Adresse?“. So ein RARP-Server muss mind. ein mal pro LAN existieren, da es nicht geroutet werden kann.

DHCP

DHCP (engl. Dynamic Host Configuration Protocol) ist ein Anwendungsprotokoll mit Client/Server-Architektur. Es versorgt einen Knoten (bereits beim Booten, aber auch sonst) mit allen Konfigurations-Parametern wie Subnetzmaske, Default-Router, DNS-Server, ..., v.a. die IP-Adresse.

Der DHCP-Server kennt:

permanente Adressen: fest an bestimmte Rechner gebunden

dynamische Adressen: für bestimmte Zeit vergeben (Standardwert: 1 Tag)

Hinweis zu Folie „DHPP“ (21_dhcp.pdf)

Geg.: 1 DHCP-Client, 2 DHCP-Server

Ablauf:

Anforderungsphase: Der Client bootet und weiß, dass er nichts weiß. Also wird er mal bei einem DHCP-Server anfragen. Er schickt ein DHCP-DISCOVER [eigene MAC-Adresse] via Broadcast (also in ein Netzwerk mit einer Adresse aus lauter binären 1er).

Angebotsphase: beide Server schicken ein DHCP-OFFER [ Client-MAC-Adresse, angebotene IP-Adresse, Server-IP-Adresse, ...]

Auswahl-Phase: der Client entscheidet zwischen beiden Server, indem er einfach die erste Antwort akzeptiert. Dann fordert er den Server – für den er sich entschieden hat – an, jetzt alle Daten mit ihm auszuhandeln: DHCP-REQUEST [ eigene MAC-Adresse, angebotene (und jetzt auch angenommene) IP-Adresse, Server-IP-Adresse, ...]

Bestätigungs-Phase: der ausgewählte Server bestätigt die Akzeptanz des Clients und übermitteln im jetzt direkt via IP und nicht per Broadcast die Daten; der andere DHCP-Server, der nicht ausgewählt wurde, sieht an dem DHCP-REQUEST-Paket des Clients, dass er nicht ausgewählt wurde und gibt die temporär reservierte IP-Adresse seines Pools wieder für neue Anfragen frei.

Gruppenadressen

Anwendungen für Gruppenadressen: Chat, Webcasting (Video-Streaming vom Rolling-Stones-Konzert), Telekonferenz, Teleteaching, ...

Das Verhalten führt zur kompletten Überlastung nahe liegender Kommunikations-Kanten des sendenden Knotens. Wenn z.B. eine E-Mail an 10 Mio. Adressaten verschickt wir, läuft die Mail 5 Mio. mal über die ersten Kanten. ⇒ Die Verbesserung liegt darin, dass die Nachricht nur einmal über eine Kante geleitet wird und bei jedem Knoten geschaut wird, wer die Nachricht sonst noch braucht; sie wird dann automatisch repliziert und weiter verschickt.

Dafür wurde das Protokoll IGMP geschaffen. Router, die dieses Protokoll verstehen, werden als M-Router bezeichnet. Man veranschauliche sich folgenden Ablauf:

Anmelden: IGMP-REPORT (in IP eingebettet), Knoten meldet sich damit für eine Gruppe an (enthält D-Adresse)

Pflege der gültigen Liste: IGMP-QUERY periodisch für alle angemeldeten Gruppen per Broadcast ins LAN; alle Interessenten antworten mit IGMP-REPORT, aber erst nach Ablauf einer Zufallszeit und nur wenn bis dahin kein anderer geantwortet hat.

Abmelden: IGMP-LEAVE. Doch woher weiß der Router, ob sich nur ein Client von vielen abgemeldet hat oder ob es der letzte verbleibende Rechner der Gruppe war? Er verwaltet ja nicht alle IP-Adressen! Der M-Router prüft also per IGMP-QUERY, ob noch weitere Interessenten übrig sind.

Experimentelle Netze zum einklinken:

BONE (Multicast Backbone on the Internet): seit 2000 DFN Multicast

DVMRP (Distance Vector Multicast Routing Protocol)

MOSPF (Multicast OSPF)

BGP in Vorbereitung

Es entsteht das Problem, dass Bereiche ausgeblendet werden. Mathematisch ist es vergleichbar mit den überspannenden Bäumen. ⇒ Netze bilden, in denen geroutet wird, die aus den aktuellen Gruppenanmeldungen bestehen Spanning Trees

Hinweise zur Folie „Multicast Routing“ (22_multicast.pdf“

Grafik oben links: von der Wurzel ausgehend wird versucht, einen überspannenden Baum anzulegen

Grafik oben rechts: es stellt ein Teilnetz der linken Abbildung dar

???

Aufbau von IP-Paketen

RFC 791, Internet Protocol

Aufbau Ipv4-Datagramm:

Erklärung:

Version:4  IPv4; 6  IPv6

IHL (IP Header Length): Header-Länge mit 4 Bit. Die Header-Länge wird in 32-Bit-Wörtern angegeben. Der Mindestwert ist 5, was zutrifft, wenn keine Optionen vorhanden sind. Der Höchstwert ist 15, was den Header auf 60 Byte und damit das Optionen-Feld auf 40 Byte begrenzt.

Gesamtlänge (Total Length): beinhaltet das komplette Datagramm – Header und Daten. Die Höchstlänge ist 65535 Byte. Derzeit ist diese Obergrenze akzeptabel, aber in den künftigen Gigabit-Netzen sind größere Datagramme erforderlich.

Identifikation: bei Fragmentierung ist dieses Feld erforderlich, damit der Ziel-Host feststellen kann, zu welchem Datagramm ein neu angekommenes Fragment gehört. Alle Fragmente eines Datagramms enthalten den gleichen Wert in diesem Feld.

Fragment Offset: gibt an, an welche Stelle im Datagramm ein Fragment gehört. Alle Fragmente außer dem letzten müssen in einem Datagramm ein Vielfaches von 8 Byte sein. Das ist die elementare Fragment-Einheit. Da 13 Bit verfügbar sind, sind maximal 8.192 Fragmente pro Datagramm möglich, was eine maximale Datagrammlänge von 65.536 ergibt. Das ist eins mehr als das Feld Total Length.

MF (More Fragments): dieses Bit ist bei allen Fragmenten außer dem letzten gesetzt. Es wird benötigt, um feststellen zu können, wann alle Fragmente eines Datagramms angekommen sind.

DF (Don't Fragment): das ist ein Befehl an die Router, dass ein Datagramm nicht fragmentiert werden darf, weil das Ziel nicht in der Lage ist, es wieder zusammen zu setzen. Wird z.B. ein Rechner hochgefahren, kann das ROM die Übertragung eines Speicherabbilds als einzelnes Datagramm anfordern. Durch Kennzeichnung des Datagramms mit dem DF-Bit weiß der Sender, dass es in einem Stück ankommt, auch wenn das bedeutet, dass das Datagramm Netze mit kleiner Paketgröße umgehen muss und dadurch eventuell nicht den optimalen Weg einschlägt. Alle Rechner müssen Fragmente von 576 Byte oder weniger akzeptieren.

wird mind. ein Fragment verloren, gilt das gesamte Paket als verloren. (Zeitschranke überwacht die Ankunft aller Fragmente)

Diensttyp (Type Of Service): Codes für:

min. Verzögerung (schnellster Weg)

max. Durchsatz (Kompromiss aus den anderen zwei)

max. Zuverlässigkeit (max. Sicherheit)

Lebensspanne (Time To Live): Zähler, mit dem die Lebensdauer von Paketen begrenzt wird. Das Feld soll die Zeit in Sekunden erfassen. Zulässig ist eine max. Lebensdauer von 255 s. Der Zähler muss bei jeder Teilstrecke um 1 reduziert werden und bei einer längeren Zwischenspeicherung in einem Router mehrmals. In der Praxis werden nur die Teilstrecken gezählt (der TTL-Wert entspricht somit einem Hop-Count). Erreicht der Zähler Null, wird das Paket verworfen und ein Warnpaket (ICMP Time Exceeded) an den Quell-Host gesendet. Durch dieses Merkmal werden Datagramme daran gehindert, ewig herum zu schwirren, was manchmal passiert, wenn die Routing-Tabelle beschädigt wurde.

Header Prüfsumme: mod-2-Addition aller 16-Bit-Teilworte des Headers (ohne Checksum-Feld selbst), danach invertieren, sodass der Empfänger mit dem gleichem Algorithmus auf 0 prüfen kann. Eine solche Prüfsumme ist nützlich zum Erkennen von Fehlern, die durch falsche Speicherwörter in einem Router erzeugt wurden.

Protocol: Hat die Vermittlungsschicht ein komplettes Datagramm zusammen gestellt, muss sie wissen, was sie damit anfangen soll. Das Feld Protocol gibt an, an welchen Transportprozess es weiter zu geben ist. Möglich werte: TCP = 6, UDP = 17, OSPF = 89, IGMP = 2, ICMP = 1. Eine komplette Liste möglicher Protokolle kann man online recherchieren unter www.iana.org.

Optionen: max. 10 „Zeilen“, 1 Byte Option-Code zur Einstellung der gewählten Option + 1 Byte Längenangabe. Möglichkeiten:

Sicherheit (Security): Bezeichnet, wie geheim das Datagramm ist

Exaktes Routing (Strict Source Routing): der Sender schreibt vor, über welche Router das Paket explizit zu routen ist.

Freies Routing (Loose Source Routing): nur einige Router des Pfads werden gefordert

Wegeaufzeichnung (Record Route): jeder Router auf dem Pfad trägt seine IP-Adresse ein

Zeitstempel (Timestamp): jeder Router auf dem Pfad trägt seine Systemzeit ein

Internet Control Message Protocol

Definition in RFC 792

wichtigste Nachrichten:

Echo Request/Reply

ping (packet internet groper)

traceroute

Timestamp Request/Reply: wie Echo Request/Reply, nur enthält er die Zeitangaben

Time Exceeded: Fehlermeldung bei Paketvernichtung wg. „Time To Live“

Parameter Problem: bei Fehler im Header

Destination unreachable:

von Paketfiltern zurückgesendet, wenn Pakete abgelehnt werden

falls DF-Bit gesetzt, aber Fragmentieren nötig

Transportschicht

Ende-zu-Ende-Kommunikation für beliebig lange Datenströme, so dass die höchste Schicht (Anwendungsschicht) sich nicht darum scheren muss, wie groß ein Paket sein darf. Im Rahmen von Schicht 3, der Verbindungsschicht, gibt es zwei Arten von Diensten:

verbindungslos  unzuverlässig (best-effort); man spart sich den ganzen Overhead der verbindungsorientierten Übertragung; es ist sehr einfach und schnell. Protokoll: UDP

verbindungsorientiert  zuverlässig, aber auch aufwändig. Anwendung für Telefonie oder Bewegt-Bild-Übertragung. Protokoll: TCP

Weil ein Rechner nicht nur ein Programm ausführt sondern mehrere Prozesse parallel laufen können, muss die Adressierung feiner aufgebaut sein, damit Prozess A von Rechner Alice mit Prozess B auf Rechner Bob kommunizieren kann:

Adressierung( Rechner-ID, Prozess-ID ):

Rechner-ID: entspricht der IP-Adresse

Prozess-ID: entspricht der Port-Nummer des Servers (16 Bit). Diese Port-Nummer ist von ICAN festgelegt und teilt sich in zwei Bereiche (RFC 1340):

well-known < 1024

andere ≥ 1024

Die Verbindung aus IP-Adresse und Port nennt man auch „Socket“.

Transmission Control Protocol

RFC 793

Gleitfenstertechnik, Reihenfolgenummerierung jedes einzelnen Bytes. TCP stellt mit der Gleitfenstertechnik eine virtuelle/logische Verbindung her, d.h. keine tatsächliche, aber Paket-orientierte Verbindung.

Aufbau eines TCP-Segments

Jedes Segment beginnt mit einem 20-Byte-Header mit festem Format. Auf den festen Header können Header-Optionen folgen. Den Optionen können bis zu Datenbyte folgen, wobei sich die ersten 20 auf den IP-Header und die zweiten 20 auf den TCP-Header beziehen. Segmente ohne Daten sind zulässig und werden normalerweise für Bestätigungen und Steuernachrichten verwendet.

TCP-Header:

Erklärung:

Quellport (Source Port): lokaler Endpunkt der Verbindung; basiert auf Socket

Zielport (Destination Port): entfernter Endpunkt der Verbindung; basiert auf Socket

Folgenummer (Sequence Number): wie bei IP-Header

Bestätigungsnummer (Acknowledge Number): wie bei IP-Header

TCP-Header-Länge (TCP Header Length): das Feld gibt an, wie viele 32-Bit-Wörter im TCP-Header enthalten sind. Diese Information ist erforderlich, weil das Optionen-Feld eine variable Länge hat und somit auch der Header. Dieses Feld gibt technisch den Start der Daten, gemessen in 32-BitWörtern, im Segment an. Diese Zahl ist nur die Länge des Headers in Worten, so dass es das Gleiche ist.

Bit URG (Urgent Data): das Bit wird auf 1 gesetzt, wenn ein Zeiger auf Vorrangdaten (Urgent Pointer) verwendet wird, also dessen Wert gültig ist. Es kann ein Benutzer-seitiger Interrupt angefordert werden, z.B. ein CTRL+C vom User.

Bit ACK (Acknowledgment): das Bit wird auf 1 gesetzt, um anzugeben, dass die Bestätigungsnummer (Acknowledge Number) gültig ist. Ist ACK auf 0 gesetzt, enthält das Segment keine Bestätigung. In diesem Fall wird das Feld Bestätigungsnummer ignoriert.

Bit PSH (Push): das Bit bezeichnet PUSH-Daten (direkt zugestellte Daten). Der Empfänger wird damit aufgefordert, die Daten der Anwendung bei Ankunft sofort weiter zu leiten und sie nicht so lange zwischen zu speichern, bis ein voller Puffer eingegangen ist (was sonst aus Gründen der Effizienz geschehen könnte).

Bit RST (Reset): mit diesem Bit wird eine Verbindung zurückgesetzt, wenn ein Host abgestürzt oder ein ähnliche Störung aufgetreten ist. Es wird auch verwendet, um ein ungültiges Segment oder einen Versuch, eine Verbindung zu öffnen, abzuweisen. Im Allgemeinen existiert ein Problem, wenn ein Segment mit dem gesetzten RST-Bit empfangen wird.

Bit SYN (Sync): das Bit wird verwendet, um Verbindungen auf zu bauen. Die Verbindungsanforderung verwendet und , um anzugeben, dass das Feld für Huckepack-Bestätigungen nicht verwendet wird. Die Verbindungsantwort enthält eine Bestätigung, so dass und ist. Das SYN-Bit dient zur Angabe von CONNECTION REQUEST und CONNECTION ACCEPTED, wobei mit dem ACK-Bit zwischen den beiden Möglichkeiten unterschieden wird.

Bit FIN (Final): das Bit dient zur Freigabe einer Verbindung. Es gibt an, dass der Sender keine weiteren Daten mehr zu übertragen hat. Nach dem Schließen einer Verbindung läuft eventuell der abschließende Prozess weiter, um endlos Daten zu empfangen. Die SYN- und FIN-Segmente haben Folgenummern und werden dadurch garantiert in der richtigen Reihenfolge verarbeitet.

Fenstergröße (Window Size): das Feld gibt an, wie viele Byte ab dem bestätigten Byte gesendet werden können. Ein Fenstergröße-Feld von 0 ist zulässig und besagt, dass die Bytes bis einschließlich zur Bestätigungsnummer -1 empfangen wurden, der Empfangspuffer aber voll ist und der Empfänger somit unbedingt eine Verschnaufspause braucht.

Prüfsumme (Checksum): das Feld dient zur Erhöhung der Zuverlässigkeit. Es enthält eine Prüfsumme für den Header, die Daten und den Pseudo-Header. Im Algorithmus für die Prüfsummenberechnung werden alle 16-Bit-Wörter im Einer-Komplement addiert und dann das einer-Komplement der Summe ermittelt. Der Empfangspartner kann mit dem gleichen Algorithmus auf 0 prüfen.

Zeiger auf Vorrangdaten (Urgent Pointer): das Feld bezeichnet einen Byte-Offset ab der aktuellen Folgenummer, an dem Vorrangdaten stehen. Diese Funktion ersetzt Interrupt-Nachrichten . Der Zeiger auf Vorrangdaten kennzeichnet das Byte im Segment, wo „normale“ Daten beginnen, nachdem dringliche Daten am Segmentanfang stecken.

Optionen (Options): in diesem Feld können zusätzliche Funktionen aufgenommen werden, die im normalen Header nicht verfügbar sind. Wichtige Vertreter:

abstimmen der MMS (Maximum Segment Size): die minimale MSS beträgt 556 Byte, d.h. alle Instanzen müssen so implementiert sein, dass sie auf jeden Fall bis zu 556 Byte auf einmal senden und empfangen können. (Das hängt auch zusammen mit min. MTU: 576 Byte.)

RFC 1323; 34,4 Mbit/s ⇒ 15 ms
Roundtriptime transatlantische Verbindung: 50 ms ⇒ der Zeit ist Wartezeit
Lösung: „window scale option“: zulässig ist eine Skalierung bis
⇒

Selective-Repeat-Technik statt Go-Back-N (default)

Daten (Data): die zu übertragenden Daten des Segments. Das Feld kann auch leer bleiben.

Wo bleibt aber die Angabe einer Ziel- und Quelladresse? Wie groß ist das gesamte Segment? Solche Informationen sind im TCP-Header nicht enthalten und können auch nicht aus ihm mit bestimmten Methoden heraus gelesen werden. Deshalb wird „oberhalb“ des TCP-Headers ein „Pseudo-Header“ angelegt.

TCP-Pseudo-Header:

Erklärung:

IP-Quell-Adresse: IP-Adresse wie bei IP-Header

IP-Ziel-Adresse: IP-Adresse wie bei IP-Header

Protokoll: konstant 0x06 für Transport-Protokoll TCP

TCP-Segment-Länge: Gesamtlänge eines TCP-Segments.

graue Fläche: ungenutzte Bits, die alle auf 0 gesetzt sind.

TCP-Verbindungsverwaltung

SYN, ACK, FIN, RST

Verbindungsaufbau

Sequenzdiagramm Verbindungsaufbau (voll duplex):

In TCP werden Verbindungen über ein Drei-Wege-Handshake aufgebaut. Host 1 schickt neben einer Folgenummer (Sequence Number) auch eine Bestätigungsnummer (Acknowledge Number), die der Empfänger aber nicht interpretieren soll, da das ACK-Bit auf 0 gesetzt ist. Da eine Verbindung aufgebaut werden soll, befinden wir uns genau am Anfang einer Synchronisations-Phase. Das wird durch das gesetzte SYN-Bit angedeutet.
Host 2 (meist der Server) antwortet auf das erhaltene Paket mit einer Bestätigung, dass er ab sofort das Datenbyte erwartet (). Er selbst schickt die Folgenummer y. Da jetzt die Bestätigungsnummer (Acknowledge Number) gültig ist, ist das ACK-Bit auf 1 gesetzt.
Nach Erhalten des Bestätigungsrahmens von Host 2 kann Host 1 bereits aktiv mit dem Senden von Daten beginnen. Die Synchronisations-Phase ist vorbei, das SYN-Bit wird entsprechend auf 0 gesetzt. Weil alle Bestätigungsnummern gültig sind, bleibt das ACK-Bit konstant auf 1.

Verbindungsabbau:

Sequenzdiagramm Verbindungsabbau:

Datentransfer

Beispiel: TCP-Datentransfer

Silly-Window-Syndrome:

window size meldet nur „sinnvoll große“ Pufferfreikapazitäten.

ähnlich: Sender darf sinnvolle Segmentgröße abwarten

⇒ die Anwendung setzt im TCP-Protokoll das PSH-Bit (Push). Damit ist die Sender- und Empfänger-seitige Pufferung ausgeschaltet.

Zeitschrankenfestlegung

Erinnerung: Festlegung der Zeitschranke auf Schicht 2:

Nun auf Schicht 4:

Algorithmus von V. JACOBSON (1988)

Typisch:

Vorschlag:

Später: mit

KARN's Erweiterung : bei Laufen ins Timeout wird das JACOBSON-Verfahren ausgesetzt und stattdessen angenommen: . Erst wenn ein Segment auf Anhieb erfolgreich ist, wird auf JACOBSON zurückgestellt.

Überlast-Kontrolle

Überlast-Kontrolle (Congestion Control). Es können folgende Fälle eintreten:

Empfänger überlastet der Empfänger reagiert mit veränderter window size

Netz überlastet: das wird dadurch erkannt, dass Segmente verloren gehen.

Lösung: dem Empfangsfenster wird ein congestion window überlagert; das Minimum aus beiden Fenstern bestimmt die Segmentgröße.

(size of congestion window); Vorgehensweise:

initial:

beim 2. Versuch:

beim 3. Versuch:

beim 4. Versuch:

...

⇒ „slow start algorithm“

UDP

Die Schicht hat keine Funktionalität; sie verpackt einfach alle Daten von der Anwendungsschicht so, dass sie in die Vermittlungsschicht passt. Dennoch sollten ein paar Begriffe erläutert werden:

Datagramm: Nachricht, die in ein Paket zu stecken ist

best-effort: wenn Pakete verloren gehen, dann sind sie halt weg. Auf Reihenfolge-Nummerierung wird ebenfalls keinen Wert gelegt.

Aufbau eines UDP-Datagramms:

auch hier: Pseudo-Header; Protokoll = 17

Anwendungen für UDP: DNS, PING, SNMP, aber auch Trivial-FTP, ARQ

Anwendungsschicht

Bisher nicht betrachtet wurde Datenstruktur, -inhalt und -darstellung. Mögliche Daten, die übermittelt werden könnten:

Datei (FTP, SFTP)

Remote-Steuerung eines fernen Rechners (Telnet, SSH)

E-Mail (SMTP)

Austausch multimedialer Inhalte/Dokumente (HTTP)

Netzwerk-Management (SNMP)

File Transfer Protocol (FTP)

Spezifiziert in RFC 959.

Weltweit gibt es eine große Menge sog. „Anonymous FTP-Servers“:

[user@laptop user}$ ftp

ftp> open ftp.uni-passau.de

Username: anonymous

Password: (eigene Email-Adresse)

Wichtigste Befehle für FTP:

dir: Verzeichnisinhalt auslesen

cd: Wechsel in ein anderes Verzeichnis

get [File]: Download einer Datei

mget [Optionen [File(s)]]: Download mehrerer Dateien

binary: Umschalten in Binär-Modus

ascii: Umschalten in Text-Modus

image: Umschalten auf Bilddateien, was aber binary entspricht

help: Hilfe anzeigen

close: Verbindung trennen

quit: FTP beenden

Client/Server-Implementierung ⇒ Server-Port 21 für Steuerbefehle, Port 20 für Datentransfer

Betriebsmodi:

Server-gesteuert (aktiv): der Server baut eine Daten-Transfer-Verbindung zum Client auf. Weil das der Server macht, denn man das Verhalten auch aktiv. Es kann jedoch bei Firewall zu Problemen kommen, weil von außen kommende Verbindungen als Hacker-Angriff gewertet werden und nicht durchgelassen werden.

Client-gesteuert (passiv): hier geht die Daten-Transfer-Verbindung vom Client aus, so dass der Server in der passiven Rolle auftritt. Firewall lassen diese Verbindungen zu, da sie von innen nach außen aufgebaut werden.

Inzwischen gibt es auch eine sichere Variante von FTP, in der Benutzerdaten verschlüsselt übertragen werden: SFTP (Secure File Transfer Protocol)

Telnet

Spezifikation in RFC 854

Telnet ist eine Abkürzung für Teletype Network. Bis heute hat sich der Name erhalten und schlägt sich z.B. nieder in Alias-Namen für Konsolen: tty1 – tty7

telnet [hostname [port]]

telnet> open ...

telnet> close

Telnet startet einen Betriebssystem-Interpreter („shell“). Sie ist folgendermaßen organisiert. Nach dem Einloggen wird eine Datei '.profile' ausgeführt. Sie kann auch so gestaltet werden, dass ein User am eingeloggten Rechner nichts anstellen kann und nur ein Programm ausführen kann. Dach wird er automatisch ausgeloggt:

Da der Login-Vorgang sicherheits-kritisch ist (Passwörter werden im Klartext übertragen), gibt es eine völlige Neuüberarbeitung des Protokoll aus der OpenSource-Gemeine: SSH (Secure Shell).

SMTP

SMTP (Simple Mail Transfer Protocol), festgelegt in RFC 821

Moderne Mailsysteme bestehen aus zwei Teilsystemen:

Transferkomponente (eng. message transfer agent)	 Hülle (eng. envelope)

Anwenderkomponente (eng. user agent)	 Nachricht (eng. message)
↳ Kopf (eng. header)
↳ Inhalt (eng. body)

Diese Mailsysteme orientieren sich an den X.400-Protokollen. Ferner gilt, dass die Hülle der Transferkomponente und der Kopf der Anwenderkomponente zu einem einzigen Kopf zusammengefasst (spezifiziert in RFC 822). Er ist ASCII-Zeilen orientiert, wobei ein Identifikator (eng. tag) die Zeile identifiziert.

<Folie „RFC 822“>

<Folie „MIME“>

MIME (eng. Multipurpose Internet Mail Extensions), spezifiziert in RFC 1521, hat folgende Felder:

MIME-Version: 1.0

Content-Description: String zur Beschreibung des Inhalts (optional)

Content-ID: eindeutiger Schlüssel zur Bezugnahme (optional)

Content-Type: Art des Inhalts

Content-Transfer-Encoding: Verfahren, mit dem der Inhalt codiert wurde

<Folie „MIME Typen und Codierungsverfahren“>

base 64:

<Folie „SMTP Protokollablauf“>

Aktiv wird zuerst der Client: baut TCP-Verbindung zu Port 25 des Servers auf. Dann läuft die Kommunikation so wie auf der Folie in reinem ASCII-Text ab. Aber wo werden die Mails am Server gespeichert? In einer Datenbank auf dem Server, auch als Mailbox mit der Struktur mailbox@rechner

„endgültige“ Auslieferung:

POP3 (eng. Post Office Protocol V.3): einfaches Protokoll, um Mails abzuholen; nicht geeignet für Anwender mit wechselnden Arbeitsplätzen

IMAP4 (eng. Interactive Mail Access Protocol V.4): Verwenden eines Repositoriums (eng. Repository)

HTTP

HTTP (eng. HyperText Transfer Protocol), spezifiziert in RFC 1945 1989 (CERN) von Tim Berners-Lee. Die Idee war aber nicht neu – es gab bereits den Internet-Dienst Gopher (FTP-orientiert). HTTP wurde vorgestellt als Prototyp 1991. Danach wurde der erste Browser Mosaic entwickelt. Dokumente werden adressiert über einen sog. URL (eng. Uniform Resource Locater) mit dem Schema .

<Folie „HTTP Protokollablauf“>

Bei HTTP-Protokoll 1.0 werden Verbindungen immer wieder auf- und abgebaut. Das ist nicht besonders effizient. Statt dessen wünscht man sich persistente Verbindungen, bis wirklich das Dokument und alle darin verlinkten Bilder geladen sind. HTTP 1.1 (spezifiziert in 2616) behebt dieses Problem.

Weitere Befehle beim HTTP-Protokoll:

HEAD: es wird nur der HTTP-Header geholt, nicht jedoch die eigentliche HTML-Seite
⇒ sinnvoll für Caching. Caching erfordert jedoch sehr viel Speicherplatz, sodass oft eigene Cache-Server (eng. Proxy-Server) aufgestellt werden.

POST: Daten auf den Server schicken

PUT (V.1.1): direktes Anlegen eines Dokuments auf dem Server

Seit HTTP 1.0: Kopfzeilen auch in den Anforderungen möglich, z.B.:

GET ...
If-modified since: Thu 8-jan-04 08:42 GMT
<Leerzeile>

Der Web-Server antwortet entweder mit der HTML-Seite wenn sie nicht mehr aktuell ist oder mit folgender Zeile, wenn der Cache noch gültig ist:

HTTP/1.0 304 Cached page still valid

HTTP ist zustandslos! Lösung: Cookie (RFC 2109). Es wird vom Server gesetzt und dem Browser übermittelt. Bei der nächsten Client-Server-Verbindung schickt der Browser als ergänzende Head-Zeile in der GET-Anweisung das Cookie zurück auf den Server.:

Set-Cookie: ... (Server)

Cookie: ... (Client)

Beispiel: Server setzt Cookie

Set-Cookie:

SNMP

SNMP (eng. Simple Network Management Protocol) ist spezifiziert in RFC 1157

Kommerzielle Manager (Auszug):

HP OpenView

IBM Tivoli/NetView

Novell ManageWise

Sun NetManager

Cisco Works

Auf jedem Gerät (eng. Device) läuft ein Prozess (eng. Agent) als Server-Prozess, der interne Zustände in Variablen abspeichert. Ein NMS (eng Network Management System) als Client frägt diese Variablen von allen Geräten ab. Mehrere Geräte bilden eine Verwaltungs-Einheit (eng. Community) und werden in NMS in der Variablen Name (Name = Community String) abgespeichert bzw. vom Netzwerk-Administrator vergeben. Komponenten, die in keiner Verwaltungs-Einheit hängen, gehören implizit keiner Einheit ist (eng. all communities).

Begriffe, die im Rahmen von SNMP definiert werden:

managed objects MO: entsprechend Variablen der einzelnen Netz-Ressourcen.

Beschreibung der Syntax und des Typs einer Variablen in ASN.1 (eng. Abstract Syntax Notation One)

Objektidentifikation: baumartige Struktur alles Mos MIB-Baum (eng. Management Information Base)

Beispiel: Objektidentifikation für sysUpTime(3):

offiziell:	iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1).system(1).sysUpTime(3
alternativ:	1.3.6.1.2.1.1.3
Mischform:	mib-2.1.3

spezifische Erweiterungen in private.einterprises(1).cisco(9). ...

SNMP ist ein einfaches Req/Resp-Protokoll auf Port 161 auf Basis von UDP

<Folie „Aufbau einer SNMP-Nachricht“>

Message-Version:

0 = snmp V.1

1 = snmp V.2

2 = snmp V.3

PDU-Type:

0 = GetRequest

2 = GetResponse

Reqest-ID:	zur Bezugnahme
Error Status:	Fehlercode (nur Response, sonst Durchschnitt)
Error Index:	Index in Variable Bindings (Variable, bei der abgebrochen wurde)
BER (eng. Basic Encoding Rules)

Trap: Agent wird selbst aktiv: Port 162

Die Schichten 1 und 2 werden in der Literatur auch häufig zusammengefasst unter dem Name “Host-to-Network-Layer”

Request For Comments -> http://www.ietf.org/rfc/

»abgeschrieben« von HDLC (Schicht-2 OSI)

muss nur einmal auf den Bus gesendet werden und muss nicht zurückkommen!

; per Zufallsgenerator ausgewählt

„binärer exponentieller Rückzug“

X = vollduplex; 2 Doppeladern benötigt

F: Glasfaser »fiber«

muss nicht mehr ausgeführt werden

das ist ein 16Bit-Integer-Wert
Vergeben von der globalen Behörde ICANN (engl. Internet ... Authority ... ...)
- APNIC
- RIPE NCC (Réseaux IP Européens – Network Coordination Center)

Dies ist die rohe Art, einem Sender die Möglichkeit zu geben, ein Signal an einen Empfänger zu übertragen, ohne dass TCP hier mit einbezogen wird.

empirisch festgelegt

Untersuchung aerischer Medien

Die Bezeichnung ist etwas irreführend, denn mathematisch betrachtet ist eine exponentiell wachsende Funktion keineswegs langsam startend!

AM

Die Grafik durch eigene ersetzen

AM

bitte überarbeiten

AM

Tabelle durch Spreadsheet ersetzen

Mitschrift	Rechnernetze 1 (INF 5T)

© Arthur Müller	info@artoo4u.de	page 61 of 61

Rechnernetze 1 (INF 5T)

FH Ingolstadt; Mitschrift

FH Ingolstadt 2003

2003-10-08T22:37:36

Arthur Müller