web-dev-qa-db-de.com

Was ist der grundlegende Unterschied zwischen WebSockets und reinem TCP?

Ich habe über WebSockets gelesen und frage mich, warum der Browser nicht einfach eine triviale TCP - Verbindung öffnen und mit dem Server wie mit jeder anderen Desktopanwendung kommunizieren konnte. Und warum ist diese Kommunikation über Websockets möglich?

141
xap4o

Es ist einfacher, über TCP - Sockets zu kommunizieren, wenn Sie innerhalb einer Intranet-Grenze arbeiten, da Sie wahrscheinlich die Maschinen in diesem Netzwerk steuern können und Ports öffnen können, die für die Herstellung von TCP - Verbindungen geeignet sind.

Über das Internet kommunizieren Sie mit dem Server eines anderen Benutzers am anderen Ende. Sie sind äußerst Es ist unwahrscheinlich, dass eine alte Steckdose für Verbindungen geöffnet ist. Normalerweise gibt es nur wenige Standard-Ports, z. B. Port 80 für HTTP oder 443 für HTTPS. Um mit dem Server zu kommunizieren, müssen Sie die Verbindung über einen dieser Ports herstellen.

Da dies Standardports für Webserver sind, die im Allgemeinen HTTP sprechen, müssen Sie das HTTP-Protokoll einhalten, andernfalls spricht der Server nicht mit Ihnen. Der Zweck von Web-Sockets besteht darin, dass Sie eine Verbindung über HTTP initiieren können, dann jedoch die Verwendung des Web-Sockets-Protokolls aushandeln (vorausgesetzt der Server ist dazu in der Lage), um einen mehr "TCP-Socket" -ähnlichen Kommunikationsstrom zuzulassen.

223
Ash

Webbrowser arbeiten auf der Anwendungsebene, während TCP auf der Transportschicht ausgeführt wird. Als Entwickler von Webanwendungen ist es einfacher, Nachrichten über die Leitung als über die Anwendungsebene zu senden, anstatt rohe Bytes auf der Transportschicht.

Das zugrunde liegende WebSockets ist TCP, das der Einfachheit halber nur abstrahiert wird.

25
wulfgarpro

Zur Vereinfachung erfolgt die Websocket-Kommunikation über TCP Portnummer 80 (oder 443 im Fall von TLS-verschlüsselten Verbindungen). Dies ist von Vorteil für Umgebungen, in denen Internetverbindungen, die nicht über das Internet hergestellt werden, blockiert werden Firewall .

Möchten Sie den vorhandenen TCPPort verwenden oder einen neuen TCPPort öffnen, der möglicherweise von der Firewall blockiert wird?

2
Gearon

Websocket ist ein Anwendungsschichtprotokoll, während TCP das Transportschichtprotokoll ist. Auf der Transportschicht haben wir normalerweise das Protokoll TCP und das UDP-Protokoll. Jede Nachricht von der Anwendungsebene muss durch die Transportschicht geleitet werden, um an eine andere Maschine übertragen zu werden. Daher haben websocket und tcp eine Beziehung zueinander und können nicht vergleichbar sein.

0
Minh Trần