九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
計算機網絡:這是一份全面 & 詳細 的TCP協(xié)議攻略

前言

  • 計算機網絡基礎 該是程序猿需掌握的知識,但往往會被忽略

  • 今天,我將詳細講解計算機網絡中最重要的TCP協(xié)議,含其特點、三次握手、四次揮手、無差錯傳輸?shù)戎R,希望你們會喜歡。

閱讀本文前,請先了解計算機網絡基礎知識:獻上一份全面 & 詳細的計算機網絡基礎 學習指南


目錄

示意圖

1. 定義

Transmission Control Protocol,即 傳輸控制協(xié)議

  1. 屬于 傳輸層通信協(xié)議

  2. 基于TCP的應用層協(xié)議有HTTP、SMTPFTP、TelnetPOP3


2 特點

  • 面向連接、面向字節(jié)流、全雙工通信、可靠

  • 具體介紹如下:

示意圖

3. 優(yōu)缺點

  • 優(yōu)點:數(shù)據傳輸可靠

  • 缺點:效率慢(因需建立連接、發(fā)送確認包等)


4. 應用場景(對應的應用層協(xié)議)

要求通信數(shù)據可靠時,即 數(shù)據要準確無誤地傳遞給對方

如:傳輸文件:HTTP、HTTPS、FTP等協(xié)議;傳輸郵件:POP、SMTP等協(xié)議

  • 萬維網:HTTP協(xié)議

  • 文件傳輸:FTP協(xié)議

  • 電子郵件:SMTP協(xié)議

  • 遠程終端接入:TELNET協(xié)議


5. 報文段格式

  • TCP雖面向字節(jié)流,但傳送的數(shù)據單元 = 報文段

  • 報文段 = 首部 + 數(shù)據 2部分

  • TCP的全部功能體現(xiàn)在它首部中各字段的作用,故下面主要講解TCP報文段的首部

  1. 首部前20個字符固定、后面有4n個字節(jié)是根據需而增加的選項

  2. 故 TCP首部最小長度 = 20字節(jié)

示意圖
示意圖

6. 建立連接過程

  • TCP建立連接需 三次握手

  • 具體介紹如下

示意圖
示意圖
示意圖

成功進行TCP的三次握手后,就建立起一條TCP連接,即可傳送應用層數(shù)據

  1. TCP提供的是全雙工通信,故通信雙方的應用進程在任何時候都能發(fā)送數(shù)據

  2. 三次握手期間,任何1次未收到對面的回復,則都會重發(fā)

特別說明:為什么TCP建立連接需三次握手?

  • 結論
    防止服務器端因接收了早已失效的連接請求報文,從而一直等待客戶端請求,最終導致形成死鎖、浪費資源

  • 具體描述

具體描述

SYN洪泛攻擊:

  • 從上可看出:服務端的TCP資源分配時刻 = 完成第二次握手時;而客戶端的TCP資源分配時刻 = 完成第三次握手時

  • 這就使得服務器易于受到SYN洪泛攻擊,即同時多個客戶端發(fā)起連接請求,從而需進行多個請求的TCP連接資源分配


7. 釋放連接過程

  • 在通信結束后,雙方都可以釋放連接,共需 四次揮手

  • 具體如下

示意圖
示意圖
示意圖

特別說明:為什么TCP釋放連接需四次揮手?

  • 結論
    為了保證通信雙方都能通知對方 需釋放 & 斷開連接

即釋放連接后,都無法接收 / 發(fā)送消息給對方

  • 具體描述

示意圖

延伸疑問:為什么客戶端關閉連接前要等待2MSL時間?

  1. TIME - WAIT 狀態(tài)的作用是什么;

  2. MSL = 最長報文段壽命(Maximum Segment Lifetime

  • 原因1:為了保證客戶端發(fā)送的最后1個連接釋放確認報文 能到達服務器,從而使得服務器能正常釋放連接

示意圖
  • 原因2:防止 上文提到的早已失效的連接請求報文 出現(xiàn)在本連接中
    客戶端發(fā)送了最后1個連接釋放請求確認報文后,再經過2MSL時間,則可使本連接持續(xù)時間內所產生的所有報文段都從網絡中消失。

即 在下1個新的連接中就不會出現(xiàn)早已失效的連接請求報文


8. 無差錯傳輸

  • 對比于UDP,TCP的傳輸是可靠的、無差錯的

  • 那么,為什么TCP的傳輸為什么是可靠的、無差錯的呢?

  • 下面,我將詳細講解TCP協(xié)議的無差錯傳輸

8.1 含義

  • 無差錯:即 傳輸信道不出差錯

  • 發(fā)送 & 接收效率匹配:即 無論發(fā)送方以多快的速度發(fā)送數(shù)據,接收方總來得及處理收到的數(shù)據

8.2 基礎:滑動窗口 協(xié)議

  • 先理解2個基礎概念:發(fā)送窗口、接收窗口

示意圖
  • 工作原理
    對于發(fā)送端:

  1. 每收到一個確認幀,發(fā)送窗口就向前滑動一個幀的距離

  2. 當發(fā)送窗口內無可發(fā)送的幀時(即窗口內的幀全部是已發(fā)送但未收到確認的幀),發(fā)送方就會停止發(fā)送,直到收到接收方發(fā)送的確認幀使窗口移動,窗口內有可以發(fā)送的幀,之后才開始繼續(xù)發(fā)送
    具體如下圖:

示意圖

對于接收端:當收到數(shù)據幀后,將窗口向前移動一個位置,并發(fā)回確認幀,若收到的數(shù)據幀落在接收窗口之外,則一律丟棄。

示意圖

滑動窗口 協(xié)議的重要特性

  • 只有接收窗口向前滑動、接收方發(fā)送了確認幀時,發(fā)送窗口才有可能(只有發(fā)送方收到確認幀才是一定)向前滑動

  • 停止-等待協(xié)議、后退N幀協(xié)議 & 選擇重傳協(xié)議只是在發(fā)送窗口大小和接收窗口大小上有所差別:

  1. 停止等待協(xié)議:發(fā)送窗口大小=1,接收窗口大小=1;即 單幀滑動窗口 等于 停止-等待協(xié)議

  2. 后退N幀協(xié)議:發(fā)送窗口大小>1,接收窗口大小=1。

  3. 選擇重傳協(xié)議:發(fā)送窗口大小>1,接收窗口大小>1。

  • 當接收窗口的大小為1時,可保證幀有序接收。

  • 數(shù)據鏈路層的滑動窗口協(xié)議中,窗口的大小在傳輸過程中是固定的(注意要與TCP的滑動窗口協(xié)議區(qū)別)

8.3 實現(xiàn)無差錯傳輸?shù)慕鉀Q方案

核心思想:采用一些可靠傳輸協(xié)議,使得

  1. 出現(xiàn)差錯時,讓發(fā)送方重傳差錯數(shù)據:即 出錯重傳

  2. 當接收方來不及接收收到的數(shù)據時,可通知發(fā)送方降低發(fā)送數(shù)據的效率:即 速度匹配

  • 針對上述2個問題,分別采用的解決方案是:自動重傳協(xié)議 和 流量控制 & 擁塞控制協(xié)議

解決方案1:自動重傳請求協(xié)議ARQ(針對 出錯重傳)

  • 定義
    Auto Repeat reQuest,具體介紹如下:

示意圖
  • 類型

示意圖

下面,將主要講解 上述3類協(xié)議

類型1:停等式ARQ(Stop-and-Wait)

  • 原理:(單幀滑動窗口)停止 - 等待協(xié)議 + 超時重傳

即 :發(fā)送窗口大小=1、接收窗口大小=1

  • 停止 - 等待協(xié)議的協(xié)議原理如下:

  1. 發(fā)送方每發(fā)送一幀,要等到接收方的應答信號后才能發(fā)送下一幀

  2. 接收方每接收一幀,都要反饋一個應答信號,表示可接下一幀

  3. 若接收方不反饋應答信號,則發(fā)送方必須一直等待

類型2:后退N幀協(xié)議

也稱:連續(xù)ARQ協(xié)議

  • 原理
    多幀滑動窗口 + 累計確認 + 后退N幀 + 超時重傳

即 :發(fā)送窗口大小>1、接收窗口大小=1

  • 具體描述
    a. 發(fā)送方:采用多幀滑動窗口的原理,可連續(xù)發(fā)送多個數(shù)據幀 而不需等待對方確認
    b. 接收方:采用 累計確認 & 后退N幀的原理,只允許按順序接收幀。具體原理如下:

示意圖

示例講解

本示例 = 源站 向 目的站 發(fā)送數(shù)據幀。具體示例如下:

示意圖

類型3:選擇重傳ARQ(Selective Repeat)

  • 原理
    多幀滑動窗口 + 累計確認 + 后退N幀 + 超時重傳

即 :發(fā)送窗口大小>1、接收窗口大小>1

類似于類型2(后退N幀協(xié)議),此處僅僅是接收窗口大小的區(qū)別,故此處不作過多描述

  • 特點
    a. 優(yōu):因連續(xù)發(fā)送數(shù)據幀而提高了信道的利用率
    b. 缺:重傳時又必須把原來已經傳送正確的數(shù)據幀進行重傳(僅因為這些數(shù)據幀前面有一個數(shù)據幀出了錯),將導致傳送效率降低

由此可見,若信道傳輸質量很差,導致誤碼率較大時,后退N幀協(xié)議不一定優(yōu)于停止-等待協(xié)議

解決方案2:流量控制 & 擁塞控制(針對 速度匹配)

措施1:流量控制

  • 簡介

示意圖
  • 示例

示意圖
  • 特別注意:死鎖問題

示意圖

措施2:擁塞控制

  • 定義
    防止過多的數(shù)據注入到網絡中,使得網絡中的路由器 & 鏈路不致于過載

擁塞:對網絡中的資源需求 > 該資源所能提供的部分

  • 與 “流量控制”的區(qū)別

示意圖
  • 具體解決方案
    共分為2個解決方案:慢開始 & 擁塞避免、快重傳 & 快恢復

其中,涉及4種算法,即 慢開始 & 擁塞避免、快重傳 & 快恢復

具體介紹如下

解決方案1:慢開始 & 擁塞避免

1.1 儲備知識:擁塞窗口、慢開始算法、擁塞避免算法

a. 擁塞窗口

  • 發(fā)送方維持一個狀態(tài)變量:擁塞窗口(cwnd, congestion window ),具體介紹如下

示意圖

b. 慢開始算法

  • 原理
    當主機開始發(fā)送數(shù)據時,由小到大逐漸增大 擁塞窗口數(shù)值(即 發(fā)送窗口數(shù)值),從而 由小到大逐漸增大發(fā)送報文段

  • 目的
    開始傳輸時,試探網絡的擁塞情況

  • 具體措施

示意圖
  • 示意圖

示意圖
  • 特別注意
    慢開始的“慢”指:一開始發(fā)送報文段時擁塞窗口(cwnd)設置得較?。?),使得發(fā)送方在開始時只發(fā)送一個報文段(目的是試探一下網絡的擁塞情況)

并不是指擁塞窗口(cwnd)的增長速率慢

c. 擁塞避免 算法

  • 原理
    使得擁塞窗口(cwnd)按線性規(guī)律 緩慢增長:每經過一個往返時間RTT,發(fā)送方的擁塞窗口(cwnd)加1

  1. 擁塞避免 并不可避免擁塞,只是將擁塞窗口按現(xiàn)行規(guī)律緩慢增長,使得網絡比較不容易出現(xiàn)擁塞

  2. 相比慢開始算法的加倍,擁塞窗口增長速率緩慢得多

  • 示意圖

示意圖

1.2 解決方案描述(慢開始 & 擁塞避免)

  • 為了防止擁塞窗口(cwnd)增長過大而引起網絡擁塞,采用慢開始 & 擁塞避免 2種算法,具體規(guī)則如下

示意圖
  • 實例說明

示意圖

解決方案2:快重傳 & 快恢復

快重傳 & 快恢復的解決方案 是對慢開始 & 擁塞避免算法的改進

2.1 儲備知識:快重傳算法、快恢復算法

a. 快重傳算法

  • 原理

    1. 接收方 每收到一個失序的報文段后 就立即發(fā)出重復確認(為的是使發(fā)送方及早知道有報文段沒有到達對方),而不要等到自己發(fā)送數(shù)據時才進行捎帶確認

    2. 發(fā)送方只要一連收到3個重復確認就立即重傳對方尚未收到的報文段,而不必 繼續(xù)等待設置的重傳計時器到期

  • 作用
    由于發(fā)送方盡早重傳未被確認的報文段,因此采用快重傳后可以使整個網絡吞吐量提高約20%

  • 示意圖

示意圖

b. 快恢復

當發(fā)送方連續(xù)收到3個重復確認后,就:

  1. 執(zhí)行 乘法減小 算法:把 慢開始門限(ssthresh)設置為 出現(xiàn)擁塞時發(fā)送方窗口值的一半 = 擁塞窗口的1半

  2. 將擁塞窗口(cwnd)值設置為 慢開始門限ssthresh減半后的數(shù)值 = 擁塞窗口的1半

  3. 執(zhí)行 加法增大 算法:執(zhí)行擁塞避免算法,使擁塞窗口緩慢地線性增大。

注:

  1. 由于跳過了擁塞窗口(cwnd)從1起始的慢開始過程,所以稱為:快恢復

  2. 此處網絡不會發(fā)生網絡擁塞,因若擁塞,則不會收到多個重復確認報文

2.2 解決方案描述(快重傳 & 快恢復)

  • 原理
    為了優(yōu)化慢開始 & 擁塞避免的解決方案,在上述方案中加入快重傳 & 快恢復 2種算法,具體規(guī)則如下

示意圖
  • 示意圖

示意圖

至此,關于TCP無差錯傳輸?shù)闹R講解完畢。


9. 與UDP協(xié)議的區(qū)別

示意圖

10. 總結

  • 本文全面講解了 計算機網絡中最重要的TCP協(xié)議,含其特點、三次握手、四次揮手、無差錯傳輸?shù)戎R,相信你們對TCP協(xié)議已經非常了解

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
計算機網絡
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服