彻底搞懂---三握四挥
生活随笔
收集整理的這篇文章主要介紹了
彻底搞懂---三握四挥
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 三握手
- 四揮手
三握手
正所謂,工欲善其事,必先利其器。
我們要想搞懂三次握手必須得先知道一些基礎的東西。
基礎的東西都知道了,那么我們再來分析三次握手的過程。
第一次握手: 客戶機發送SYN=1, seq=x(隨機的序號) 這時客戶機進入SYN-SENT狀態。 簡言之: 我(客戶機)發送一個連接請求,并說我這個報文的序號是x。第二次握手: 服務器在收到客戶機發來的SYN(連接請求)后,進入了SYN-RCVD狀態。 服務器并發送:SYN=1(接受連接),ACK=1(確認),ack=x+1(客戶機下次需要發送的報文序號) 和seq=y(服務器發送報文序號) 簡言之: 我(服務器)答應連你,確認收到你的消息了。 下次你(客戶機)給我發上次發送的報文(x)的后一個(即x+1.因為這個我有了 我要下一個)。我發送報文序號是y。第三次握手: 客戶機發送ACK=1,seq=x+1,ack=y+1 這時候客戶機和服務器就開始進入傳輸數據(ESTAB-LISHED)的狀態。 簡言之: 我知道你接受我的連接請求了,這次我發送的報文序號是(x+1),你下次給我發送y+1這個序號的報文。最后將我們理解的術語和專業術語的TCP三次握手的過程來個對比。看到上圖的對比,是不是發現 TCP三次握手的過程徹底明白了。
那為啥要三次握手呢?第一次握手: 服務器知道了: 客戶端的發送是正常的 自己的接收也是正常的。第二次握手: 客戶端知道了 : 服務器的發送是正常的,接收也是正常的。自己的發送是正常的,接收也是正常的。第三次握手: 服務端知道了: 自己的發送是正常的,客戶端的接收也是正常的。三次握手后: 客戶端知道了: 自己的發送接收都正常,也知道了服務器的接受和發送是正常的。服務器知道了: 自己的發送接收都正常,也知道了客戶端的接受和發送是正常的。 所以需要三次握手。四揮手
同樣的在了解四次揮手前我們也得弄懂一些東西。
我們先分析一下上圖的英文都是啥東西。
基礎的東西都知道了,那么我們再來分析四次揮手的過程。
第一次揮手: 客戶機發送FIN=1,seq=u 之后進入了FIN-WAIT-1狀態。 簡言之: 客戶機發送了一個斷開連接的標志(FIN=1)。 并說這個報文的序號是u。接著客戶機就進入了等待服務器確認的狀態(FIN_WAIT-1)。第二次揮手: 服務器發送ACK=1,seq=v,ack=u+1 后服務器進入了CLOSE-WAIT狀態。客戶機進入FIN-WAIT-2狀態。 簡言之: 服務器說我確認收到你的斷開請求了(ACK=1),我發送的報文序號是v, 下次你(客戶機)給我(服務器)發送u+1這個序號的報文。 服務器開始處理剩余的一些數據(CLOSE-WAIT)。客戶機等服務器處理完剩余的數據給自己發送確認信號(FIN-WAIT-2)第三次揮手: 服務器發送 FIN=1,ACK=1,seq=w,ack=u+1 隨后服務器進入LAST-ACK狀態。簡言之: 服務器給客戶機發送了一個斷開連接的標志(FIN=1),確認收到你的斷開請求了(ACK=1), 我的發送的報文序號是w,你(客戶機)下次給我(服務器)發送u+1這個序號的報文。 因為在此之前客戶機并沒有再次的給服務器發送報文。所以服務器給客戶機要的報文序號還是u+1。 服務器等待客戶機給自己發送確認收到的報文(LAST-ACK)。第四次揮手: 客戶機發送ACK=1,seq=u+1,ack=w+1,服務器隨后進入TIME-WAIT狀態。服務器收到后進入CLOSED狀態。等2MSL時間后客戶機也進入CLOSED狀態。 簡言之: 客戶機給服務器說我知道你可以斷開了(ACK=1),我(客戶機)發送的報文的序號是u+1, 你(服務器)下次給我(客戶機)發送的報文序號是w+1。服務器收到客戶機的確認后沒啥可說的,就關閉連接了。 客戶機等了2MSL后服務器沒有動靜了就也關閉連接了。最后將我們理解的術語和專業術語的TCP四次揮手的過程來個對比。
看到上圖的對比,是不是發現 TCP四次揮手的過程徹底明白了。
最后,三次握手我借鑒了這個視頻: https://www.bilibili.com/video/BV1vA411i7rs
里面講的很不錯。
總結
以上是生活随笔為你收集整理的彻底搞懂---三握四挥的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4.3 IP数据报格式
- 下一篇: 4.3.6 无分类编址CIDR(构成超网