TCP的三次握手與四次揮手詳解
TCP的傳輸如圖:
TCP三次握手的過程如下:
建立TCP連線,就是指建立一個TCP連線時,需要客戶端和服務端總共傳送3個包以確認連線的建立。在socket程式設計中,這一過程由客戶端執行connect來觸發。
在TCP/IP協議中,TCP協議提供可靠的連線服務,採用三次握手建立一個連線.
第一次握手:Client將標誌位SYN置為1,隨機產生一個值seq=J,並將該資料包傳送給Server,Client進入SYN_SENT狀態,等待Server確認。
SYN:同步序列編號(Synchronize Sequence Numbers)
第二次握手:Server收到資料包後由標誌位SYN=1知道Client請求建立連線,Server將標誌位SYN和ACK都置為1,ack=J+1,隨機產生一個值seq=K,並將該資料包傳送給Client以確認連線請求,Server進入SYN_RCVD狀態。
第三次握手:Client收到確認後,檢查ack是否為J+1,ACK是否為1,如果正確則將標誌位ACK置為1,ack=K+1,並將該資料包傳送給Server,Server檢查ack是否為K+1,ACK是否為1,如果正確則連線建立成功,Client和Server進入ESTABLISHED狀態,完成三次握手,隨後Client與Server之間可以開始傳輸資料了。
為什麼需要三次握手,是為了解決下列的一個問題:
client發出的第一個連線請求報文段並沒有丟失,而是在某個網路結點長時間的滯留了,以致延誤到連線釋放以後的某個時間才到達server。本來這是一個早已失效的報文段。但server收到此失效的連線請求報文段後,就誤認為是client再次發出的一個新的連線請求。於是就向client發出確認報文段,同意建立連線。假設不採用三次握手,那麼只要server發出確認,新的連線就建立了。由於現在client並沒有發出建立連線的請求,因此不會理睬server的確認,也不會向server傳送資料。但server卻以為新的運輸連線已經建立,並一直等待client發來資料。這樣,server的很多資源就白白浪費掉了。採用三次握手的辦法可以防止上述現象發生
四次揮手(Four-Way Wavehand)即終止TCP連線,就是指斷開一個TCP連線時,需要客戶端和服務端總共傳送4個包以確認連線的斷開。在socket程式設計中,這一過程由客戶端或服務端任一方執行close來觸發
TCP四次揮手的過程如下:
1.第一次揮手:Client傳送一個FIN,用來關閉Client到Server的資料傳送,Client進入FIN_WAIT_1狀態。
2.第二次揮手:Server收到FIN後,傳送一個ACK給Client,確認序號為收到序號+1(與SYN相同,一個FIN佔用一個序號),Server進入CLOSE_WAIT狀態。
3.第三次揮手:Server傳送一個FIN,用來關閉Server到Client的資料傳送,Server進入LAST_ACK狀態。
4.第四次揮手:Client收到FIN後,Client進入TIME_WAIT狀態,接著傳送一個ACK給Server,確認序號為收到序號+1, Server進入CLOSED狀態,完成四次揮手。
如果有大量的連線,每次在連線、關閉時都要三次握手,四次揮手,會很明顯會造成效能低下,因此,
HTTP有一種叫做keep connection的機制,它可以在傳輸資料後仍然保持連線,當客戶端再次獲取資料時,直接使用剛剛空閒下的連線而無需再次握手
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4606/viewspace-2818364/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- TCP/IP的三次握手與四次揮手詳解TCP
- 詳解TCP一:三次握手、四次揮手TCP
- TCP 三次握手 與 四次揮手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協議中的三次握手與四次揮手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/IP協議三次握手四次揮手TCP協議
- 看圖理解TCP的三次握手和四次揮手TCP
- TCP 三次握手和四次揮手圖解(有限狀態機)TCP圖解
- TCP-三次握手和四次揮手簡單理解TCP
- TCP協議特點和三次握手/四次揮手TCP協議
- 跟著動畫學TCP三次握手和四次揮手動畫TCP
- 談談TCP協議的三次握手和四次揮手TCP協議
- 詼諧的談談TCP三次握手和四次揮手TCP
- TCP 的三次握手和四次揮手,瞭解泛洪攻擊麼TCP