2016-05-12 255 views
1

當我們打開一個TCP偵聽時,我們使用一個固定的端口,如「9870」。 但連接到此偵聽的客戶端使用不同的端口,如「1024,1025」或其他。我不知道這個端口的名稱是什麼,「客戶端口」,「動態端口」或「短暫端口」......但我需要知道是否可以更改此客戶端端口。 因爲,就像在第二個圖像中一樣,它顯示錯誤「端口號重用」,我認爲這與此端口配置有關。9870端口的TCP偵聽服務器。是否可以配置客戶端端口?

我想如果我可以配置這些端口,我的網絡上的設備連接就會穩定下來。

netstat

WireShark error

回答

2

TL; TR:通常沒有必要配置客戶端源端口,你絕對不能設置客戶端源端口的服務器。

客戶端可以以服務器可以執行的相同方式綁定到地址+端口,然後將此端口用作連接的源端口。但通常情況下,這並沒有完成,而是套接字沒有被特別綁定,系統會自動分配一個空閒的源端口。客戶端源端口只能由客戶端自己設置,不能被服務器更改。

通常情況下,由於操作系統不會讓客戶端執行此操作,所以端口號不可能被客戶端重用。但是,如果客戶端崩潰,你會發現可能發生的情況。重新啓動後,客戶端在重新啓動之前並不知道任何已建立(並且從未關閉)的連接,因此它會再次愉快地使用相同的源端口。在這種情況下,它會從服務器獲取RST,因爲新數據與舊連接不匹配。

這也可能發生,如果客戶端連接到一些路由器做NAT和路由器崩潰。重新啓動後,路由器不知道任何以前的連接,因此會創建新的翻譯,這可能會與舊連接衝突。

+0

在這個解決方案中,我有很多關於斷開連接的問題,但我認爲它與另一件事有關。 (https://www.dropbox.com/s/mnkbbb2gogpbczb/Capturar.JPG?dl=0) –

+0

@BrunoYuzo:我不知道你想告訴我這張照片。雖然有人說一張照片勝過千言萬語,但我會傾向於用許多實際描述這個問題的詞語。 –

+0

對不起,信息很差,在這張圖片中有一個由端口9870的「HostAcesso.exe」打開的TCP監聽。而且這個監聽中連接的設備頻繁地打開和關閉連接。我雖然問題與客戶端口有關,但通過您的解釋,可能是另一回事。 –