大家好,歡迎大家來到LIUSE網絡安全,本次文章做了對TCP三次握手、四次揮手的簡單講解。如果大家不喜歡看文章,那可以點開鄙人的頭像找到視頻《LIUSE網絡-對TCP三次握手、四次揮手的講解》那裡做了一些視頻的講解。寫的不好,或者講的不好,還請夥計們海涵~
TCP的基本概念:
TCP(Transmission Control Protocol 傳輸控制協議)是一種面向連接的、可靠的、基於字節流的傳輸層通信協議,由IETF的RFC 793定義。TCP層是位於IP層之上,應用層之下的中間層。
TCP是一個面向連接的協議,所以如果主機間想要進行交互就必須要和對方建立連接
TCP的連接過程:
TCP連接必須要經過三次“握手”才能夠建立,其中的過程非常複雜,現在我們只簡單的敘述一下三次握手的過程:
第一次握手:主機A向主機B發出連接請求數據包:“兄弟,你在嗎?我有點事跟你說。”
第二次握手:主機B向主機A發送同意連接和同步數據包:“沒問題的兄dei,你來吧。”
第三次握手:主機A再發出一個ACK數據包確認主機B的請求:“好的兄弟,我這就來。”
三次握手建立完成後,主機A才可以向主機B正式發送數據。
關於TCP的6個標誌位的含義:
SYN(synchronous建立聯機)
ACK(acknowledgement 確認)
PSH(push傳送)
FIN(finish結束)
RST(reset重置)
URG(urgent緊急)
常規下的通訊:
TCP服務器進程先創建傳輸控制塊TCB,時刻準備接受客戶進程的連接請求,此時服務器就進入了LISTEN(監聽)狀態;
TCP客戶進程也是先創建傳輸控制塊TCB,然後向服務器發出連接請求報文,這是報文首部中的同部位SYN=1,同時選擇一個初始序列號 seq=x ,此時,TCP客戶端進程進入了 SYN-SENT(同步已發送狀態)狀態。TCP規定,SYN報文段(SYN=1的報文段)不能攜帶數據,但需要消耗掉一個序號。
TCP服務器收到請求報文後,如果同意連接,則發出確認報文。確認報文中應該 ACK=1,SYN=1,確認號是ack=x+1,同時也要為自己初始化一個序列號 seq=y,此時,TCP服務器進程進入了SYN-RCVD(同步收到)狀態。這個報文也不能攜帶數據,但是同樣要消耗一個序號。
TCP客戶進程收到確認後,還要向服務器給出確認。確認報文的ACK=1,ack=y+1,自己的序列號seq=x+1,此時,TCP連接建立,客戶端進入ESTABLISHED(已建立連接)狀態。TCP規定,ACK報文段可以攜帶數據,但是如果不攜帶數據則不消耗序號。
當服務器收到客戶端的確認後也進入ESTABLISHED狀態,此後雙方就可以開始通信了。
好啦以上就是TCP三次握手的基本過程啦。寫的略渣,希望大神勿噴,鄙人多謝啦~
閱讀更多 LIUSE網絡 的文章