理論上兩台主機可以建立多少tcp連線

2021-09-29 02:49:55 字數 936 閱讀 9270

如何標識乙個tcp連線

在確定最大連線數之前,先來看看系統如何標識乙個tcp連線。系統用乙個4四元組來唯一標識乙個tcp連線:。

client最大tcp連線數

client每次發起tcp連線請求時,除非繫結埠,通常會讓系統選取乙個空閒的本地埠(local port),該埠是獨佔的,不能和其他tcp連線共享。tcp埠的資料型別是unsigned short,因此本地埠個數最大只有65536,埠0有特殊含義,不能使用,這樣可用埠最多只有65535,所以在全部作為client端的情況下,最大tcp連線數為65535,這些連線可以連到不同的server ip。

server最大tcp連線數

server通常固定在某個本地埠上監聽,等待client的連線請求。不考慮位址重用(unix的so_reuseaddr選項)的情況下,即使server端有多個ip,本地監聽埠也是獨佔的,因此server端tcp連線4元組中只有remote ip(也就是client ip)和remote port(客戶端port)是可變的,因此最大tcp連線為客戶端ip數×客戶端port數,對ipv4,不考慮ip位址分類等因素,最大tcp連線數約為2的32次方(ip數)×2的16次方(port數),也就是server端單機最大tcp連線數約為2的48次方。

實際的tcp連線數

上面給出的是理論上的單機最大連線數,在實際環境中,受到機器資源、作業系統等的限制,特別是sever端,其最大併發tcp連線數遠不能達到理論上限。在unix/linux下限制連線數的主要因素是記憶體和允許的檔案描述符個數(每個tcp連線都要占用一定記憶體,每個socket就是乙個檔案描述符),另外1024以下的埠通常為保留埠。

對server端,通過增加記憶體、修改最大檔案描述符個數等引數,單機最大併發tcp連線數超過10萬 是沒問題的,國外  urban airship 公司在產品環境中已做到 50 萬併發 。在實際應用中,對大規模網路應用,還需要考慮c10k 問題。

Linux兩台主機之間建立信任

很多時候,我們需要在兩台linux unix主機之間拷貝檔案 夾 但需要手動輸入密碼 例如備份服務端 sysadmin 資料庫檔案到客戶端 yanggang 提示需要輸入密碼!sysadmin host ssh scp home sysadmin top800 top800 database.sql...

Linux兩台主機之間建立信任

很多時候,我們需要在兩台linux unix主機之間拷貝檔案 夾 但需要手動輸入密碼 例如備份服務端 sysadmin 資料庫檔案到客戶端 yanggang 提示需要輸入密碼!sysadmin host ssh scp home sysadmin top800 top800 database.sql...

兩台linux伺服器上建立ip隧道

目錄 伺服器server的位址192.168.18.251,伺服器client的位址192.168.18.252。建立隧道 在伺服器server上執行以下命令 ip tunnel add ethn mode ipip local 192.168.18.251 remote 192.168.18.25...