查看tcp連接數(shù)量 怎么限制某個程序的TCP連接數(shù)?
聽 backlog參數(shù)指定已在三次握手中完成并達到已建立狀態(tài)但正在等待接受的隊列的容量。當(dāng)此容量超過上限時,服務(wù)器將不會處理客戶端的三次握手。這個隊列的容量當(dāng)然不是樓主說的并發(fā)連接數(shù)。但是李森 下一個
聽 backlog參數(shù)指定已在三次握手中完成并達到已建立狀態(tài)但正在等待接受的隊列的容量。當(dāng)此容量超過上限時,服務(wù)器將不會處理客戶端的三次握手。這個隊列的容量當(dāng)然不是樓主說的并發(fā)連接數(shù)。
但是李森 下一個節(jié)目被接受了。如果您想要的是當(dāng)tcp并發(fā)連接數(shù)超過上限時,服務(wù)器不再處理三次握手,那么只有兩種方法:
1.關(guān)閉套接字。
2.自己修改tcp協(xié)議棧的實現(xiàn)。當(dāng)然這個比較麻煩。
使用iptables防火墻來限制tcp連接,
如下所示,將用戶的tcp連接數(shù)限制為50
iptables -I輸入-p tcp -m連接限制-連接限制-高于50 -j拒絕
1、慢啟動和擁塞避免
在窗口擁塞控制的基礎(chǔ)上,在發(fā)送端維護一個擁塞窗口(cwnd ),其大小等于發(fā)送窗口,通過超時來判斷網(wǎng)絡(luò)擁塞。慢啟動的思想是發(fā)送方首先發(fā)送一個字節(jié),收到接收方的確認(rèn)后,發(fā)送的字節(jié)數(shù)翻倍(即按指數(shù)增長速度),由小到大逐漸增加cwnd,直到cwnd達到慢啟動閾值(ssthresh),停止慢啟動算法,使用擁塞避免算法。擁塞避免算法的思想是增長率變?yōu)榫€性,即發(fā)送者 s cwnd每往返一次RTT就增加1,所以綜上所述,
當(dāng)cwnd lt ssthresh時,使用慢啟動算法;
cwnd ssthresh時,可以使用慢啟動算法或者擁塞算法;
cwnd gt ssthresh時,使用擁塞算法;
2.快速重傳和快速恢復(fù)
通過以上兩種算法,可以提高網(wǎng)絡(luò)傳輸速率,直到超時發(fā)生。此時,有必要將cwnd重新調(diào)整為1字節(jié),并使用慢啟動算法。同時,需要將慢啟動閾值ssthresh調(diào)整為cwnd(超時點)的一半,繼續(xù)執(zhí)行慢啟動和擁塞避免算法。如果收到3-ACK(發(fā)送方一連接就收到同一個報文段的三次重復(fù)確認(rèn)),可能是沒有擁塞,但是報文丟失了,所以發(fā)送方不執(zhí)行慢啟動算法,直接使用快速重傳算法立即發(fā)送丟失的報文段。同時實現(xiàn)快速恢復(fù)算法,此時將閾值(ssthresh)調(diào)整為cwnd的一半,實現(xiàn)擁塞避免算法。