TCP的連接建立過程


最初A,B主機都處於CLOSE狀態。

B的TCP服務器進程先創建傳輸控制塊TCB,准備接受客戶端進程的連接請求。然后服務器進程就處於LISTEN狀態,等待客戶的連接請求,如有,即做出響應。

A的TCP客戶端進程也首先創建傳輸控制塊TCB,然后向B發出連接請求報文,這時首部中的同步位SYN=1,同時選擇一個初始序號seq=x.TCP規定,SYN報文段(即SYN=1的報文段)不能攜帶數據,但要消耗一個序號。這時TCP客戶端進入SYN-SEND(同步以發送)狀態。

B收到連接請求報文后,如同建立連接,則向A發送確認。在確認報文中應把SYN位和ACK位都置1,確認號是ack=x+1,同時也為自己選擇一個初始序號seq=y。

這個報文段不能攜帶數據,但同樣消耗一個序號。這時TCP服務器進程進入SYN-RECV(同步狀態)

TCP客戶端進程收到B的確認后,還要向B給出確認,確認報文的ACK置1,確認號ack=y+1,而自己的序號seq=x+1。TCP的標准規定,ACK報文段可以攜帶數據。但如果不攜帶數據則不消耗序號,在這種情況下,下一個數據報段的序號仍是seq=x+1.這時TCP連接已經建立,A進入ESTABLISHED狀態。B收到A的確認后,也進入ESTABLISTEND狀態。

上面的過程叫做三次握手·!!

確認ack:僅當ack=1時確認序號字段才有效,當ack=0時,確認序號無效。TCP規定,在連接建立后所傳送報文段都必須把ack置1。

同步syn:在建立連接時用來同步序號,當syn=1而ack=0時,表明這時一個連接請求報文,因此syn置為1就表示這時一個請求連接或連接接受報文

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com