計算機網絡:三次握手四次揮手

ip是傳輸層協議,解決主機與主機之間鏈接的問題。 Tcp/Udp是網絡層協議,解決兩個進程之間端到端通訊的問題。 Synchronize Sequence Numbers SYN:同步序列編號(Synchronize Sequence Numbers)。是TCP/IP創建鏈接時使用的握手信號。 ACK (Acknowledgement)便是確認字符,在數據通訊中,接收站發給發送站的一種傳輸類控制字符。表示發來的數據已確認接收無誤。 學前準備:大寫ACK和小寫ack的區別 https://cloud.tencent.com/info/47be7829f802a6edca6e834720e12d95.html http://www.noobyard.com/article/p-eyqlbiwb-gg.htmlhtml

Client端和Server端各個狀態意義以下:服務器

  • LISTEN - 偵聽來自遠方TCP端口的鏈接請求;
  • SYN-SENT -在發送鏈接請求後等待匹配的鏈接請求;
  • SYN-RECEIVED - 在收到和發送一個鏈接請求後等待對鏈接請求的確認;
  • ESTABLISHED- 表明一個打開的鏈接,數據能夠傳送給用戶;
  • FIN-WAIT-1 - 等待遠程TCP的鏈接中斷請求,或先前的鏈接中斷請求的確認;
  • FIN-WAIT-2 - 從遠程TCP等待鏈接中斷請求;
  • CLOSE-WAIT - 等待從本地用戶發來的鏈接中斷請求;
  • CLOSING -等待遠程TCP對鏈接中斷的確認;
  • LAST-ACK - 等待原來發向遠程TCP的鏈接中斷請求的確認;
  • TIME-WAIT -等待足夠的時間以確保遠程TCP接收到鏈接中斷請求的確認;
  • CLOSED - 沒有任何鏈接狀態;

三次握手:網絡

  • 1.初始狀態:Client處於CLOSE狀態,Server端處於LISTEN狀態。
  • 2.第一次握手:Client發送報文,報文首部同部位SYN=1,初始化一個序列號seq=x,此時Client進入SYN_SEND狀態,等待Server確認。
  • 3.第二次握手:Server端收到請求報文後,若是贊成鏈接,則須要發出確認報文。此時報文中確認位ACK=1,同部位SYN=1,設置確認序列號ack=x+1,同時本身也須要初始化一個序列號爲seq=y;此時Server端進入SYN_RCVD(同步收到)狀態。
  • 4第三次握手:Client收到確認後,繼續向服務器端發送去確認。此時確認位ACK=1,確認序列號ack=y+1;把本身的序列號seq設置成seq=x+1;此時,TCP鏈接創建,客戶端進入ESTABLISHED狀態。
  • 5.當服務器收到客戶端確認以後也進入ESTABLISHED狀態。

四次揮手:.net

  • 1.Client 發送報文,FIN=1,設置序列號seq=u,此時Client端進入FIN-WAIT-1狀態。
  • 2.Server端收到報文,發送確認報文,其中ACK=1,確認序列號ack=u+1,設置本身的序列號seq=v,此時服務器端進入CLOSE-WAIT狀態。此時客戶端已經不會向服務器端發送數據,而服務器端可能還有數據進行發送,客戶端依然會接受。
  • 3.客戶端收到服務器端確認請求,後將本身的狀態更新爲FIN-WATI-2狀態。
  • 4.服務器端將最後的數據發送繼續發送直至完成後,向客戶端發送報文,其中FIN=1,ack=u+1(仍是上一次的序列號),設置序列號seq=w,此時服務器處於LAST-ACK(最後確認狀態),等等客戶端的確認。
  • 5.客戶端收到報文後,須要發出確認,ACK=1,ack=w+1,序列號爲seq=u+1,此時客戶端進入TIME-WATI(時間等待狀態),此時TCP鏈接尚未釋放,必須通過2*MSL(最長報文段壽命)後的時間後,才能進入CLOSE狀態。
  • 6.服務器收到報文,馬上進入CLOSE狀態。服務器結束TCP鏈接的時間要比客戶端早一些。
相關文章
相關標籤/搜索