TCP 侦听服务器在 9870 端口。是否可以配置客户端端口?
TCP Listening server in 9870 port. Is it possible to configure the clients port?
当我们打开一个TCP监听时,我们使用一个固定的端口,比如“9870”。
但是连接到此侦听的客户端使用不同的端口,例如“1024、1025”或其他端口。我不知道这个端口的名称是什么,"client port"、"dynamic port" 或 "ephemeral port"...但我需要知道是否可以更改此客户端端口。
因为和第二张图一样,它显示错误"Port numbers reused",我认为这与此端口配置有关。
我想如果我能配置这些端口,我网络上的设备连接就会稳定。
TL;TR: 通常不需要配置客户端源端口,绝对不能在服务端设置客户端源端口。
客户端可以像服务器一样绑定到一个地址+端口,然后这个端口被用作连接的源端口。但通常不会这样做,而是不会专门绑定套接字,系统会自动分配一个空闲的源端口。客户端源端口只能由客户端自己设置,服务端不能更改。
通常客户端不可能重复使用端口号,因为 OS 不会让客户端这样做。但是如果客户端崩溃,您看到的情况就会发生。重新启动后,客户端不知道在重新启动之前建立(并且从未关闭)的任何连接,因此它将愉快地再次使用相同的源端口。在这种情况下,它从服务器获取 RST,因为新数据与旧连接不匹配。
如果客户端连接到某个执行 NAT 的路由器并且路由器崩溃,也会发生这种情况。重新启动后路由器不知道任何以前的连接,因此将创建可能与旧连接冲突的新转换。
当我们打开一个TCP监听时,我们使用一个固定的端口,比如“9870”。 但是连接到此侦听的客户端使用不同的端口,例如“1024、1025”或其他端口。我不知道这个端口的名称是什么,"client port"、"dynamic port" 或 "ephemeral port"...但我需要知道是否可以更改此客户端端口。 因为和第二张图一样,它显示错误"Port numbers reused",我认为这与此端口配置有关。
我想如果我能配置这些端口,我网络上的设备连接就会稳定。
TL;TR: 通常不需要配置客户端源端口,绝对不能在服务端设置客户端源端口。
客户端可以像服务器一样绑定到一个地址+端口,然后这个端口被用作连接的源端口。但通常不会这样做,而是不会专门绑定套接字,系统会自动分配一个空闲的源端口。客户端源端口只能由客户端自己设置,服务端不能更改。
通常客户端不可能重复使用端口号,因为 OS 不会让客户端这样做。但是如果客户端崩溃,您看到的情况就会发生。重新启动后,客户端不知道在重新启动之前建立(并且从未关闭)的任何连接,因此它将愉快地再次使用相同的源端口。在这种情况下,它从服务器获取 RST,因为新数据与旧连接不匹配。
如果客户端连接到某个执行 NAT 的路由器并且路由器崩溃,也会发生这种情况。重新启动后路由器不知道任何以前的连接,因此将创建可能与旧连接冲突的新转换。