前端知識總結(1):TCP 三次握手 四次揮手

在介紹TCP三次握手四次揮手之前,我們先回憶一下OSI計算機網絡七層結構:

  1. 物理層:以二進制數據形式在物理媒體上傳輸數據
  2. 數據鏈路層:如何將數據組合成數據塊,在數據鏈路層中稱這種數據塊爲幀(簡:傳有地址的幀);如何控制幀在物理信道上的傳輸,包括如何處理傳輸差錯(簡:錯誤檢測功能)…(再多不提了)
  3. 網絡層:介於傳輸層和數據鏈路層之間,它在數據鏈路層提供的兩個相鄰端點之間的數據幀的傳送功能上,進一步管理網絡中的數據通信,將數據設法從源端經過若干個中間節點傳送到目的端,從而向運輸層提供最基本的端到端的數據傳送服務。也有說是爲數據包選擇路由。
  4. 傳輸層:主要負責向兩個主機中的進程之間的通信提供服務。
  5. 會話層:建立在傳輸層之上,利用傳輸層提供的服務,使應用建立和維持會話,並能使會話獲得同步。會話層使用校驗點可使通信會話在通信失效時從校驗點繼續恢復通信。這種能力對於傳送大的文件極爲重要
  6. 表示層:數據格式化,代碼轉換,數據加密等
  7. 應用層:文件傳輸,電子郵件,文件服務,虛擬終端等

傳輸層

​ 傳輸層的服務一般要經歷傳輸連接建立階段,數據傳送階段,傳輸連接釋放階段3個階段,在數據傳送階段又分爲一般數據傳送和加速數據傳送兩種形式。傳輸層中最爲常見的兩個協議分別是傳輸控制協議TCP和用戶數據報協議UDP

傳輸層提供了主機應用程序進程之間的端到端的服務,基本功能如下:

  1. 分割與重組數據

  2. 按端口號尋址

  3. 連接管理

  4. 差錯控制和流量控制,糾錯的功能

​ 傳輸層要向會話層提供通信服務的可靠性,避免報文的出錯、丟失、延遲時間紊亂、重複、亂序等差錯。

TCP

常見問題有tcp三次握手:

客戶端和服務端通信前要進行連接,“3次握手”的作用就是雙方都能明確自己和對方的收、發能力是正常的

  • 第一次握手:客戶端發送網絡包,服務端收到了。這樣服務端就能得出結論:客戶端的發送能力、服務端的接收能力是正常的。
  • 第二次握手:服務端發包,客戶端收到了。這樣客戶端就能得出結論:服務端的接收、發送能力,客戶端的接收、發送能力是正常的。注意:這時服務端不能確定雙方的收發能力是正常的,所以這又了第三次握手
  • 第三次握手:客戶端發包,服務端收到了。這樣服務端就能得出結論:客戶端的接收、發送能力,服務端的發送、接收能力是正常的。

小小的總結:這不就是傳輸層的傳輸連接建立階段嘛,當然還有其它的作用與四次揮手相關

常見問題四次揮手

首先來重敘一下三次握手:

  1. 客戶端發送一個SYN段,並指明客戶端的初始序列號,即ISN ( c ).
  2. 服務端發送自己的SYN段作爲應答,同樣指明自己的ISN( s )。爲了確認客戶端的SYN,將ISN( c )+1作爲ACK數值。這樣,每發送一個SYN,序列號就會加1. 如果有丟失的情況,則會重傳。
  3. 爲了確認服務器端的SYN,客戶端將ISN( s )+1作爲返回的ACK數值。

很顯然,同理,這就是傳輸層的傳輸連接釋放階段

假設C(Client)要關閉連接時:

  1. C會發送指令到S(Server) ,包括Fin、Ack、Seq

  2. S 收到指令,發送指令,包括Ack、Seq,注意沒有Fin

    (S只是不能發送,但是可以接收) 相當於如圖狀態:
    在這裏插入圖片描述

  3. 然後S等所有數據發送完了,S發送指令,包括Fin、Ack、Seq,注意這個指令是不能立馬返回的,是應用層應用程序傳輸數據完了之後給出的。

  4. C 端收到,發送指令ACK、Seq,讓S知道C知道了

至於這些Fin、Ack、Seq怎麼計算的,這裏就不再提了。不過,來畫張圖加深一下印象吧:
在這裏插入圖片描述
小結:總算是寫完了(時間花的稍久,不是指字數),計算機網絡沒認真學,複習起來有點吃力,還是學的時候稍認真一些,不要給自己埋下這麼多坑

下一篇:前端知識總結(2):http;https工作原理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章