socket_listen里面第二個參數backlog的用處


最近在寫一個socket程序。發現網上對於socket_listen里面的第二個參數的作用解釋的都是不是很清楚,所有就將自己的一些理解寫出來,讓大家參考下。

首先要明白三次握手的。當然能點進來的應該都知道什么是三次握手,這里就不廢話了。

當有多個客戶端一起請求的時候,服務端不可能來多少就處理多少,這樣如果並發太多,就會因為性能的因素發生擁塞,然后造成雪崩。所有就搞了一個隊列,先將請求放在隊列里面,一個個來。socket_listen里面的第二個參數backlog就是設置這個隊列的長度。如果將隊列長度設置成10,那么如果有20個請求一起過來,服務端就會先放10個請求進入這個隊列,因為長度只有10。然后其他的就直接拒絕。tcp協議這時候不會發送rst給客戶端,這樣的話客戶端就會重新發送SYN,以便能進入這個隊列。

如果三次握手完成了,就會將完成三次握手的請求取出來,放入另一個隊列中,這樣隊列就空出一個位置,其他重發SYN的請求就可以進入隊列中。

不過現在這個參數沒什么用了,因為SYN Cookie。有機會給大家講下SYN Cookie。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM