乙個tcp連線有乙個四元組唯一標識
client端建立連線請求時,通常讓系統分配乙個空閒的本地埠,該埠是獨佔不共享的,埠型別是unsigned short,共65535個可用,所以client最大連線數為65535個。
server端固定繫結乙個埠來等待client的連線請求,四元組中rempote_ip/remote_port是可變不受控制的,共2^32 * 2^16組合。
但並不代表乙個server可以支援那麼多連線,因為有系統上的限制。
每個socket都占用乙個檔案描述符,而乙個程序能開啟的描述符數目是有限制的,而且整個系統允許開啟的檔案數也是有限制的。另外tcp連線數也受伺服器資源限制(記憶體/頻寬)。
單程序檔案數
ulimit -n//檢視允許開啟的最大檔案數
//修改乙個程序檔案數限制
修改/etc/security/limits.conf
soft nofile ***
hard nofile ***
全域性(系統)檔案數
cat /proc/sys/fs/file-nr //顯示已經分配的檔案handle數、已分配但未使用的handle數、允許的最大handle數
修改/etc/sysctl.conf
fs.file-max=***
net.ipv4.ip_conntrack_max=***
net.ipv4.netfilter.ip_conntrack_max=***
考慮到檔案描述符、系統資源、1024以下埠不能使用的限制,server端單機tcp連線數可以超過10w。
網路程式設計系列索引 Linux 網路程式設計索引
linux網路程式設計 tcp連線的分組交換與狀態轉移 linux網路程式設計 常見 socket 位址結構 linux網路程式設計 基本 tcp 套接字程式設計 linux網路程式設計 使用eclipse除錯libevent和開發libevent應用程式 linux網路程式設計 高階i o函式 l...
linux網路程式設計系列之connect函式詳解
在講解套接字程式設計函式之前,有必要對socket程式設計的兩個不可或缺的結構體進行說明。includestruct sockaddr 由於歷史的原因,套接字函式中 如connect,bind等 使用的引數型別大多是sockaddr型別的。而如今進行套接字程式設計的時候大都使用sockaddr in...
Linux網路程式設計系列 套介面選項控制
獲取和設定套介面選項的方法有 getsockopt setsockopt fcntl ioctl getsockopt setsockopt這兩個函式僅用於套介面 socket 的設定,另外兩個函式可以對任意的檔案描述符進行設定。includeint getsockopt int sockfd,in...