当我们想使用Javascript通过WebSocket进行通信时,套接字如何将端口从HTTP80更改为另一个端口



假设我有一个服务器XYZ,它在端口50000上侦听TCP客户端,在端口80上侦听HTTP客户端。另一方面,我有一个客户端,它使用WebSocket建立到端口50000的套接字连接,并将使用HTTP端口80进行握手(当然(。

现在,当客户端开始时,它将首先通过HTTP端口80向服务器XYZ发送请求,并且服务器将在端口80上接收其握手请求,并且将发送欢迎响应。因此,在这种情况下,双方都使用端口80(当然(。

现在,当握手完成时,标准文档说,用于握手目的的HTTP请求/响应的同一TCP连接将转换为TCP套接字连接。好吧。

但是,如果整个握手过程和HTTP请求/响应的TCP连接第一次使用端口80,并且相同的TCP连接被转换为TCP套接字连接,并且整个过程是通过端口80完成的,那么同一个TCP连接如何被转换为双方TCP套接字的端口50000?客户端是否在内部初始化另一个TCP连接以更改为端口50000?

那么,有人能告诉我们端口转换是如何在WebSocket中执行和工作的吗?从端口80到双方的不同端口?如何在不同的端口上建立完整的单个套接字连接?同一个TCP连接如何更改/翻转其端口?

TCP套接字连接根本无法更改端口。一旦建立了连接,其端口就会被锁定,并且无法更改。如果您在端口80上有TCP套接字连接,那么在端口50000上有连接的唯一方法是建立一个完全独立的TCP套接字连接。

WebSocket无法连接到端口80,然后再切换到端口50000。然而,从端口80提供给浏览器的HTML页面可以包含客户端脚本,该脚本允许浏览器创建WebSocket对象并将其连接到端口50000。两个TCP连接(HTTP和WebSocket(彼此完全分离(事实上,一旦HTML被提供,HTTP套接字连接甚至不需要保持打开,因为HTTP是一个无状态协议(。

相关内容

最新更新