簡體   English   中英

客戶端和服務器上相同連接的端口號不同

[英]Different port number on client and server for same connection

我通過websocket從客戶端到服務器建立了連接。 我只是檢查netstat o / p以了解網絡級別的詳細信息。 我發現,當我同時在客戶端和服務器上運行netstat -anpt時,我得到了不同的客戶端端口。 例如,在服務器上,

tcp6 0 0 172.34.10.158:8080 121.71.171.152:28301
成立於13250 / java

在客戶端上

tcp6 0 0 192.168.0.111:35129 51.74.132.142:8080
成立8209 / java

因此,服務器的客戶端端口為“ 28301”,但是當我檢查客戶端時,其為“ 35129”。 我對此感到困惑。 PS 192.168.0.111是我的本地ip,51.74.132.142是我的服務器的公共ip,121.71.171.152是我的ISP ip,172.34.10.158是我的服務器的私有ip。 希望能對此有所了解,所以任何文檔,資源都將非常有用。

客戶端和服務器都位於NAT(網絡地址轉換)防火牆之后。

您列出了:

客戶端:tcp6 0 0 192.168.0.111:35129 51.74.132.142:8080

服務器:tcp6 0 0 172.34.10.158:8080 121.71.171.152:28301

您的客戶端在本地網絡上的IP地址為192.168.0.111 ,並希望與端口8080上位於51.74.132.142的服務器進行51.74.132.142 ,因此它為會話分配了動態端口(端口35129 )。

在TCP / IP數據包通過與源NAT,它們的源IP映射防火牆離開本地網絡:港121.71.171.15228301
那是您辦公室/家庭的外部IP。 您可以在http://www.whatsmyip.org/確認。

在TCP / IP數據包到達防火牆保護的服務器網絡,其配置與目的地NAT,所以它映射目標IP:端口到172.34.10.1588080

服務器接收到數據包並建立連接。

然后,以其他方式流動的數據包將被防火牆取消映射。 防火牆保持狀態以記住如何反轉映射。 為了節省資源,狀態有一個超時時間,因此,如果服務器確實很慢並且響應時間比超時時間長,即使客戶端仍在等待,響應也會丟失。 網絡管理員控制超時。 我看到它們只有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

這是一個網絡元組hostip:hostport:destip:dest:port:protocol。 所有這5個信息一起在OS級別定義了一個連接。 在OS級別上,它必須知道一個連接的所有這些詳細信息,才能成功將數據從主機路由到dest,反之亦然。

一個連接中有多少個元組?

https://zh.wikipedia.org/wiki/Network_socket#Socket_pairs

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM