我已经阅读了WebSockets,我想知道为什么浏览器不能简单地打开简单的TCP连接并像其他任何桌面应用程序一样与服务器通信。为什么通过websockets进行这种通信呢?
答案 0 :(得分:234)
当您在Intranet边界内工作时,通过TCP套接字进行通信更容易,因为您可能可以控制该网络上的计算机并可以打开适合进行TCP连接的端口。
在互联网上,您正在与另一端的其他人的服务器进行通信。他们极不太可能有任何旧套接字打开连接。通常它们只有几个标准的端口,例如HTTP端口80或HTTPS端口443。因此,要与服务器通信,您必须使用其中一个端口进行连接。
鉴于这些是通常使用HTTP的Web服务器的标准端口,因此您必须遵守HTTP协议,否则服务器将不会与您通信。 Web套接字的目的是允许您通过HTTP启动连接,但随后协商使用Web套接字协议(假设服务器能够这样做)以允许更像“TCP套接字”的通信流。
答案 1 :(得分:26)
Web浏览器在Application层运行,而TCP在传输层运行。作为Web应用程序开发人员,通过应用程序层而不是传输层的原始字节通过线路发送消息更容易。
底层WebSockets 是 TCP,它只是为了简单而抽象出来。
答案 2 :(得分:2)
Websocket是一种应用层协议,而TCP是传输层协议。在传输层,我们通常有TCP和UDP协议。来自应用层的任何消息都需要通过传输层传输到其他机器。因此,websocket和tcp彼此之间存在关系,无法进行比较。
答案 3 :(得分:1)
为简单起见,Web套接字通信是通过TCP端口号80(在TLS加密连接的情况下为443)完成的,这对于使用阻止非Web Internet连接的环境是有益的防火墙。
您要使用现有的TCP端口还是打开一个可能被防火墙阻止的新TCP端口?