Sockets 带有临时端口的WebSocket

Sockets 带有临时端口的WebSocket,sockets,websocket,socket.io,Sockets,Websocket,Socket.io,我正在编写一个库,它将使用WebSocket在不同进程(以及以不同语言运行的进程,甚至可能在不同机器上运行的进程)之间进行通信。我希望避免与可能已经在计算机上运行的现有服务器发生端口冲突。我了解了一些关于临时端口的知识,我想我可以将临时端口与WebSocket一起使用,以避免端口冲突 然而,我很难找到关于这是否可能的信息。为了让这一切变得有意义,我需要一个用Python、Go、Java和Node.js实现的Websocket,它可以处理临时端口。我唯一熟悉的Websocket实现是JavaScr

我正在编写一个库,它将使用WebSocket在不同进程(以及以不同语言运行的进程,甚至可能在不同机器上运行的进程)之间进行通信。我希望避免与可能已经在计算机上运行的现有服务器发生端口冲突。我了解了一些关于临时端口的知识,我想我可以将临时端口与WebSocket一起使用,以避免端口冲突

然而,我很难找到关于这是否可能的信息。为了让这一切变得有意义,我需要一个用Python、Go、Java和Node.js实现的Websocket,它可以处理临时端口。我唯一熟悉的Websocket实现是JavaScript世界中的Socket.io

我的问题是:

  • 有人知道是否有可能将临时端口用于 socket.io和websockets是否通用
  • 您能否提供一个代码示例或链接来说明如何实现这一点

  • webSocket连接基于TCP,因此连接使用端口的方式与TCP类似。因此,您有一方启动连接(客户端),另一方监听传入连接(服务器)。在TCP中,在两个IP地址/端口对之间建立连接。因此,您有一个IP1/port1连接到IP2/port2

    客户端可以使用它想要的任何端口作为它自己的端口,但它必须连接到服务器上的特定端口,其中有一个服务器进程正在侦听传入的连接。您可以选择服务器尚未使用的任何端口进行侦听(尽管有建议使用的端口范围),但客户端必须事先知道该端口,以便客户端可以在该端口上进行连接

    因此,客户端在服务器正在侦听的已知端口上连接到服务器IP。客户端将来自某个特定客户端端口上的客户端IP。客户端端口通常是由底层TCP堆栈自动分配的临时端口。此临时端口在初始连接中与服务器通信,并用于将返回到客户端的网络流量定向到客户端上的相应套接字

    服务器通常不会使用临时端口,也不能使用动态分配的端口,因为这样客户端就不知道要连接哪个端口

    因此,通常的做法是,设置服务器的人员了解服务器上正在运行的进程以及使用的端口,然后在服务器侦听范围内选择一个不会冲突的端口,然后与客户端通信,通过客户端配置文件或仅将该端口构建到客户端

    如果您确实想要一个动态侦听端口,那么可以使用一个众所周知的服务器进程和端口(例如端口80上的web服务器),然后创建一个http请求,其唯一目的是询问服务器传入webSocket通信使用的端口。但是,这仍然需要一个众所周知的端口号,因此它可能不会真正保存任何内容,除非计算机上没有使用端口80,并且您不想将其用于webSocket。或者,如果您真的想对此发疯(通常是过度使用),您可以使用一种资源发现协议,允许设备发现如何相互连接

    实际上,大多数人只选择2000-9999范围内的四位数端口号,该端口号与同一机箱上的任何其他服务器都不冲突

    IANA说,临时端口的范围在49152到65535之间,尽管一些Linux内核使用32768到61000

    1024以下的端口需要超级用户权限,非标准服务器通常避免使用


    有一长串的服务器类型和它们通常使用的端口号,尽管您不太可能在自己的服务器上找到许多这样的进程。

    webSocket连接基于TCP,因此连接使用端口的方式与TCP类似。因此,您有一方启动连接(客户端),另一方监听传入连接(服务器)。在TCP中,在两个IP地址/端口对之间建立连接。因此,您有一个IP1/port1连接到IP2/port2

    客户端可以使用它想要的任何端口作为它自己的端口,但它必须连接到服务器上的特定端口,其中有一个服务器进程正在侦听传入的连接。您可以选择服务器尚未使用的任何端口进行侦听(尽管有建议使用的端口范围),但客户端必须事先知道该端口,以便客户端可以在该端口上进行连接

    因此,客户端在服务器正在侦听的已知端口上连接到服务器IP。客户端将来自某个特定客户端端口上的客户端IP。客户端端口通常是由底层TCP堆栈自动分配的临时端口。此临时端口在初始连接中与服务器通信,并用于将返回到客户端的网络流量定向到客户端上的相应套接字

    服务器通常不会使用临时端口,也不能使用动态分配的端口,因为这样客户端就不知道要连接哪个端口

    因此,通常的做法是,设置服务器的人员了解服务器上正在运行的进程以及使用的端口,然后在服务器侦听范围内选择一个不会冲突的端口,然后与客户端通信,通过客户端配置文件或仅将该端口构建到客户端

    如果您真的想要一个动态侦听端口,您可以使用一个众所周知的服务器进程和端口(例如端口80上的web服务器),然后创建一个http请求,其唯一目的是请求