23
Vortrag in Netztechnik I Andreas Roth

Sockets – Theorie und Implementierung

Embed Size (px)

Citation preview

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