在 TCP/IP 協議中,TCP 協議提供可靠的連接服務,采用三次握手建立一個連接。
第一次握手:建立連接時,客戶端發送 syn 包(syn=j)到服務器,并進入SYN_SEND 狀態,等待服務器確認;
第二次握手:服務器收到 syn 包,必須確認客戶的 SYN(ack=j+1),同時自己也發送一個 SYN 包(syn=k),即 SYN+ACK 包,此時服務器進入 SYN_RECV 狀態;
第三次握手:客戶端收到服務器的 SYN+ACK 包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入 ESTABLISHED 狀態,完成三次握手。
完成三次握手,客戶端與服務器開始傳送數據,在上述過程中,還有一些重要的概念:
未連接隊列:在三次握手協議中,服務器維護一個未連接隊列,該隊列為每個客戶端的 SYN 包(syn=j)開設一個條目,
該條目表明服務器已收到 SYN 包,并向客戶發出確認,正在等待客戶的確認包。
這些條目所標識的連接在服務器處于 Syn_RECV 狀態,當服務器收到客戶的確認包時,刪除該條目,服務器進入 ESTABLISHED 狀態。 backlog 參數:表示未連接隊列的最大容納數目。
SYN-ACK 重傳次數 服務器發送完 SYN-ACK 包,如果未收到客戶確認包,服務器進行首次重傳,等待一段時間仍未收到客戶確認包,進行第二次重傳,如果重傳次數超過系統規定的最大重傳次數,系統將該連接信息從半連接隊列中刪除。注意,每次重傳等待的時間不一定相同。
半連接存活時間:是指半連接隊列的條目存活的最長時間,也即服務從收到 SYN包到確認這個報文無效的最長時間,該時間值是所有重傳請求包的最長等待時間總和。有時我們也稱半連接存活時間為 Timeout 時間、SYN_RECV 存活時間。
更多關于“網絡安全培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學,課程大綱緊跟企業需求,更科學更嚴謹,每年培養泛IT人才近2萬人。不論你是零基礎還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。