Sockets
Zur Navigation springen
Zur Suche springen
Allgemein
- Ein Socket ist ein vom Betriebssystem bereitgestelltes Objekt, das als Kommunikationsendpunkt dient.
- Ein Programm verwendet Sockets, um Daten mit anderen Programmen auszutauschen.
- Das andere Programm kann sich dabei auf demselben Computer (Interprozesskommunikation) befinden
- Oder einem anderen, via Netzwerk erreichbaren Computer befinden.
- Die Kommunikation über Sockets erfolgt in der Regel bidirektional,
- Daten können über das Socket können Daten sowohl empfangen als auch gesendet werden.
Funktionsprinzip
- Sockets bilden eine plattformunabhängige standardisierte Schnittstelle zwischen der Netzwerkprotokoll-Implementierung des Betriebssystems und der eigentlichen Anwendungssoftware.
- Ein Computerprogramm fordert einen Socket vom Betriebssystem an.
- Das Betriebssystem hat die Aufgabe, alle benutzten Sockets sowie die zugehörigen Verbindungsinformationen zu verwalten.
Internet-Sockets
- Internet-Sockets ermöglichen die Kommunikation mittels bestimmter Kommunikationsprotokolle.
- Man unterscheidet zwischen Stream Sockets und Datagram Sockets
- Stream Sockets kommunizieren über einen Zeichen-Datenstrom
- Datagramm Sockets über einzelne Nachrichten.
- In der Netzwerkkommunikation verwenden Stream Sockets meist TCP
- Datagramm Sockets üblicherweise UDP.
- Ein Socket ist die Verbindungsstelle zu einem bestimmten entfernten Programm, repräsentiert durch dessen Adressinformation (z. B. IP-Adresse und Portnummer).
- Dem Socket selbst ist natürlich auch die eigene Adressinformation zugeordnet.
Server
- Ein Server wartet auf Anfragen auf einer oder mehrere Adresse warten
- Wenn der Server eine Anfrage von einem Client erhält, wird praktisch die Verbindung geklont so das der Server weitere Anfragen bedienen kann.
- Unter Unix heißt diese Vorgehensweise Forking.
- Der ursprüngliche Server-Socket bleibt erhalten und wartet weiterhin auf neue Verbindungen.
- Der geklonte Prozess wird nur für die Kommunikation mit diesem einen Client verwendet.
- Er bleibt bestehen, bis die Verbindung zum Client von einer der beiden Seiten beendet wird.
Status
Es gibt nun 2 verschiende Zustände
listening
- Ein Server der auf eingehende Verbindungen wartet.
- Er ist konkret nicht verbunden.
- Dieser stellt nur die grundsätzlich Möglichkeit einer Verbindung bereit
connected
- Eine konkrete Instanz einer Verbindungsanfrage
- Der Server Prozesss wurde geforkt
- Ein konkreter Client wird bedient.
Es gibt 3 Arten von Sockets
- Allgemein
- Unix spezifisch