2015-10-04 247 views
0

我通過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」。 我對此有點困惑。 P.S. 192.168.0.111是我的本地ip,51.74.132.142是我服務器的公網ip,121.71.171.152是我的ISP ip,172.34.10.158是我服務器的私網ip。 想了解更多關於此的知識,所以任何文檔,資源都會有用。

回答

2

客戶端和服務器都落後NAT (Network Address Translation)防火牆。

您列出:

客戶: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

客戶已192.168.0.111您的本地網絡上的IP,並希望同服務器在51.74.132.142端口8080,因此它爲會話分配一個動態端口(端口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 
+0

謝謝安德烈亞斯..現在完全理解我.. –

+0

@Andreas我不認爲NAT是原因。我們可以將所有客戶端服務器放在同一臺計算機上(127.0.0 ....並且仍然具有相同類型的信息佈局。網絡元組與NAT無關。 – Ritesh

+0

@Ritesh,我看不到與我原來的問題是當客戶端和服務器在同一臺機器上時,只有當它們在不同的主機上時纔會發生這種情況 –

-1

這是一個網絡元組hostid:hostport:destip:dest:port:protocol。所有這些信息一起定義了操作系統級別的一個連接。在操作系統級別,它必須知道一個連接的所有這些細節才能成功地將數據從主機路由到目標,並反之亦然。

How many tuples are there in a connection?

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

+0

但如何做到這一點證明不同的端口在服務器和客戶端的netstat的O/P? –

+0

使用示例..許多客戶端嘗試連接到服務器。因此操作系統需要獨特地瞭解每個連接,因此需要額外的信息來定義獨特的連接。所以如果操作系統添加客戶端地址,那麼操作系統可以唯一地區分客戶端。但是現在如果同一個客戶做10個連接會發生什麼。然後,如果我們在操作系統級別添加端口,那麼我們可以在相同的客戶端之間唯一地區分。現在,如果同一客戶端和同一端口使udp連接,那麼您還需要保存協議。所以這就是操作系統級別的每個連接是如何使用這5個值唯一定義的。 – Ritesh

+0

只想知道......爲什麼是-1? – Ritesh

相關問題