Linux網路程式設計系列 常見疑惑

2021-06-27 03:32:42 字數 895 閱讀 6650

乙個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...