服務(wù)器第一次收到客戶端的 SYN 之后,就會(huì)處于 SYN_RCVD 狀態(tài),此時(shí)雙方還沒有完全建立其連接,服務(wù)器會(huì)把此種狀態(tài)下請(qǐng)求連接放在一個(gè)隊(duì)列里,我們把這種隊(duì)列稱之為半連接隊(duì)列。
當(dāng)然還有一個(gè)全連接隊(duì)列,就是已經(jīng)完成三次握手,建立起連接的就會(huì)放在全連接隊(duì)列中。
如果隊(duì)列滿了就有可能會(huì)出現(xiàn)丟包現(xiàn)象。
這里在補(bǔ)充一點(diǎn)關(guān)于SYN-ACK 重傳次數(shù)的問題:
服務(wù)器發(fā)送完SYN-ACK包,如果未收到客戶確認(rèn)包,服務(wù)器進(jìn)行首次重傳,等待一段時(shí)間仍未收到客戶確認(rèn)包,進(jìn)行第二次重傳。如果重傳次數(shù)超過系統(tǒng)規(guī)定的最大重傳次數(shù),系統(tǒng)將該連接信息從半連接隊(duì)列中刪除。
注意,每次重傳等待的時(shí)間不一定相同,一般會(huì)是指數(shù)增長(zhǎng),例如間隔時(shí)間為 1s,2s,4s,8s…