WebSockets和纯TCP之间的根本区别是什么?

我已经阅读了关于WebSocket的内容 ,我想知道为什么浏览器不能简单地打开普通的TCP连接,并像其他桌面应用程序一样与服务器通信。 为什么这个通信可以通过websockets?

当您在Intranet边界内工作时,通过TCP套接字进行通信更容易,因为您可能控制该networking上的计算机,并可以打开适合build立TCP连接的端口。

在互联网上,您正在与另一端的其他人的服务器通信。 他们是不太可能有任何旧的套接字打开连接。 通常他们只有一些标准的端口,例如HTTP端口80或HTTPS端口443。 所以,要与服务器进行通信,您必须使用其中一个端口进行连接。

由于这些是一般说HTTP的Web服务器的标准端口,因此您必须遵守HTTP协议,否则服务器将不会与您通话。 networking套接字的目的是允许你通过HTTP发起连接,然后协商使用networking套接字协议(假设服务器能够这样做),以允许更多的“TCP套接字”式的通信stream。

Web浏览器在应用层运行,而TCP在传输层运行。 作为一个Web应用程序开发人员,通过应用程序层而不是传输层上的原始字节来传送消息更容易。

底层的WebSockets是TCP,为简单起见,它被抽象出来。