TCP連線為什麼三次握手和四次揮手
最近開始複習了,以前學過的網路知識有點遺忘,所以做一點總結,讓自己回憶起來。
為什麼要三次握手
為什麼TCP連線採用三次握手而不是兩次,四次?
TCP的核心思想是,既要保證資料可靠傳輸,又要保證傳輸的效率。而三次恰好可以滿足這兩方面的需求。三次握手目的在於同步連線雙方的序列號和確認號並交換 TCP視窗大小資訊,讓雙方都確認自己傳送的資訊對方能夠收到。這樣三次就足夠了,四次效率低且浪費資源。如果採用兩次握手,並不能保證資料的可靠傳輸。舉例如下:
client認為傳送的第一個SYN請求報文段丟失,然後發起第二個SYN,如果是兩次握手,server端回應後連線就建立了。然而client發出的第一個SYN請求報文段並沒有丟失,而是在某個網路節點長時間滯留了,以致延誤到client-server連線釋放以後它才到達了server。本來這是一個早已失效的報文段,但server收到此失效的連線請求報文段後,就誤認為client再次發出一個新連線請求。於是就向client發出確認報文段,同意建立連線。在兩次握手的情況向,這時新的連線就建立了。但是client實際上並沒有發出建立連線的請求,因此並不會理睬server的確認,也不會像server傳送資料。但server卻單方面認為連線已經建立,就開始一直等待client傳送資料。這樣,server的資源就白白浪費掉了。採用”三次握手”的辦法可以防止上述現象發生。
實際上,三次握手可理解為兩次握手(兩次SYN)和兩次確認(兩次ACK),只不過中間的握手和確認合併為1次,這也是傳輸效率的一個體現。並且最後一次確認某些情況下可能會和資料一塊傳送,這和經受時延的ACK有關。
下面是TCP三次握手和四次揮手的圖,來自於酷殼網。
為什麼要四次揮手?
TCP連線是一種面向連線的、可靠地、基於位元組流的運輸層通訊協議。TCP是全雙工模式,這就意味著,當主機A傳送FIN報文段時,只是表示主機A沒有資料要傳送了。但是,這個時候主機A還是可以接受來自主機B的資料,處於半關閉狀態;當主機B返回ACK報文段時,表示主機B已經知道主機A沒有資料要傳送了,但是主機B此時還是可以傳送資料到主機A的;只有當主機B也傳送FIN報文段時,表示主機B也沒有資料要傳送了。此時雙方都關閉了連線,全雙工TCP連線就真正斷開了。
實際上,有可能是三次揮手。被動關閉的一端由於不需要再傳送資料了。因此ACK和FIN可能會一起傳送。
相關文章
- 說說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
- 網路協議 - TCP/IP 三次握手和四次揮手協議TCP
- 【網路】TCP協議中三次握手和四次揮手TCP協議
- 詼諧的談談TCP三次握手和四次揮手TCP
- TCP三次握手、四次揮手概念圖詳解TCP
- TCP的三次握手與四次揮手詳解TCP
- Wireshark抓包分析TCP“三次握手,四次揮手”TCP
- TCP 的三次握手和四次揮手,瞭解泛洪攻擊麼TCP
- 跟著動畫學習 TCP 三次握手和四次揮手動畫TCP
- TCP:三次握手和四次揮手,面試無死角答覆TCP面試
- TCP 三次握手和四次揮手圖解(有限狀態機)TCP圖解
- 關於 TCP 三次握手和四次揮手,滿分回答在此TCP
- TCP協議中的三次握手與四次揮手TCP協議
- 通俗易懂的TCP“三次握手”與“四次揮手”TCP
- 跟著動畫來學習TCP三次握手和四次揮手動畫TCP
- 正本清源:TCP協議之三次握手和四次揮手TCP協議