TCP协议的三次握手、四次挥手
TCP(Transmission Control Protocol) 傳輸控制協議
TCP是主機對主機層的傳輸控制協議,提供可靠的連接服務,通過三次握手建立一個連接
TCP 三次握手圖示:
位碼即tcp標志位,有6種標示:
SYN(synchronous建立聯機)
ACK(acknowledgement 確認)
PSH(push傳送)
FIN(finish結束)
RST(reset重置)
URG(urgent緊急)
Sequence number(順序號碼) Acknowledge number(確認號碼)
第一次握手:客戶端A向服務器發送SYN=1 ,隨機產生seq=x(序號為x) 的數據包,進入SYN-SENT狀態,服務器B由SYN=1得知A要建立連機。
第二次握手:服務端B收到請求后確認信息,向客戶端返回SYN=1,ACK=1 ,seq=y,ack=x+1(表示客戶A下一次發送的數據包號為x+1),此時服務器B進入SYN-RCVD狀態。
第三次握手:客戶端A收到后檢查ack(確認號)是否正確,即第一次發送的序號+1和ACK是否為1.若正確,客戶端A再次發送ACK=1,發送序號為seq=x+1,確認號為y+1,服務端B收到后確認seq與ack=1,此時客戶A和服務器B進入ESTABLISHED狀態,完成三次握手。??????
完成三次握手,客戶端和服務器開始傳送數據。
圖解:
一個三次握手的過程(圖1,圖2)
(圖1)
?
(圖2)
第一次握手的標志位(圖3)
我們可以看到標志位里面只有個同步位,也就是在做請求(SYN)
?
?(圖3)
?
第二次握手的標志位(圖4)
我們可以看到標志位里面有個確認位和同步位,也就是在做應答(SYN + ACK)
(圖4)
?
第三次握手的標志位(圖5)
我們可以看到標志位里面只有個確認位,也就是再做再次確認(ACK)
(圖5)
?
一個完整的三次握手也就是 請求---應答---再次確認
四次揮手
由于TCP連接是全雙工的,因此每個方向都必須單獨進行關閉。客戶A和服務器B都可以主動斷開連接,如果A客戶發送完數據后不主動斷開就會占有服務器B的資源。
第一次揮手:客戶A和服務器B都處于ESTABLISHED建立狀態,客戶A向服務器B發送FIN=1來結束A到B的數據傳送。客戶A就進入FIN-WAIT-1狀態。
第二次揮手:服務器B收到這個FIN,它返回一個ACK,確認序號為收到的序號加1,和SYN一樣,一個FIN將占用一個序號,服務器B進入COLSE-WAIT狀態。
第三次揮手:服務器B關閉與客戶A的連接,發送一個FIN給客戶A。服務器B進入closed狀態
第四次揮手:客戶A返回ACK確認,并將確認序號設置為收到的序號加1,客戶A進入TIME-WAIT狀態,到此四次揮手完成。
轉載于:https://blog.51cto.com/lyhbwwk/2162564
總結
以上是生活随笔為你收集整理的TCP协议的三次握手、四次挥手的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 8月21日科技联播:支付宝转账遭骗可一键
- 下一篇: WinForm连接数据库