Rechnerkommunikation III - HKI

Werbung
Rechnerkommunikation III
Basisinformationstechnologie – Teil 2
Dozent: Peter Melms
Mail: [email protected]
Rechnerkommunikation III
Protokolle und Dienste des TCP / IP Modells
1
Protokolle und Dienste der Anwendungsschicht
1.1
•
Kommunikation zwischen Anwendungsprozessen
Ein Prozess kommuniziert mit einem anderen, indem er
Nachrichten durch seinen Socket ( allgem.: Kanal zum Zwecke
des Informationsaustauschs) schickt.
Der Socket leitet die Nachricht weiter an die Transportschicht.
Der Prozess geht davon aus, dass die Empfängerseite über einen
gleichen Socket verfügt, um die Nachricht zu empfangen.
•
•
Rechnerkommunikation III
1.2
•
Adressierung von Prozessen
Um eine Nachricht von einem Prozess zu einem anderen zu
senden, muss der empfangende Prozess identifiziert werden.
•
Die Identifikation besteht aus zwei Teilen:
- dem Namen oder der Adresse des Hosts,
- einem Identifizierer, der den empfangenden Prozess
auf dem Zielhost bezeichnet
•
Der Zielhost wird durch seine IP-Adresse identifiziert.
•
Der Prozess wird durch eine Portnummer identifiziert.
Rechnerkommunikation III
1.3
•
Portnummern
Beliebten Protokollen auf der Anwendungsschicht wurden
spezifische Portnummern zugewiesen, so z.B.:
• Ein Web-Server-Prozess (der HTTP benutzt) wird durch
Portnummer 80 identifiziert.
• Ein Mail-Server-Prozess (der SMTP benutzt) wird durch
Portnummer 25 identifiziert.
• RFC 1700 enthält eine (veraltete) Liste der "wohlbekannten„
Portnummern der Internet-Standardprotokolle.
Die aktuelle Liste wird in einer Datenbank (www.iana.org)
geführt.
Rechnerkommunikation III
1.4
Hypertext Transfer Protocol (HTTP)
1.4.1
•
Charakteristik von HTTP
Protokoll für den Zugriff auf Webseiten
•
HTTP unterstützt sowohl persistente Verbindungen als auch nicht
persistente Verbindungen. HTTP/1.0 arbeitet mit nicht persistenten,
HTTP/1.1 mit persistenten Verbindungen als Default-Modus.
•
HTTP ist ein zustandsloses (kontextloses) Protokoll, d.h. der Server
muss sich keine Kontextinfo hinsichtlich einer gestellten Anfrage merken
(schließt die Verbindung mit der Antwort).
•
HTTP ist ein pull-Protokoll, d.h. der Client zieht die Dateien von Server
herunter.
Rechnerkommunikation III
1.4.2
•
Nicht persistente Verbindung
Der HTTP-Client leitet eine TCP-Verbindung zum Server auf Port 80
als Default ein. Das Handshake findet statt.
•
Der HTTP-Client schickt eine Anfragenachricht an den Server. Der
Anfragename enthält bereits den Pfadnamen der gewünschten Datei.
•
Der HTTP-Server empfängt die Anfrage, liest das angefragte Objekt
ein, kapselt es in eine HTTP-Antwortnachricht und schickt diese an
den Client.
•
Der HTTP-Server weist TCP an, die Verbindung zu schließen, wenn
der Client die Nachricht korrekt empfangen hat.
•
Der HTTP-Client empfängt die Antwortnachricht, die TCPVerbindung wird geschlossen. Der Client analysiert die Nachricht und
sucht mögliche Referenzen in der HTML-Datei.
•
Pro enthaltener Referenz werden die Schritte 1-4 wiederholt, bis alle
Objekte vom Server zum Client übertragen wurden.
Rechnerkommunikation III
1.4.3
Persistente Verbindung
•
Der Server läßt die TCP-Verbindung offen, nachdem er die
Antwortnachricht verschickt hat.
•
Anschließende Kommunikation zwischen Server und Client erfolgt auf
der offenen TCP-Verbindung.
•
Die TCP-Verbindung wird geschlossen, wenn sie für eine bestimmte
(konfigurierbare) Zeitdauer nicht benutzt worden ist.
•
Persistente Verbindungen gibt es mit und ohne Pipelining.
- ohne Pipelining bedeutet, dass die TCP-Verbindung tatsächlich
unbenutzt bleibt, solange der Client Daten empfängt. Der Client sendet nur
dann eine neue Anfrage, wenn er die vorherige Antwort empfangen hat.
- mit Pipelining bedeutet, dass der Client eine Anfrage nach einem neuen
Objekt losschickt, sobald er auf eine Referenz stößt, ohne dass er die
Antwort auf die vorherige Anfrage abwartet.
- HTTP/1.1 nutzt im Default-Modus persistente Verbindungen mit
Pipelining.
Rechnerkommunikation III
1.4.4 Exkurs:
Proxy Server
•
Ein Proxy-Server ist eine Netzwerkeinheit, die HTTPAnfragen im Auftrage eines Client erfüllt.
•
Der Client schickt eine Anfragenachricht zuerst an den ProxyServer.
•
Der Proxy-Server prüft, ob das geforderte Objekt in seinem
Speicher vorrätig und nicht veraltet ist.
• Wenn ja, schickt er dem Client das Objekt, ohne den
Originalserver zu kontaktieren.
• Wenn nein, wird der Proxy-Server zum Client und fragt beim
Originalserver das Objekt an.
Rechnerkommunikation III
Rechnerkommunikation III
1.5
E-Mail
(1)
Rechnerkommunikation III
• User Agent: Unterstützt den Benutzer bei der Erstellung und den
Versand seiner Nachricht; er ist ein Anwendungsprozeß, über den
Dienstleistungen des Übermittlungssystems dem Benutzer verfügbar
gemacht werden. (= Mailprogramm)
• Message Transfer Agent: Diese übernehmen die Nachricht vom
User Agent oder anderen MTAs und vermitteln sie so an den
Empfänger; sie realisieren also das eigentliche
Nachrichtenübermittlungssystem.
• Bei der Übermittlung von Nachrichten können verschiedene
Protokolle zum Einsatz kommen: SMTP, POP3, IMAP…
Rechnerkommunikation III
1.5.1
Simple Mail Transfer Protocol (SMTP)
•
Im Internet wird Mail zugestellt, indem die Quelle eine TCP-Verbindung
zu Port 25 des Ziels aufbaut.
•
SMTP ist ein einfaches ASCII-Protokoll:
– Nach dem Aufbau der TCP-Verbindung wartet der sendende Rechner (Client),
bis der empfangende Rechner (Server) zuerst mit der Kommunikation beginnt.
– Der Server beginnt durch Aussenden einer Textzeile, durch die er sich
identifiziert und mitteilt, ob er Email annehmen kann
•
SMTP funktioniert nur, wenn der Empfänger einer Mail an einem Rechner
arbeitet, der Emails senden und Empfangen kann.
•
Da dies normalerweise nicht der Fall ist (kaum jemand hat einen Rechner
zuhause, der Tag und Nacht online ist, und auf dem ein Mailserver läuft!)
musste eine andere Lösung gefunden werden, um der steigenden Zahl
an Benutzern den Empfang von Email zu ermöglichen: POP3
Rechnerkommunikation III
1.5.2
Post Office Protocol 3 (POP3)
= Protokoll um Nachrichten, die auf einem Übertragungsagenten
hinterlegt sind, lokal abzurufen.
Rechnerkommunikation III
• POP3 durchläuft nacheinander 3 Zustände:
Autorisierung: Senden des Benutzernamens und
Passworts
Transaktion: Abruf der Nachrichten aus der Mailbox
(Speicherort beim ISP)
Aktualisierung: Löschen der Nachrichten
• POP3 setzt wie SMTP auf TCP auf, d.h. zunächst errichtet
die das Mailprogramm eine TCP-Verbindung über einen Port
(hier idR 110) und führt dann das POP3 Protokoll aus.
Rechnerkommunikation III
1.5.3
•
Nachrichtenformate
RFC 822
Rechnerkommunikation III
•
Multimediale Nachrichten
- Standard-SMTP sieht nur die Übertragung von Nachrichten
als ASCII-Text vor
- deshalb wurde ein Standard für die Übertragung
multimedialer Nachrichteninhalte definiert: MIME
(Multipurpose Internet Mail Extensions)
- neue Datenfelder im Headerteil einer Nachricht, z.B.:
Content-Type:
video/mpeg
Content-Transfer-Encoding: base64
- Binäre Daten werden meist base64 codiert und dann versendet.
- Anschliessend werden die Daten beim Empfänger wieder
decodiert.
Rechnerkommunikation III
1.6
1.6.1
•
Domain Name System (DNS)
Begriffe
Domain Name System
= auf Domänen basierendes Benennungsschema für IPAdressen (RFC 1034, 1035), das als verteiltes
Datenbanksystem realisiert ist.
•
Domain Name Server (Name Server):
Rechner, das /der die Information über die Struktur des DNS
verwaltet und aktualisiert.
•
DNS-Protokoll:
Protokoll, das die Umwandlung von IP-Adressen in DNSNamen regelt. Momentan wird für die Übermittlung von DNSAnfragen UDP oder TCP verwendet
•
Domain Name Service:
Dienst, der das DNS realisiert.
Rechnerkommunikation III
1.6.2
•
DNS-Namensraum
Subdomain, Second Level Domain, Top Level Domain
Beispiel: hki.uni-koeln.de
•
Jede Domain (Domäne) bestimmt, wie die unter ihr liegenden Domains
zugewiesen werden:
Bsp.:
cs.yale.edu
cs.keio.ac.jp
hki.uni-koeln.de
Rechnerkommunikation III
1.6.3
Nameserver
Jede Zone enthält Nameserver, die Domainanfragen beantworten und
DNS-Einträge verwalten.
1.6.4
Resolver
Resolver stellen die Schnittstelle zwischen Anwendungsprogramm
und Nameserver her. Sie können Informationen aus den Nameservern
abrufen, z.B. Ressource Records um eine angeforderte IP-Adresse zu
erhalten.
Rechnerkommunikation III
2
2.1
Dienste und Protokolle der Transportschicht
Dienste
•
Instanzen der Vermittlungsschicht arbeiten gemäß unterschiedlicher
Vermittlungsschichtprotokolle.
Dementsprechend bieten sie unterschiedliche Dienste an.
Die Transportschicht soll einen zuverlässigen Datentransferdienst für die
Anwendungsprozesse bereit stellen, unabhängig von der verwendeten
Netztechnologie in den Schichten unterhalb zusätzliche Robustheit
•
Rechnerkommunikation III
2.2
2.2.1
–
–
–
–
Protokolle
User Datagram Protocol (UDP)
Definiert in RFC 768.
Verbindungsloses Protokoll
Bietet einen einfachen, unbestätigten Datagramm-Dienst.
Unterstützt also nicht Flusskontrolle, Fehlerkontrolle oder erneutes
Senden
– Max. Größe einer UDP-PDU: 64 KB.
– Schnelle, einfache Übertragung
– Verwendung: z.B.: - Multimediaanwendungen
- kurze Anforderungen/Übertragungen
Rechnerkommunikation III
2.2.2
•
•
•
•
•
Realtime Transport Protocol (RTP)
Definiert in RFC 3550, (1889).
Protokoll für Echtzeit-Multimedia-Anwendungen (Internettelefonie, Audiostreaming, …).
RTP ist ein Protokoll das sich nicht exakt in eine Schicht einordnen läßt, da es ein
Transportprotokoll ist, das in der Anwendungsschicht implementiert ist; es
verwendet wiederum UDP als Transportmedium
Bietet keine Fehlerkorrektur, da Pakete, die erneut gesendet werden würden, ohnehin
zu spät einträfen.
RTP hat auch ein Kontrollprotokoll: RTCP. RTCP kann z.B. Informationen über
Übertragungsverzögerung, Jitter (Abweichungen in der Paketübermittlungszeit),
Bandbreite liefern.
Rechnerkommunikation III
2.2.3
Transmission Control Protocol (TCP)
– Definiert in RFC 793.
– Verbindungsorientiertes Protokoll
– TCP ist zuverlässig (alle Datenpakete kommen redundanzfrei,
vollständig und in richtiger Reihenfolge an) und verbindungsorientiert
(stellt virtuellen Kanal über Sockets her)
– Multiplexen/ Demultiplexen:
• Um Daten zwischen mehreren Prozessen auszutauschen, müssen sie
multiplext/demultiplext werden, d.h. die Daten müssen einzelnen
Prozessen zugeordnet werden.
• Die Aufgabe der Übertragung der in einem Transportschichtsegment
enthaltenen Daten an den richtigen Anwendungsprozess heißt
Demultiplexen.
• Die Aufgabe des Einsammelns von Daten aus verschiedenen
Anwendungsprozessen, die Vervollständigung der Daten mit HeaderInformationen, um Pakete zu bilden, und die Weiterleitung der Pakete
an die Vermittlungsschicht heißt Multiplexen.
• Erhöht die Effizienz bei der Übertragung!
Rechnerkommunikation III
3.
Protokolle und Dienste der Internetschicht
•
Dienstklassen der Internetschicht
–
–
Verbindungslose Dienste (Datagramm Teilnetz „Postsystem“)
Verbindungsorientierte Dienste (Virtuelle Verbindung, Virtual Circuit „Telefonsystem“)
3.1 Routing
3.1.1 Routing-Algorithmen
•
Verfahren zur Bestimmung von Wegen, die ein Datenpaket vom Sender zum
Empfänger nehmen soll.
Routing-Algorithmen verarbeiten Wegewahlinformationen, mit Hilfe derer der Weg
festgelegt wird ( statische / dynamische Routing-Algorithmen)
Beispiele für Routing Verfahren
Fluten:
(Datenpakete werden vom Router repliziert und auf allen anderen Wegen weitergeschickt hoher Netzverkehr)
Shortest Path Routing
(Kürzester Weg berechnet nach: Anzahl der Teilstrecken / Entfernung in km / …)
Distance Vector Routing
(Jeder Router verwaltet eine Tabelle, die für jedes Ziel die bestmögliche Entfernung und die zu
verwendende Ausgangsleitung enthält)
Link State Routing
(Routing der Pakete nach Zustand der Leitungen gleichmässigere Netzauslastung)
Rechnerkommunikation III
• Routing mittels Wegewahltabellen (verbindungsloser Dienst)
Das gezeigte sog. Datagramm-Teilnetz arbeitet wie
folgt:
• Der Prozess P1 hat eine lange Nachricht für P2
• Er übergibt sie an die Transportschicht mit der
Anweisung, sie an P2 auf Host H2 zuzustellen.
• Die Nachricht wird in Pakete aufgeteilt (4 Stück) und an
Router A (über PPP).
• Jeder Router hat eine interne Tabelle, aus der er jedes
mögliche Ziel zum Versenden der Pakete entnimmt.
• Jeder Tabelleneintrag ist ein Paar aus Ziel und der
Ausgangsleitung, um dieses Ziel zu erreichen.
• Es können nur direkte Verbindungsleitungen verwendet
werden.
• So hat A nur zwei Ausgänge: B und C, so dass jedes
eingehende Paket entweder zu B oder C gesendet werden
muss.
• Die Pakete werden auf A kurz gespeichert und die
Prüfsumme verifiziert.
• Anhand der Tabelle werden die Pakete dann von A an C
weitergeleitet.
• Das Paket 1 wird dann an E gesendet und dann an F.
• Bei F wird es in einen Rahmen der Sicherungsschicht
gekapselt und über das LAN an H2 gesendet. Die Pakete
2 und 3 nehmen den gleichen Weg.
• Paket 4 wird an B weitergeleitet, da A entschieden hat,
dass Paket 4 aufgrund eines Datenstaus im Pfad A-C-E
über einen anderen Pfad verschickt werden soll. A hat
also dazugelernt und seine Tabelle aktualisiert.
Rechnerkommunikation III
• Routing mittels Wegewahltabellen (verbindungsorientierter Dienst)
• Beim verbindungsorientierten Dienst wird eine feste
Verbindung zwischen den beiden Hosts H1 und H2
hergestellt.
• Dies wird im ersten Eintrag der entsprechenden
Routingtabelle notiert.
• Die erste Zeile der Tabelle von A gibt an, dass ein von H1
kommenden Paket mit der Verbindungskennung 1 an
Router C geschickt wird.
• Genauso leitet der erste Eintrag in C das Paket an E
weiter.
• Wenn ein weiterer Host H3 eine Verbindung aufbauen
möchte geschieht folgendes:
• H3 wählt ebenfalls die
Verbindungskennung 1, da er nur
eine Verbindung aufgebaut hat, und
weist das Teilnetz an, eine virtuelle
Verbindung einzurichten.
• Dies zeigt die zweite Zeile in den
Tabellen.
• An dieser Stelle tritt ein Konflikt auf,
da nun die Pakete von zwei Rechner
die gleiche Verbindungskennung
haben: 1.
• Obwohl A die Pakete von H1 und H3
leicht auseinander halten kann, kann C
das nicht. Daher weist A den Paketen
für den ausgehenden Datenverkehr
von H3 eine andere
Verbindungskennung zu.
• Um deratige Konflikte zu bewältigen,
haben Router die Fähigkeit, die
Verbindungskennung ausgehender
Pakete zu ersetzen:
- diese Fähigkeit nennt man LabelSwitching.
Rechnerkommunikation III
3.2 Internet Protocol
3.2.1 IPv4 Charakteristik:
•
•
•
•
•
•
Besteht aus einem Header- (20 Byte feste Länge + optionaler Abschnitt
mit variabler Länge (max. 40 Byte)) und Textteil.
Header+Text bilden zusammen das Datagramm.
Max. Gesamtlänge eines Datagramms: 65.536 Byte.
Elementare Fragmenteinheit: 8 Byte.
Header:
Mehrere festgelegte Felder kodieren verschiedene Basisinformationen
(Version des Protokolls, Länge, …(s. Abb. 5.45)) und zusätzliche optionale
Informationen (Sicherheit, Striktes Source-Routing…(s. Abb 5.46))
Verbindungsloses, relativ unzuverlässiges Protokoll:
- keine Bestätigung der Zustellung/Verlust eines Pakets
- keine Überlastkontrolle
Rechnerkommunikation III
3.2.1.1 Netzklassen (veraltet – nicht mehr in Gebrauch)
Rechnerkommunikation III
3.2.1.2 Classless InterDomain Routing (CIDR)
•
Netzklassen sind nicht mehr in Gebrauch, IP-Adressen werden nach
CIDR vergeben!
•
CIDR (Classless Interdomain Routing) (RFC 1519) soll das Problem der
"ausgehenden" IP-Adressen lösen:
Die verbleibende Netze werden in Blöcken vergeben, unabhängig von
Klassen:
•
– Adressen 194.0.0.0 bis 195.255.255.255 für Europa
– Adressen 198.0.0.0 bis 199.255.255.255 für Noramerika
– ...
Rechnerkommunikation III
3.2.2 IPv6 Charakteristik
•
IPv6 wurde eingeführt, um vor allem die Anzahl der zu vergebenden IPAdressen zu vergrößern; dabei soll zusätzlich das Protokoll aufgrund von
mit IPv4 gemachten Erfahrungen verbessert werden; neue Anwendungen
(Multimediaanwendungen) und veränderte technologische
Rahmenbedingungen (Realisierung hoher Datenraten) sind weitere Gründe.
•
Die Größe der IP-Adresse wurde von 32 auf 128 Bit erhöht.
Nicht mehr vorhanden sind (vor allem aus Gründen des Zeitaufwandes bei der
Verarbeitung):
–
–
–
Fragmentierung/Reassemblierung findet jetzt nur noch bei Quelle und Ziel statt,
nicht aber bei dazwischen liegenden Routern
Prüfsumme: aufgrund des TTL-Feldes musste in jedem Router die Prüfsumme
neu berechnet werden
Optionen verschoben in „nächsten Header“
Notation der 16-Byte Adressen:
–
X:X:X:X:X:X:X:X
z.B.: FEDC:BA98:7654:3210:FEDC:BA98:7654:3210
(in Hex-Format)
Herunterladen