gpt4 book ai didi

java - 同一连接的客户端和服务器上的不同端口号

转载 作者:行者123 更新时间:2023-12-01 11:06:05 26 4
gpt4 key购买 nike

我通过 websocket 从客户端到服务器建立了连接。我只是检查 netstat o/p 以了解网络级别的详细信息。我发现当我在客户端和服务器上运行 netstat -anpt 时,我得到不同的客户端端口。例如在服务器上,

tcp6 0 0 172.34.10.158:8080 121.71.171.152:28301
ESTABLISHED 13250/java

在客户端,

tcp6 0 0 192.168.0.111:35129 51.74.132.142:8080
ESTABLISHED 8209/java

所以服务器的客户端端口是“28301”,但是当我检查客户端时,它是“35129”。我对此有点困惑。附: 192.168.0.111是我的本地ip,51.74.132.142是我服务器的公共(public)ip,121.71.171.152是我的ISP ip,172.34.10.158是我服务器的私有(private)ip。很高兴了解更多相关信息,因此任何文档、资源都会有用。

最佳答案

客户端和服务端都落后NAT (Network Address Translation)防火墙。

您列出了:

Client: tcp6 0 0   192.168.0.111:35129   51.74.132.142:8080

Server: tcp6 0 0   172.34.10.158:8080   121.71.171.152:28301

您的客户端在本地网络上的 IP 为 192.168.0.111,并且希望与端口 8080 上位于 51.74.132.142 的服务器通信 code>,因此它为 session 分配一个动态端口(端口 35129)。

TCP/IP 数据包通过具有源 NAT 的防火墙离开本地网络,该防火墙将源 IP:端口映射到 121.71.171.152:28301
这是您办公室/家庭的外部 IP。您可以通过http://www.whatsmyip.org/确认。 .

TCP/IP 数据包到达保护服务器网络的防火墙,该防火墙配置了目标 NAT,因此它将目标 IP:端口映射到 172.34.10.158:8080.

服务器收到数据包并建立连接。

然后,防火墙将取消映射以其他方式流动的数据包。防火墙维护状态以记住如何反转映射。为了节省资源,状态有一个超时时间,因此如果服务器真的很慢并且响应时间比超时时间长,即使客户端仍在等待,响应也会丢失。网络管理员控制超时。我见过它们的响应时间低至 5 分钟,因此任何超过 5 分钟的响应时间都不会返回给客户。
寓意:将客户端超时设置为高于防火墙 NAT 超时只会延迟不可避免的事情。

回顾

Network                      Source                Destination
YourPC --lan--> Firewall 192.168.0.111:35129 51.74.132.142:8080
Firewall --web--> Firewall 121.71.171.152:28301 51.74.132.142:8080
Firewall --lan--> Server 121.71.171.152:28301 172.34.10.158:8080

关于java - 同一连接的客户端和服务器上的不同端口号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32934958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com