在 TCP/IP 協(xié)議中,TCP 協(xié)議提供可靠的連接服務(wù),采用三次握手建立一個(gè)連接。
第一次握手:建立連接時(shí),客戶端發(fā)送 syn 包(syn=j)到服務(wù)器,并進(jìn)入SYN_SEND 狀態(tài),等待服務(wù)器確認(rèn);
第二次握手:服務(wù)器收到 syn 包,必須確認(rèn)客戶的 SYN(ack=j+1),同時(shí)自己也發(fā)送一個(gè) SYN 包(syn=k),即 SYN+ACK 包,此時(shí)服務(wù)器進(jìn)入 SYN_RECV 狀態(tài);
第三次握手:客戶端收到服務(wù)器的 SYN+ACK 包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入 ESTABLISHED 狀態(tài),完成三次握手。
完成三次握手,客戶端與服務(wù)器開始傳送數(shù)據(jù),在上述過程中,還有一些重要的概念:
未連接隊(duì)列:在三次握手協(xié)議中,服務(wù)器維護(hù)一個(gè)未連接隊(duì)列,該隊(duì)列為每個(gè)客戶端的 SYN 包(syn=j)開設(shè)一個(gè)條目,
該條目表明服務(wù)器已收到 SYN 包,并向客戶發(fā)出確認(rèn),正在等待客戶的確認(rèn)包。
這些條目所標(biāo)識(shí)的連接在服務(wù)器處于 Syn_RECV 狀態(tài),當(dāng)服務(wù)器收到客戶的確認(rèn)包時(shí),刪除該條目,服務(wù)器進(jìn)入 ESTABLISHED 狀態(tài)。 backlog 參數(shù):表示未連接隊(duì)列的最大容納數(shù)目。
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í)間不一定相同。
半連接存活時(shí)間:是指半連接隊(duì)列的條目存活的最長時(shí)間,也即服務(wù)從收到 SYN包到確認(rèn)這個(gè)報(bào)文無效的最長時(shí)間,該時(shí)間值是所有重傳請(qǐng)求包的最長等待時(shí)間總和。有時(shí)我們也稱半連接存活時(shí)間為 Timeout 時(shí)間、SYN_RECV 存活時(shí)間。
更多關(guān)于“網(wǎng)絡(luò)安全培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學(xué),課程大綱緊跟企業(yè)需求,更科學(xué)更嚴(yán)謹(jǐn),每年培養(yǎng)泛IT人才近2萬人。不論你是零基礎(chǔ)還是想提升,都可以找到適合的班型,千鋒教育隨時(shí)歡迎你來試聽。