16.02.2017
Sockets werden für die Netzwerkprogrammierung verwendet, genauso wie REST oder SOAP Services. Man will also, dass zwei Rechner miteinander sprechen können.
Wann sollte man aber Sockets nehmen und wann REST Services?
Das Protokoll macht den Unterschied
Im Informatikstudium durften wir in einem Fach einen eigenen Chat in Java programmieren. Dazu haben wir Sockets verwendet. Man hat also auf zwei Rechnern je einen Chat Client gestartet, die miteinander reden sollten. Nun war aber noch die Frage, wie die Daten ausgetauscht werden müssen? Eine Nachricht erhält ja mindestens ein Datum, den Chatnamen und die Nachricht.
Für die Definition dieser Nachricht mussten wir ein Protokoll erstellen. Ein Protokoll, welches sagt: „An erster Stelle kommt das Datum, dann der Chatname“ und so weiter. Dieses Protokoll oder Nachrichtenformat konnten wir dann beliebig zwischen uns Studenten austauschen. Sobald mein Kollege mein Protokoll hatte, konnte er seine Implementierung des Chats mit diesem Protokoll versehen und fortan wusste er, wie ich Nachrichten an ihn senden würde.
REST und HTTP und SOAP
Genauso muss wohl auch die Entwicklung der bekannten Protokolle gestartet haben. Irgendwann denkt man nämlich „ja gut, mein Kollege und ich können nun Nachrichten austauschen, aber was ist, wenn ich etwa einen Dienst von Google aufrufen will? Dann muss ich denen klar machen, wie mein Protokoll aussieht?“
Genau dafür wurden Protokolle standardisiert und sind heute im Einsatz. Das HTTP Protokoll für den Austausch über das Internet. REST Services für den Zugriff auf Ressourcen und SOAP Webservices für explizite Dienstleistungen.
Wie sieht das in der TCP/IP Architektur aus?
Die TCP/IP Architektur ist ein Ausschnitt vom ISO/OSI-Modell und hat vier Schichten:
1. Die Schnittstellensicht ist quasi ganz unten und steht für die physische Verbindung vom Rechner zum Netz.
2. Die nächste Schicht ist die Internetschicht, die zum Aufbau und Betreiben einer Kommunikation zwischen Rechnen in einem Netzwerk dient. Dort ist auch das Internet Protokoll (IP) zuhause.
3. Die dritte Schicht ist die Transportschicht, welche den Programmen auf einem Rechner Transportdienste zur Verfügung stellt. Hier kommt entweder TCP oder UDP zum Einsatz. Auf dieser Ebene finden auch Sockets statt.
4. Die oberste Schicht ist die Anwendungsschicht. Hier geht es um die konkreten Anwendungen auf einem Rechner. Diese Schicht enthält unter anderem die Protokolle HTTP oder FTP. REST verwendet für die Übertragung das HTTP oder HTTPS Protokoll auf dieser Schicht. Bei SOAP können zum Senden von Nachrichten beliebige Transportprotokolle verwendet werden, etwa FTP, SMTP, HTTP oder auch JMS. Meistens wird aber auch hier das HTTP oder HTTPS Protokoll verwendet.
Und was ist mit Websockets?
Websocket ist ebenfalls ein Protokoll für die Übertragung über das Netz – Im Gegensatz zu Sockets liegt dieses aber auf der Anwendungsschicht, nicht auf der Transportschicht. Das Thema Websockets wäre aber wohl genug Stoff für einen eigenen Blogeintrag.