TCP協議特點和三次握手/四次揮手
提供一種面向連線的、可靠的位元組流服務
在一個TCP連線中,僅有兩方進行彼此通訊。廣播和多播不能用於TCP
TCP使用校驗和,確認和來保證可靠傳輸
TCP給資料分節進行排序,並使用累積確認保證資料的順序不變和非重複
TCP使用滑動視窗機制來實現流量控制,透過動態改變視窗的大小進行擁塞控制
注意:TCP 並不能保證資料一定會被對方接收到,因為這是不可能的。TCP 能夠做到的是,如果有可能,就把資料遞送到接收方,否則就(透過放棄重傳並且中斷連線這一手段)通知使用者。因此準確說 TCP 也不是 100% 可靠的協議,它所能提供的是資料的可靠遞送或故障的可靠通知。
二.
所謂三次握手(Three-way Handshake),是指時,需要客戶端和伺服器總共傳送3個包。
三次握手的目的是連線伺服器指定,建立 TCP 連線,並同步連線雙方的序列號和確認號,交換 TCP 視窗大小資訊。在 socket 程式設計中,客戶端執行 connect() 時。將觸發三次握手。
第一次握手(SYN=1, seq=x):
客戶端傳送一個 TCP 的 SYN 標誌位置1的包,指明客戶端打算連線的伺服器的埠,以及初始序號 X,儲存在包頭的序列號(Sequence Number)欄位裡。傳送完畢後,客戶端進入 SYN_SEND 狀態。
第二次握手(SYN=1, ACK=1, seq=y, ACKnum=x+1):
伺服器發回確認包(ACK)應答。即 SYN 標誌位和 ACK 標誌位均為1。伺服器端選擇自己 ISN 序列號,放到 Seq 域裡,同時將確認序號(Acknowledgement Number)設定為客戶的 ISN 加1,即X+1。 傳送完畢後,伺服器端進入 SYN_RCVD 狀態。
第三次握手(ACK=1,ACKnum=y+1)
客戶端再次傳送確認包(ACK),SYN 標誌位為0,ACK 標誌位為1,並且把伺服器發來 ACK 的序號欄位+1,放在確定欄位中傳送給對方,並且在資料段放寫ISN的+1傳送完畢後,客戶端進入 ESTABLISHED 狀態,當伺服器端接收到這個包時,也進入 ESTABLISHED 狀態,TCP 握手結束。
TCP 的連線的拆除需要傳送四個包,因此稱為(Four-way handshake),也叫做改進的三次握手。客戶端或伺服器均可主動發起揮手動作,在 socket 程式設計中,任何一方執行 close() 操作即可產生揮手操作。
第一次揮手(FIN=1,seq=x)
假設客戶端想要關閉連線,客戶端傳送一個 FIN 標誌位置為1的包,表示自己已經沒有資料可以傳送了,但是仍然可以接受資料。傳送完畢後,客戶端進入 FIN_WAIT_1 狀態。
第二次揮手(ACK=1,ACKnum=x+1)
伺服器端確認客戶端的 FIN 包,傳送一個確認包,表明自己接受到了客戶端關閉連線的請求,但還沒有準備好關閉連線。傳送完畢後,伺服器端進入 CLOSE_WAIT 狀態,客戶端接收到這個確認包之後,進入 FIN_WAIT_2 狀態,等待伺服器端關閉連線。
第三次揮手(FIN=1,seq=y)
伺服器端準備好關閉連線時,向客戶端傳送結束連線請求,FIN 置為1。
傳送完畢後,伺服器端進入 LAST_ACK 狀態,等待來自客戶端的最後一個ACK。
第四次揮手(ACK=1,ACKnum=y+1)
客戶端接收到來自伺服器端的關閉請求,傳送一個確認包,並進入 TIME_WAIT狀態,等待可能出現的要求重傳的 ACK 包。伺服器端接收到這個確認包之後,關閉連線,進入 CLOSED 狀態。客戶端等待了某個固定時間(兩個最大段生命週期,2MSL,2 Maximum Segment Lifetime)之後,沒有收到伺服器端的 ACK ,認為伺服器端已經正常關閉連線,於是自己也關閉連線,進入 CLOSED 狀態。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4822/viewspace-2807935/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- TCP協議的三次握手和四次揮手TCP協議
- 談談TCP協議的三次握手和四次揮手TCP協議
- 網路協議 - TCP/IP 三次握手和四次揮手協議TCP
- 【網路】TCP協議中三次握手和四次揮手TCP協議
- TCP協議中的三次握手與四次揮手TCP協議
- HTTP協議三次握手和四次揮手HTTP協議
- TCP三次握手和四次揮手TCP
- 正本清源:TCP協議之三次握手和四次揮手TCP協議
- TCP三次握手和四次揮手理解TCP
- TCP 三次握手四次揮手TCP
- TCP三次握手四次揮手TCP
- TCP三次握手&四次揮手TCP
- TCP協議三次握手、四次揮手以及TCP視窗滑動機制TCP協議
- 簡述TCP三次握手和四次揮手TCP
- TCP 、 UDP、三次握手、四次揮手TCPUDP
- TCP 三次握手 與 四次揮手TCP
- TCP三次握手與四次揮手TCP
- 面試必問之 TCP/IP協議的三次握手 四次揮手面試TCP協議
- 說說TCP的三次握手和四次揮手TCP
- 圖解TCP的三次握手和四次揮手圖解TCP
- TCP的三次握手與四次揮手TCP
- TCP三次握手四次揮手介紹TCP
- TCP三次握手及四次揮手理解TCP
- TCP-三次握手和四次揮手簡單理解TCP
- 看圖理解TCP的三次握手和四次揮手TCP
- 詳解TCP一:三次握手、四次揮手TCP
- tcp三次握手、四次揮手過程解析TCP
- 跟著動畫學TCP三次握手和四次揮手動畫TCP
- 詼諧的談談TCP三次握手和四次揮手TCP
- TCP三次握手、四次揮手概念圖詳解TCP
- TCP的三次握手與四次揮手詳解TCP
- Wireshark抓包分析TCP“三次握手,四次揮手”TCP
- 跟著動畫學習 TCP 三次握手和四次揮手動畫TCP
- TCP:三次握手和四次揮手,面試無死角答覆TCP面試
- 說說TCP為什麼需要三次握手和四次揮手?TCP
- TCP 三次握手和四次揮手圖解(有限狀態機)TCP圖解
- 關於 TCP 三次握手和四次揮手,滿分回答在此TCP
- 通俗易懂的TCP“三次握手”與“四次揮手”TCP