Vortrag in Netztechnik I
Andreas Roth
 Ein Software-Modul, das den Austausch
von Daten zwischen Applikationen und
Rechnern in einem Netzwerk ermöglicht.
 Austausch von Daten zwischen Prozessen auf
verschiedenen Rechnern.
 Austausch von Daten zwischen Prozessen auf
demselben Rechner
(Interprozesskommunikation).
3
 Sockets können als Endepunkte einer
Netzwerkverbindung verstanden werden.
 Die Kommunikation über Sockets ist
bidirektional (es können also sowohl Daten
empfangen als auch gesendet werden).
 Sockets bilden eine plattformunabhängige,
standardisierte Schnittstelle (Implementierung
des Netzwerkprotokoll Applikation).
4
5
 Winsocks (Windows Socket Library):
Socket API für die Windows-Systeme.
 BSD-Sockets (Berkeley Sockets):
Socket API für Unix und unixartige Systeme .
 Unix Domain Sockets:
Socket API für Interprozesskommunikation.
6
 Stream Sockets:
◦ Kommunikation über Zeichen-Datenstrom.
◦ Verwendung von TCP-Protokoll.
 Datagram Sockets:
◦ Kommunikation über einzelne Nachrichten/Pakete.
◦ Verwendung von UDP-Protokoll.
 Raw Sockets:
◦ Spezielle Sockets, welche die Erstellung von eigenen
TCP- und UDP-Header zulassen.
7
 Stream Sockets:
◦ Zuverlässige, verbindungsorientierte
Kommunikation (Datenübertragung, Remote).
 Datagram Sockets:
◦ Verbindungslose Kommunikation (Elektronische
„Wurfsendungen“).
 Raw Sockets:
◦ Netzwerknahe Applikationen wie Router.
8
Server
„hört“
auf Host
und Port
Client
verbindet
sich gegen
den Server
Server und Client
senden/empfangen
Daten Streams
Server und Client
implementieren ein
Protocol.
10
 Prinzip: Open-Read-Write-Close
 Clientseitig:
◦ Client Socket erstellen.
◦ Client Socket an Server-Adresse binden.
◦ Senden/ Empfangen von Daten.
◦ Socket des Clients herunterfahren.
◦ Verbindung trennen/ Socket schließen.
11
 Serverseitig:
◦ Server Socket erstellen.
◦ Server Socket an einen Port binden.
◦ Auf Anfragen von Clients warten.
◦ Anfrage akzeptieren/ Socket-Paar erstellen.
◦ Bearbeiten der Anfragen des Clients.
◦ Socket des Clients schließen.
12
import java.net.ServerSocket;
import java.net.Socket;
import java.io.DataInputStream;
import java.io.DataOutputStream;
public class MeinServer {
public static void main(String[] args) throws Exception {
// Server Socket wird erstellt und an einen Port gebunden
ServerSocket serverSocket = new ServerSocket(port);
14
// Auf (mehrfache) Anfragen von Clients warten...
while (true) {
// Anfrage akzeptieren/zulassen und NEUES Socket-Paar erstellen
Socket clientSocket = serverSocket.accept();
DataOutputStream outputStream = new DataOutputStream
(clientSocket.getOutputStream());
DataInputStream inputStream = new DataInputStream
(clientSocket.getInputStream());
// Implementierung des Protokolls und Verarbeitung der Daten…
// Client Socket schließen
clientSocket.close();
15
import java.net.Socket;
import java.io.DataInputStream;
import java.io.DataOutputStream;
public class MeinClient {
public static void main(String[] args) throws Exception {
// Client Socket wird erzeugt und an Host und Port gebunden
Socket clientSocket = new Socket(host, port);
// Analog zum Server…
16
17
 Demo…
 http://de.wikipedia.org/wiki/Socket_%28Software%29
[Stand: 14.10.2012].
 http://de.wikipedia.org/wiki/Interprozesskommunikation
[Stand: 14.10.2012].
 http://docs.oracle.com/javase/tutorial/networking/sockets/
index.html [Stand: 14.10.2012].
 Kersken, Sascha (2009): IT-Handbuch für Fachinformatiker –
Der Ausbildungsbegleiter, 4. aktualisierte und erweiterte
Ausgabe, Bonn 2009.
 Menze, Michael (2012): Programmieren 2, Studiengang
Angewandte Informatik an der DHBW Stuttgart (B.Sc.)
2. Semester, Stuttgart 2011.
18
Fragen?
 Ableitung von „listening“ Server zu einem
„connected“ Server-Socket (Wichtig: Es wird
ein NEUER Socket erstellt!).
 Ableitung von „requesting“ Client zu einem
„accepted“ Client-Socket.
 Socket als Endpunkt einer Netzwerkverbindung
Endpunkt = Kombination aus IP und Port-Nr.
20
 Standardisierung der Socket-Programmierung
durch die University of California (Berkeley).
 Verbindung zwischen Client- und Server-
Socket auf bestimmten Port wird auch
„Rendezvous“ genannt.
21
 Alternativen zu Sockets:
◦ Pipes: gepufferter uni- oder bidirektionaler
Datenstrom nach dem FIFO-Prinzip.
◦ Shared Memory: Hier nutzen zwei oder mehrere
Prozesse einen bestimmten Teil des
Hintergrundspeichers (RAM) gemeinsam.
22
 Wildcard-Adresse: ein oder mehrere Teile der
Adresse nicht spezifisch ist (z.B. Port-
Nummer mit spezifisch ungültigen IP).
 Ports: 2 Byte/16 Bit, also 2^16 (0-65535)
◦ System Ports: 0-1023
◦ User Ports: 1024-49151
◦ Dynamic Ports: 49152-65535
23

Sockets – Theorie und Implementierung

  • 1.
    Vortrag in NetztechnikI Andreas Roth
  • 3.
     Ein Software-Modul,das den Austausch von Daten zwischen Applikationen und Rechnern in einem Netzwerk ermöglicht.  Austausch von Daten zwischen Prozessen auf verschiedenen Rechnern.  Austausch von Daten zwischen Prozessen auf demselben Rechner (Interprozesskommunikation). 3
  • 4.
     Sockets könnenals Endepunkte einer Netzwerkverbindung verstanden werden.  Die Kommunikation über Sockets ist bidirektional (es können also sowohl Daten empfangen als auch gesendet werden).  Sockets bilden eine plattformunabhängige, standardisierte Schnittstelle (Implementierung des Netzwerkprotokoll Applikation). 4
  • 5.
  • 6.
     Winsocks (WindowsSocket Library): Socket API für die Windows-Systeme.  BSD-Sockets (Berkeley Sockets): Socket API für Unix und unixartige Systeme .  Unix Domain Sockets: Socket API für Interprozesskommunikation. 6
  • 7.
     Stream Sockets: ◦Kommunikation über Zeichen-Datenstrom. ◦ Verwendung von TCP-Protokoll.  Datagram Sockets: ◦ Kommunikation über einzelne Nachrichten/Pakete. ◦ Verwendung von UDP-Protokoll.  Raw Sockets: ◦ Spezielle Sockets, welche die Erstellung von eigenen TCP- und UDP-Header zulassen. 7
  • 8.
     Stream Sockets: ◦Zuverlässige, verbindungsorientierte Kommunikation (Datenübertragung, Remote).  Datagram Sockets: ◦ Verbindungslose Kommunikation (Elektronische „Wurfsendungen“).  Raw Sockets: ◦ Netzwerknahe Applikationen wie Router. 8
  • 10.
    Server „hört“ auf Host und Port Client verbindet sichgegen den Server Server und Client senden/empfangen Daten Streams Server und Client implementieren ein Protocol. 10
  • 11.
     Prinzip: Open-Read-Write-Close Clientseitig: ◦ Client Socket erstellen. ◦ Client Socket an Server-Adresse binden. ◦ Senden/ Empfangen von Daten. ◦ Socket des Clients herunterfahren. ◦ Verbindung trennen/ Socket schließen. 11
  • 12.
     Serverseitig: ◦ ServerSocket erstellen. ◦ Server Socket an einen Port binden. ◦ Auf Anfragen von Clients warten. ◦ Anfrage akzeptieren/ Socket-Paar erstellen. ◦ Bearbeiten der Anfragen des Clients. ◦ Socket des Clients schließen. 12
  • 14.
    import java.net.ServerSocket; import java.net.Socket; importjava.io.DataInputStream; import java.io.DataOutputStream; public class MeinServer { public static void main(String[] args) throws Exception { // Server Socket wird erstellt und an einen Port gebunden ServerSocket serverSocket = new ServerSocket(port); 14
  • 15.
    // Auf (mehrfache)Anfragen von Clients warten... while (true) { // Anfrage akzeptieren/zulassen und NEUES Socket-Paar erstellen Socket clientSocket = serverSocket.accept(); DataOutputStream outputStream = new DataOutputStream (clientSocket.getOutputStream()); DataInputStream inputStream = new DataInputStream (clientSocket.getInputStream()); // Implementierung des Protokolls und Verarbeitung der Daten… // Client Socket schließen clientSocket.close(); 15
  • 16.
    import java.net.Socket; import java.io.DataInputStream; importjava.io.DataOutputStream; public class MeinClient { public static void main(String[] args) throws Exception { // Client Socket wird erzeugt und an Host und Port gebunden Socket clientSocket = new Socket(host, port); // Analog zum Server… 16
  • 17.
  • 18.
     http://de.wikipedia.org/wiki/Socket_%28Software%29 [Stand: 14.10.2012]. http://de.wikipedia.org/wiki/Interprozesskommunikation [Stand: 14.10.2012].  http://docs.oracle.com/javase/tutorial/networking/sockets/ index.html [Stand: 14.10.2012].  Kersken, Sascha (2009): IT-Handbuch für Fachinformatiker – Der Ausbildungsbegleiter, 4. aktualisierte und erweiterte Ausgabe, Bonn 2009.  Menze, Michael (2012): Programmieren 2, Studiengang Angewandte Informatik an der DHBW Stuttgart (B.Sc.) 2. Semester, Stuttgart 2011. 18
  • 19.
  • 20.
     Ableitung von„listening“ Server zu einem „connected“ Server-Socket (Wichtig: Es wird ein NEUER Socket erstellt!).  Ableitung von „requesting“ Client zu einem „accepted“ Client-Socket.  Socket als Endpunkt einer Netzwerkverbindung Endpunkt = Kombination aus IP und Port-Nr. 20
  • 21.
     Standardisierung derSocket-Programmierung durch die University of California (Berkeley).  Verbindung zwischen Client- und Server- Socket auf bestimmten Port wird auch „Rendezvous“ genannt. 21
  • 22.
     Alternativen zuSockets: ◦ Pipes: gepufferter uni- oder bidirektionaler Datenstrom nach dem FIFO-Prinzip. ◦ Shared Memory: Hier nutzen zwei oder mehrere Prozesse einen bestimmten Teil des Hintergrundspeichers (RAM) gemeinsam. 22
  • 23.
     Wildcard-Adresse: einoder mehrere Teile der Adresse nicht spezifisch ist (z.B. Port- Nummer mit spezifisch ungültigen IP).  Ports: 2 Byte/16 Bit, also 2^16 (0-65535) ◦ System Ports: 0-1023 ◦ User Ports: 1024-49151 ◦ Dynamic Ports: 49152-65535 23