計算機網絡原理-網絡七層-傳輸層

一、傳輸層的基本服務

1、傳輸層功能

  1. 傳輸層的核心任務:應用進程之間提供端到端邏輯通信服務
  2. 只有主機纔有傳輸層,網絡核心中的:路由器、交換機、集線器,只有下三層
  3. 傳輸層的功能
    1. 對應用層報文進行段重組
    2. 面向應用層實現用與分解
    3. 實現端到端的量控制
    4. 塞控制
    5. 傳輸層
    6. 對報文進行差錯檢測
    7. 實現進程間端到端的可靠數據控制傳輸

2、傳輸層尋址與端口

  1. 一臺計算機中,不同應用進程用進程標識符(進程ID)區分
  2. 在全網範圍內利用ip地址+端口號唯一標識一個通訊端點
  3. 傳輸層端口號爲16位整數,可以編號65536個(2的16次方):常用端口號:小於256的端口號

3、無連接服務與面向連接服務

二、 傳輸層的複用與分解

1、複用與分解

  1. 多路複用:在源主機,傳輸層協議從不同的套接字收集應用進程發送的數據塊,併爲每個數據塊包裝上首部信息(包括用於分解的信息)構成報文段,然後將報文段傳遞給網絡層
  2. 多路分解:在目的主機,傳輸層讀取報文段中的數據,標識出接收套接字,進而通過該套接字,將傳輸層的報文段數據交付給正確的套接字
  3. 多路複用與多路分解(複用與分解/複用與分用):支持衆多應用進程公用一個傳輸層協議,並能夠將接收到的數據準確的交付給不同的應用進程

2、無連接的多路複用與多路分解

  1. UDP(用戶數據報協議):無連接服務的傳輸層協議
  2. UDP套接字二元組:<目的ip地址,目的端口號>

3、面向連接的多路複用與多路分解

  1. TCP(傳輸控制協議):面向連接服務的傳輸層協議
  2. TCP套接字四元組:<源ip地址,源端口號,目的ip地址,目的端口號>

三、停-等協議與滑動窗口協議

1、可靠數據傳輸基本原理

基於不可靠信道實現可靠數據傳輸的採取的措施

  1. 差錯檢測:利用編碼實現數據包傳輸過程中的比特錯誤檢測
  2. 確認:接收方向發送方反饋接收狀態(ACK:成功;NCK:失敗)
  3. 重傳:發送方重新向接收方發送接收方沒有收到的數據
  4. 序號:確保數據按序提交
  5. 計時器:解決數據丟失問題

2、停-等協議(自動重傳協議(ARQ))

停-等協議工作流程:發送方經過報文段等待接收方確認,接收方校驗通過接收後返回ACK,校驗不通過返回NCK,發送方接收到ACK後繼續發送後續報文,否則重發剛剛發送的報文

3、滑動窗口協議

流水線協議(管道協議):允許發送方在沒有收到確認前連續發送多個分組;最典型的流水線協議:滑動窗口協議

根據窗口大小,可具體分爲:

  1. 回退N步協議:GBN協議:發送窗口Ws ≥1 ,接收窗口Wr =1。
  2. 選擇重傳協議:SR協議:發送窗口Ws >1,接收窗口Wr >1。

四、用戶數據報協議(UDP)

UDP:傳輸層協議,提供無連接、不可靠、數據報盡力傳輸協議

1、UDP特點

  1. 應用進程容易控制發送什麼數據何時發送,會出現分組的丟失和重複
  2. 無需建立連接
  3. 無連接狀態
  4. 首部開銷小,只需8個字節

2、UDP數據報結構

UDP首部四個字段:每個字段2字節,共8個字節

  1. 源端口號、目的端口號:UDP實現複用與分解
  2. 長度:UDP報文中的字節數(首部和數據的總和)
  3. 校驗和:接收方用來校驗數據報是否有差錯

3、UDP校驗和

UDP校驗和計算規則

  1. 所有參與計算的內容按16位對齊求和
  2. 計算過程中如有溢出則進行反捲(進位與和的最低位再進行相加)
  3. 最後得到的和取反碼,就是UDP校驗和,填入數據報的校驗和字段

UDP校驗和參與計算的內容包含3部分:僞首部(只參與計算,不傳輸)、首部、應用數據

五、傳輸控制協議(TCP) 

傳輸控制協議(TCP):傳輸層協議,提供面向連接、可靠、有序、字節流傳輸服務

  1. 應用進程先建立連接
  2. 每條TCP連接只有兩個端點
  3. 可靠交付:無差錯、不丟失、不重複、按序到達
  4. 全雙工通訊
  5. 面向字節流

1、TCP報文結構

TCP首部分爲:固定首部(20字節)、選項(0-40字節) 

  1. 序號字段:對每個應用層數據的每個字節進行編碼
  2. 確認序號字段:期望從對方接受數據的字節序號,即還未接收到的數據,用ack_seq表示
  3. TCP首部長度最短20字節,最長60字節
  4. 首部長度的單位是4字節,所以首部長度=首部長度字段值*4

URG、ACK、PSH、RST、SYN、FIN各佔1位。爲標誌位字段;
各佔1位,值爲0或1;

  1. 緊急URG=1,緊急指針字段有效,優先傳送。
  2. 確認ACK=1,確認序號字段有效;ACK=0時,確認序號字段無效。
  3. 推送PSH=1,儘快將報文段中的數據交付接收應用迚程,丌要等緩存滿了再交付。
  4. 復位RST=1,TCP連接出現嚴重差錯,釋放連接,再重新建立TCP連接。
  5. 同步SYN=1,該TCP報文段是一個建立新連接請求控制段或者同意建立新連接的確認段。
  6. 終止FIN=1,TCP報文段的發送端數據已經發送完畢,請求釋放連接。

2、連接管理

三次握手

解釋:

  1. 期初客戶端和服務器都處於CLOSED(關閉階段),第一步首先服務器啓動,服務器進入LISTEN(監聽狀態)
  2. 第一次握手:客戶端向服務器發送請求(SYN=1(建立連接請求),seq=x(該報文段的序號x)),此時客戶端進入SYN_SENT(同步發送)
  3. 第二次握手:服務端接收到客戶端請求後給客戶端返回應答(SYN=1(響應建立連接請求)ACK=1(同意建立連接響應)seq=y(響應報文的序列號y)ack_seq=x+1(下次請求需要的報文序列號)),此時服務端進入SYN_RCVD(同步收到)
  4. 第三次握手:客戶端對服務端的同意連接進行確認(ACK=1(正常響應)seq=x+1(本次報文序列號)ack_seq=y+1(客戶端希望下次接收到服務端的序列號)),此時客戶端進入ESTABLISHED(已建立連接),服務端接收到ACK後進入ESTABLISHED(已建立連接)(注意:第三次握手可攜帶數據

解釋:

  1. 拆除連接之前客戶端和服務端都處於(ESTABLISHED:已建立連接傳輸數據狀態)
  2. 第一次揮手:客戶端發送釋放連接報文(FIN=1(數據發送完畢請求釋放連接)seq=u(本次報文的序列號)),此時客戶端從ESTABLISHED進入到FIN_WAIT_1(終止等待1)
  3. 第二次揮手:服務端接收到客戶端釋放連接請求後響應客戶端(ACK=1(確認請求)seq=v(本次請求報文序列號)ack_seq=u+1(服務端希望下次接收到的報文序列號)),服務端進入到CLOSE_WAIT(關閉等待),客戶端接收到響應後進入FIN_WAIT_2(終止等待2)
  4. 第三次揮手:服務端發送完數據後給客戶端發送釋放連接報文(FIN=1(終止請求)ACK=1(確認響應)seq=v+1(本次報文序列號)ack_seq=u+1(下次希望收到的序列號)),服務端進入到LAST_ACK(最後應答)
  5. 第四次揮手:客戶端接收到服務端釋放連接請求後響應服務端(ACK=1,seq=u+1,ack_seq=v+1+1)此時客戶端進入TIME_WAIT,等待2MSL時間進入到CLOSED狀態,服務端接收到響應後進入到CLOSED狀態

 3、TCP可靠數據傳輸工作機制

  1. 應用層數據被分割成TCP認爲最合適發送的數據塊
  2. 序號,發送方對發送的數據進行編號,確保數據按照編號提交跟接收方
  3. 確認,接收方向發送方反饋接收狀態,確認是否正確接收數據(TCP採用累積確認)
  4. 差錯檢測,利用差錯編碼實現數據包傳輸過程中的比特差錯檢測
  5. 重傳,發送發重新發送沒有被接收方正在接收的數據
  6. 計時器,在發送方引入計時器,解決數據丟失問題

4、TCP流量控制

流量控制:協調接收方和發送方的數據發送接收速度

TCP報文結構中,接收窗口字段用於實現TCP的流量控制

5、TCP擁塞控制

擁塞控制:通過合理調度、規範、調整向網絡中發送數據的主機數量、發送速率、數據量,以避免擁塞消除已發生的擁塞

概念:

  1. 擁塞窗口(CongWin):連接開始爲1MSS(一個報文段最大長度)
  2. 閾值(Threshold):臨界值

TCP擁塞控制算法:

1、慢啓動:在TCP建立連接時,每經過1個RTT時間,擁塞窗口增大1倍

2、擁塞避免:當擁塞窗口大於等於閾值時,每經過1個RTT時間,擁塞窗口加1

3、快速重傳:收到3次重複確認,則推斷該報文段已丟失,於是立即重傳被重複確認的報文段

4、快速恢復:當發生3次重複確認時,不再從慢啓動開始而是從新的閾值開始直接進入擁塞避免階段(網絡擁塞程度並不嚴重)

怎麼算報文丟失?

  1. 收到3次重複確認(網絡擁塞並不是很嚴重):觸發快速恢復算法,計算新的閾值(新的閾值=當前擁塞窗口/2),新擁塞窗口調整爲新閾值,從新的閾值直接進入擁塞避免階段
  2. 計時器超時(網絡擁塞嚴重):新的閾值=當前擁塞窗口/2;新的擁塞窗口調整爲1MSS,然後從1MSS進入到慢啓動階段,到達新閾值後進入到擁塞避免階段

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