日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【学习笔记】传输层:TCP协议(报文段、连接管理{握手}、可靠传输、流量控制、拥塞控制)

發布時間:2024/7/23 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【学习笔记】传输层:TCP协议(报文段、连接管理{握手}、可靠传输、流量控制、拥塞控制) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一. 協議特點 & 報文段
      • ① 特點
      • ② 報文段首部格式
  • 二. TCP連接管理
      • ① 建立聯系(三次握手)
          • SYN洪泛攻擊
      • ② 連接釋放(四次揮手)
  • 三. TCP流量控制
      • ① 序號
      • ② 重傳
          • 冗余ACK(快速重傳)
  • 三. 流量控制
      • ① 定義
      • ② 實例
  • 四. TCP擁塞控制
      • ① 定義
      • ② 擁塞控制四種算法
          • 慢開始和擁塞避免
          • 快重傳和快恢復

一. 協議特點 & 報文段

① 特點

  • 面向連接;虛連接(并非物理連接)
  • 因為是全雙工,所以需要用到緩存
  • 比如下圖,用123字節和TCP頭組成報文段

② 報文段首部格式

  • 序號:比如上圖的123傳遞成功后,發送方要傳送456字節,那么組成報文段中的序號就是4。
  • 確認號:用序號的例子,123傳遞成功后,接收方發送的報文段的確認號就是4
    (表示123已經收到,期待接收到4)
  • 填充:TCP首部大小需要滿足是4B的倍數,因此需要填充0來結合選項大小滿足4B
  • 數據偏移:由“填充”可知,TCP首部大小不一定是20B,因此需要用“數據偏移"部分來記錄TCP首部的實際大小。
  • URG = 1:可以直接插隊到最前面
  • 控制位、窗口可以結合后面的例子理解,這里可以先看定義。
  • 對于檢驗和,UDP的第四個字段是17,和TCP的6不同。

二. TCP連接管理

  • 類似打電話,采用客戶服務器方式

① 建立聯系(三次握手)

  • 參考上圖男女的對話
  • 有ACK就有ack
  • x,y都是隨機的
  • 用到了控制位中的SYN(同步位),和ACK(確認位)
  • 返回確認的確認時,可以攜帶數據。
SYN洪泛攻擊
  • 用SYN cookie來解決
  • 簡述:大量進行ROUND 1,而不進行ROUND 3,讓服務器大量TCP連接掛起,浪費資源。

② 連接釋放(四次揮手)

  • 先看下圖男女對話,TCP的連接釋放過程就類似下圖
  • 半關閉狀態:只是單向的連接釋放,而非互相的連接釋放。
  • ROUND 2(ack=u+1)時客戶端不用回復確認報文段,因為已經進入半關閉狀態。
  • ROUND 3的ack=u+1,因為ROUND 2時客戶端并沒有回送報文段
  • ROUND 3的seq = w,不一定有 w = v + 1,因為ROUND 2 - 3之間服務端可能還在發信息
  • ROUND 4等待原理:
    1) 如果確認報文段丟失了,A會在2MSL內收到B重發的ROUND 3數據報,并重新開始計算2MSL:如果之后報文段繼續丟失,則重來一次這個操作;如果收到了,就圓滿結束
    2) 如果不設置這個操作,可能會出現因為報文段丟失,導致B一直處于等待報文段狀態,無法正常結束。
    3)為什么是2MSL:ROUND 4丟失的情況下,在1MSL的時候服務器會重傳ROUND 3,然后再經歷一個1MSL抵達客戶端,

三. TCP流量控制

  • 網絡層不可靠,靠傳輸層用TCP實現可靠
    如果是UDP,則在應用層實現可靠
  • 機制:校驗、序號、確認、重傳

① 序號

  • 發送123后(發123時序號字段為1)
  • 可見此時兩方緩存都有123,發送方要等收到確認收到123的信息后才能把123從緩存中去掉。(便于在丟失時可以重傳)
  • 此時發送了456、78,但是只有78傳到了。
  • 則接收方回送報文段時,報文段首部確認號仍為4
  • 之后補上456后,因為接收方緩存中已經有78了,因此回送的報文段首部確認號會是9(累計確認)

② 重傳

  • RTTs:發送第一個時,RTTs = RTT1_11?
    發送第二個后,RTTs由RTT1_11?和RTT2_22?來決定(并非平均),以此類推。
冗余ACK(快速重傳)
  • 通過收到多次冗余ack,判斷報文段丟失

三. 流量控制

① 定義

  • 發送方的發送窗口:取接收窗口擁塞窗口最小值
  • 發送窗口可以動態變化
  • 滑動窗口類似鏈路層的滑動窗口。

② 實例

  • 接收方可能會讓發送方發送窗口為0,此時不能再發送
    此時接收方把緩存數據上傳,傳完后再讓接收方繼續發。
  • 在上例結束后,可能B會讓A繼續傳輸,但是發送報文段丟失。那么可能雙方會一直僵持。解決方法見下圖。

四. TCP擁塞控制

① 定義

  • 擁塞:網絡狀況不好,接收、發送數據慢
  • 流量控制:點到點,防止發送方發太快,出問題知道找哪臺主機。
  • 擁塞控制:全局,發送方發送不到接收方,出問題不知道找哪臺主機

② 擁塞控制四種算法

慢開始和擁塞避免
  • 慢開始:雖然是指數增長,但是起點低(1、2、4…)
  • ssthresh慢開始門限值,說明要開始慢點加了。
  • 新ssthresh:一發生擁塞,就生成新ssthresh,值為擁塞時cwnd的一半(如圖中為 24/2 = 12)
  • 擁塞直接降到1。
快重傳和快恢復
  • 擁塞降到新ssthresh(而非1),因此叫快恢復
  • 收到3個確認的時候得到新ssthresh
  • 用到快重傳算法(見三.②)

總結

以上是生活随笔為你收集整理的【学习笔记】传输层:TCP协议(报文段、连接管理{握手}、可靠传输、流量控制、拥塞控制)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。