Transmission Control Protocol (TCP)

Werbung
2. Netzwerkprogrammierung für mobile Geräte
Transmission Control Protocol
Transmission Control Protocol (TCP)
• Verbindungsorientiertes Protokoll, zuverlässig, paketvermittelt
• stream-orientiert
• bidirektional
• gehört zur Transportschicht, OSI-Layer 4
• spezifiziert in RFC 793
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
56
2. Netzwerkprogrammierung für mobile Geräte
Transmission Control Protocol
Zuverlässigkeit
• gesendete Daten kommen vollständig an
• korrekte Reihenfolge der Daten
• keine Duplikate bei den Daten
Selbständige Behandlung der Probleme innnerhalb von TCP, Nutzer sehen Byte-Stream
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
57
2. Netzwerkprogrammierung für mobile Geräte
Transmission Control Protocol
Client/Server
• Anbieter eines Dienstes: Server
• Server ist erreichbar an fester Host/Port-Kombination
• Nachfrager eines Dienstes: Client
• Client muss eine Verbindung beim Server anfordern.
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
58
2. Netzwerkprogrammierung für mobile Geräte
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
Transmission Control Protocol
59
2. Netzwerkprogrammierung für mobile Geräte
Transmission Control Protocol
Aufbau eines TCP-Pakets
Der TCP-Kopfteil enthält:
• Portnummer des Senders (2 Bytes)
• Portnummer des Empfängers (2 Bytes)
• weitere Felder, z. B. Sequenznummer und Prüfsumme (16 Bytes)
• optionale Felder variabler Länge
Darauf folgen die Nutzdaten des TCP-Pakets.
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
60
2. Netzwerkprogrammierung für mobile Geräte
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
Transmission Control Protocol
61
2. Netzwerkprogrammierung für mobile Geräte
Transmission Control Protocol
Verbindungsaufbau
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
62
2. Netzwerkprogrammierung für mobile Geräte
Transmission Control Protocol
Verbindungsabbau
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
63
2. Netzwerkprogrammierung für mobile Geräte
Transmission Control Protocol
Zustände einer TCP-Verbindung
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
64
2. Netzwerkprogrammierung für mobile Geräte
Transmission Control Protocol
TCP-Anwendungen
• File Transfer Protocol (FTP)
• Telnet
• Simple Mail Transfer Protocol (SMTP)
• Post Office Protocol (POP)
• Hypertext Transfer Protocol (HTTP)
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
65
2. Netzwerkprogrammierung für mobile Geräte
Transmission Control Protocol
TCP-Sockets
Unterscheidung zwischen Client- und Server-Socket:
• Server-Socket
Warten auf eintreffende Verbindungsanforderungen, accept() liefert
Client-Socket, kann mehrere Clients bedienen
• Client-Socket
Automatische Kontaktaufnaheme mit dem Server bei Erzeugung des
Sockets
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
66
2. Netzwerkprogrammierung für mobile Geräte
Transmission Control Protocol
Client-Sockets in Java
Klasse java.net.Socket
Socket versucht bei Erzeugung einen Server (Host/Port) zu kontaktieren:
• Socket(InetAddress address, int port) throws java.net.IOException
Erzeugt einen Client-Socket und versucht eine Verbindung zu der IPAdresse und dem Port aufzubauen.
• Socket(String host, int port) throws java.net.UnknownHostException
Erzeugt einen Client-Socket und versucht eine Verbindung zum Host
und dem Port aufzubauen.
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
67
2. Netzwerkprogrammierung für mobile Geräte
Transmission Control Protocol
• void close() throws IOException
Schließt den Socket.
• boolean isClosed()
Liefert true falls der Socket geschlossen ist.
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
68
2. Netzwerkprogrammierung für mobile Geräte
Transmission Control Protocol
Timeout für Client
• void setSoTimeout(int timeout) throws SocketException
Setzt einen Timeout in Millisekunden für den Eingabestrom des
Sockets. Ein Aufruf von read() blockiert dann höchstens timeout
Millisekunden.
java.net.SocketTimeoutException
Mit timeout == 0 wird der Timeout deaktiviert.
• void getSoTimeout()
Liefert den aktuellen Wert für timeout.
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
69
2. Netzwerkprogrammierung für mobile Geräte
Transmission Control Protocol
I/O mit Client-Sockets
Ein Client-Socket verfügt über einen Eingabe- und einen AusgabeStream:
• InputStream getInputStream() throws IOException
Liefert einen Eingabestrom für den Socket.
• OutputStream getOutputStream() throws IOException
Liefert einen Ausgabestrom für den Socket.
Wird einer der beiden Streams mit der Methode close() geschlossen,
so wird auch der zugehörige Socket geschlossen.
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
70
2. Netzwerkprogrammierung für mobile Geräte
Transmission Control Protocol
Selektives Schließen von Socket-Streams
Mit den folgenden Methoden ist ein selektives Schließen der Streams
möglich:
• void shutdownInput() throws IOException
Setzt den Eingabestrom für den Socket auf EOF.
• void shutdownOutput() throws IOException
Deaktiviert den Ausgabestrom für den Socket.
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
71
2. Netzwerkprogrammierung für mobile Geräte
Transmission Control Protocol
Server-Sockets in Java
Klasse java.net.ServerSocket
• ServerSocket(int port) throws IOException
Erzeugt einen ServerSocket und bindet ihn an den angegebenen
Port des lokalen Rechners.
• void close() throws IOException
Schließt den Server-Socket.
• boolean isClosed()
Liefert true falls der Server-Socket geschlossen ist.
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
72
2. Netzwerkprogrammierung für mobile Geräte
Transmission Control Protocol
• Socket accept() throws IOException
Nimmt einen Verbindungswusch an und erzeugt einen neuen ClientSocket für die Verbindung. Die Kommunikation mit dem Client kann
dann über den Client-Socket abgewickelt werden.
accept() blockiert, bis ein Verbindungswunsch eines Clients vorliegt.
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
73
2. Netzwerkprogrammierung für mobile Geräte
Transmission Control Protocol
Timeout für Server
• void setSoTimeout(int timeout) throws SocketException
Setzt einen Timeout in Millisekunden. Ein Aufruf von accept()
blockiert dann höchstens timeout Millisekunden.
java.net.SocketTimeoutException
Mit timeout == 0 wird der Timeout deaktiviert.
• void getSoTimeout()
Liefert den aktuellen timeout.
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
74
2. Netzwerkprogrammierung für mobile Geräte
Transmission Control Protocol
Backlog
• Die Verbindungswünsche der Clients, für die mittels accept() noch
kein Client-Socket erzeugt wurde, werden in einer Warteschlange,
dem Backlog, verwaltet.
• java.net.ConnectException beim Client, falls Backlog voll.
• Standardgröße (maximale Länge) des Backlogs: 50
• ServerSocket(int port, int backlog) throws IOException
Hiermit kann bei Erzeugung des Sockets die maximale Länge des
Backlogs vorgegeben werden.
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
75
2. Netzwerkprogrammierung für mobile Geräte
Transmission Control Protocol
Gesamtablauf Client-Server-Kommunikation
1. Der Server erzeugt einen ServerSocket, der an einen vordefinierten
Port gebunden ist.
2. Der Server ruft die Methode accept() auf und wartet auf Verbindungswünsche. Der Aufruf von accept() blockiert.
3. Der Client erzeugt einen Socket mit der IP-Adresse (oder Hostnamen) und der Portnummer des Servers.
4. Beim Server wird accept() beendet und liefert als Resultat einen
Socket, der eine Verbindung zum Client darstellt.
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
76
2. Netzwerkprogrammierung für mobile Geräte
Transmission Control Protocol
5. Client und Server erzeugen mit den Methoden getInputStream()
und getOutputStream() Stream-Objekte für die Kommunikation.
6. Nun können Daten mit gewöhnlichen Lese- und Schreiboperation
zwischen den Prozessen ausgetauscht werden.
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
77
2. Netzwerkprogrammierung für mobile Geräte
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
Transmission Control Protocol
78
2. Netzwerkprogrammierung für mobile Geräte
Transmission Control Protocol
Weitere Socket-Methoden
• InetAddress getLocalAddress()
Liefert die lokale IP-Adresse, an die der Socket gebunden ist.
• int getLocalPort()
Liefert die lokale Portnummer, an die der Socket gebunden ist.
• InetAddress getInetAddress()
Liefert die entfernte IP-Adresse, mit der der Socket verbunden ist.
• int getPort()
Liefert die entfernte Portnummer, mit der der Socket verbunden ist.
Mobile Informationssysteme II — Hochschule Bonn-Rhein-Sieg, WS 09/10
79
Herunterladen