取經之路 - TCP如何保證傳輸可靠

在這裏插入圖片描述

TCP如何保證 - 可靠傳輸

  • 數據分割成合適的數據塊
    • 較少網絡負擔,做到一種均衡
  • TCP對每個字節進行編號排序
    • 排序去重
    • 有一個序號,確認數據的完整性檢驗
  • 確認應答
    • 服務端接收到數據之後返回 ACK,說明接受了哪些數據,並指定下次從哪個位置開始發送數據
  • TCP首部和數據的校驗
    • 發送方和接收方進行數據的校驗和計算
  • 丟棄重複的數據
    • 在排序的時候,發現重複的便可丟棄
    • 或者我已經接受了數據A,由於重傳機制重新發送數據A,則直接丟棄傳過來的數據A
  • 流量控制 (固定大小的緩衝發送和接收數據)
    • 窗口滑動 (TCP協議頭有一個16位字段的窗口大小: 2^16=65535bit=64k)
    • 數據發送過快,接收過慢,接收速度不匹配
  • 擁塞控制 (剛開始發送較少數據)
    • 慢啓動:先發送少量數據探測 (剛開始 擁塞窗口大小爲1,每收到一次確認應答ACK,則擁塞窗口大小+1, 擁塞窗口大小值數增大,保證傳輸速度的快速)
    • 擁塞避免: 達到擁塞窗口的閾值之後,窗口大小增長爲 線性增長,慢啓動爲指數增長
    • 快重傳: 在發生丟包的時候,必須要快
    • 快恢復
  • ARQ協議 停止等待協議 (發送一個之後,停止發送,等待對方確認再發送)
  • 超時重傳 定時器計時等待確認,等待不到就重傳
    • 遲遲沒有接收到 確認應答 (也就是ACK)
      • 數據傳輸給服務器的時候丟包
      • 服務器響應ACK的時候網絡過慢導致超時
    • 重傳次數達到閾值就會強制關閉連接
  • 自動重傳
  • 三次握手四次揮手保證連接的可靠 (詳細見下文,面試官很喜歡從一個問題引入另一個問題)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章