0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

TCP傳輸控制協(xié)議知識科普拓展

冬至子 ? 來源:BTBU科協(xié) ? 作者:BTBU科協(xié) ? 2023-11-27 17:46 ? 次閱讀

— TCP傳輸控制協(xié)議 —

傳輸控制協(xié)議(TCP,Transmission Control Protocol)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,由IETF的RFC 793定義。

TCP旨在適應(yīng)支持多網(wǎng)絡(luò)應(yīng)用的分層協(xié)議層次結(jié)構(gòu)。 連接到不同但互連的計算機通信網(wǎng)絡(luò)的主計算機中的成對進程之間依靠TCP提供可靠的通信服務(wù)。

TCP假設(shè)它可以從較低級別的協(xié)議獲得簡單的,可能不可靠的數(shù)據(jù)報服務(wù)。 原則上,TCP應(yīng)該能夠在從硬線連接到分組交換或電路交換網(wǎng)絡(luò)的各種通信系統(tǒng)之上操作。

01

** TCP協(xié)議首部 **

TCP協(xié)議,表現(xiàn)在報文上,就是會在應(yīng)用層傳輸下來的數(shù)據(jù)前附加上一個TCP首部,這個首部附加了TCP信息。

圖片

首部結(jié)構(gòu)

02

** TCP面向字節(jié)流特性**

TCP并不是把應(yīng)用層傳輸過來的數(shù)據(jù)直接加上首部然后發(fā)送給目標(biāo),而是把數(shù)據(jù)看成一個字節(jié)流,給他們標(biāo)上序號之后分部分發(fā)送。這就是TCP的面向字節(jié)流特性:

圖片

TCP會以流的形式從應(yīng)用層讀取數(shù)據(jù)并存放在自己的發(fā)送緩存區(qū)中,同時為這些字節(jié)標(biāo)上序號,TCP會從發(fā)送方緩沖區(qū)選擇適量的字節(jié)組成TCP報文,通過網(wǎng)絡(luò)層發(fā)送給目標(biāo),目標(biāo)會讀取字節(jié)并存放在自己的接收方緩沖區(qū)中,并在合適的時候交付給應(yīng)用層。

面向字節(jié)流的好處是無需一次存儲過大的數(shù)據(jù)占用太多內(nèi)存,壞處是無法知道這些字節(jié)代表的意義,例如應(yīng)用層發(fā)送一個音頻文件和一個文本文件,對于TCP來說就是一串字節(jié)流,沒有意義可言,這會導(dǎo)致粘包以及拆包問題。

03

** 可靠傳輸原理**

TCP是可靠傳輸協(xié)議,也就是,一個數(shù)據(jù)交給他,他肯定可以完整無誤地發(fā)送到目標(biāo)地址,除非網(wǎng)絡(luò)炸了。他實現(xiàn)的網(wǎng)絡(luò)模型如下:

圖片

對于應(yīng)用層來說,他就是一個可靠傳輸?shù)牡讓又С址?wù);而運輸層底層采用了網(wǎng)絡(luò)層的不可靠傳輸。雖然在網(wǎng)絡(luò)層甚至數(shù)據(jù)鏈路層就可以使用協(xié)議來保證數(shù)據(jù)傳輸?shù)目煽啃?,但這樣網(wǎng)絡(luò)的設(shè)計會更加復(fù)雜、效率會隨之降低。把數(shù)據(jù)傳輸?shù)目煽啃员WC放在運輸層,會更加合適。

可靠傳輸原理的重點總結(jié)一下:滑動窗口、超時重傳、累積確認(rèn)、選擇確認(rèn)、連續(xù)ARQ 。

04

停止等待協(xié)議

要實現(xiàn)可靠傳輸,最簡便的方法就是:我發(fā)送一個數(shù)據(jù)包給你,然后你跟我回復(fù)收到,我繼續(xù)發(fā)送下一個數(shù)據(jù)包。

圖片

這種“一來一去”的方法來保證傳輸可靠就是停止等待協(xié)議(stop-and-wait)。

再來考慮一種情況:丟包。網(wǎng)絡(luò)環(huán)境不可靠,導(dǎo)致每一次發(fā)送的數(shù)據(jù)包可能會丟失,如果機器A發(fā)送了數(shù)據(jù)包丟失了,那么機器B永遠接收不到數(shù)據(jù),機器A永遠在等待。解決這個問題的方法是:超時重傳 。

當(dāng)機器A發(fā)出一個數(shù)據(jù)包時便開始計時,時間到還沒收到確認(rèn)回復(fù),就可以認(rèn)為是發(fā)生了丟包,便再次發(fā)送,也就是重傳。

但重傳會導(dǎo)致另一種問題:如果原先的數(shù)據(jù)包并沒有丟失,只是在網(wǎng)絡(luò)中待的時間比較久,這個時候機器B會受到兩個數(shù)據(jù)包,那么機器B是如何辨別這兩個數(shù)據(jù)包是屬于同一份數(shù)據(jù)還是不同的數(shù)據(jù)?這就需要前面講過的方法:給數(shù)據(jù)字節(jié)進行編號。這樣接收方就可以根據(jù)數(shù)據(jù)的字節(jié)編號,得出這些數(shù)據(jù)是接下來的數(shù)據(jù),還是重傳的數(shù)據(jù)。

05

** 連續(xù)ARQ協(xié)議**

停止等待協(xié)議已經(jīng)可以滿足可靠傳輸了,但有一個致命缺點:效率太低。發(fā)送方發(fā)送一個數(shù)據(jù)包之后便進入等待,這個期間并沒有干任何事,浪費了資源。解決的方法是:連續(xù)發(fā)送數(shù)據(jù)包。

圖片

和停止等待最大的不同就是,他會源源不斷地發(fā)送,接收方源源不斷收到數(shù)據(jù)之后,逐一進行確認(rèn)回復(fù)。這樣便極大地提高了效率。但同樣,帶來了一些額外的問題:

發(fā)送是否可以無限發(fā)送直到把緩沖區(qū)所有數(shù)據(jù)發(fā)送完?不可以。因為需要考慮接收方緩沖區(qū)以及讀取數(shù)據(jù)的能力。如果發(fā)送太快導(dǎo)致接收方無法接受,那么只是會頻繁進行重傳,浪費了網(wǎng)絡(luò)資源。所以發(fā)送方發(fā)送數(shù)據(jù)的范圍,需要考慮到接收方緩沖區(qū)的情況。這就是TCP的流量控制 。解決方法是:滑動窗口 。

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 緩沖器
    +關(guān)注

    關(guān)注

    6

    文章

    1905

    瀏覽量

    45397
  • 接收機
    +關(guān)注

    關(guān)注

    8

    文章

    1170

    瀏覽量

    53329
  • ARQ
    ARQ
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    6118
  • TCP協(xié)議
    +關(guān)注

    關(guān)注

    1

    文章

    91

    瀏覽量

    12050
收藏 人收藏

    評論

    相關(guān)推薦

    第12章 TCP傳輸控制協(xié)議基礎(chǔ)知識

    轉(zhuǎn)最新教程本章節(jié)為大家講解TCP(Transmission Control Protocol,傳輸控制協(xié)議),通過本章節(jié)的學(xué)習(xí),需要大家對TCP
    發(fā)表于 10-30 08:51

    TCP/IP傳輸協(xié)議概攬

    TCP/IP 傳輸協(xié)議概攬 傳輸控制協(xié)議 TCP
    發(fā)表于 06-09 21:51 ?781次閱讀
    <b class='flag-5'>TCP</b>/IP<b class='flag-5'>傳輸</b>層<b class='flag-5'>協(xié)議</b>概攬

    TCP/IP傳輸協(xié)議概覽

    TCP/IP傳輸協(xié)議概攬 傳輸控制協(xié)議 TCP
    發(fā)表于 06-09 21:52 ?910次閱讀
    <b class='flag-5'>TCP</b>/IP<b class='flag-5'>傳輸</b>層<b class='flag-5'>協(xié)議</b>概覽

    TCP/IP協(xié)議簡介

    TCP/IP協(xié)議簡介 TCP/IP傳輸協(xié)議概攬 傳輸
    發(fā)表于 06-09 23:07 ?1367次閱讀
    <b class='flag-5'>TCP</b>/IP<b class='flag-5'>協(xié)議</b>簡介

    傳輸控制協(xié)議(TCP)/網(wǎng)絡(luò)層協(xié)議是什么意思

    傳輸控制協(xié)議(TCP)/網(wǎng)絡(luò)層協(xié)議是什么意思 傳輸控制
    發(fā)表于 04-06 16:44 ?2739次閱讀

    tcp ip協(xié)議_什么是tcp ip協(xié)議

    什么是tcp ip協(xié)議,tcp ip協(xié)議詳解,深刻講述了tcp ip協(xié)議的概念,
    發(fā)表于 05-14 16:29 ?5951次閱讀
    <b class='flag-5'>tcp</b> ip<b class='flag-5'>協(xié)議</b>_什么是<b class='flag-5'>tcp</b> ip<b class='flag-5'>協(xié)議</b>

    TCP傳輸控制協(xié)議

    TCP-IP詳解卷2 TCP傳輸控制協(xié)議,學(xué)習(xí)TCP很好的資料。歡迎下載。
    發(fā)表于 05-09 14:33 ?0次下載

    TCP協(xié)議基礎(chǔ)知識

    TCP 是互聯(lián)網(wǎng)核心協(xié)議之一,本文介紹它的基礎(chǔ)知識。
    的頭像 發(fā)表于 10-16 10:29 ?3563次閱讀
    <b class='flag-5'>TCP</b><b class='flag-5'>協(xié)議</b>基礎(chǔ)<b class='flag-5'>知識</b>

    TCP協(xié)議的簡介和關(guān)鍵知識

    重發(fā) 9、TCP控制 10、網(wǎng)線“斷”了怎么辦 01簡介 TCP(Transmission Control Protocol 傳輸控制
    的頭像 發(fā)表于 08-18 09:55 ?5209次閱讀
    <b class='flag-5'>TCP</b><b class='flag-5'>協(xié)議</b>的簡介和關(guān)鍵<b class='flag-5'>知識</b>點

    一文詳解TCP傳輸控制協(xié)議

    TCP(Transmission Control Protocol 傳輸控制協(xié)議)是一種面向連接(連接導(dǎo)向)的、可靠的、 基于IP的傳輸
    發(fā)表于 05-25 15:38 ?1560次閱讀
    一文詳解<b class='flag-5'>TCP</b><b class='flag-5'>傳輸</b><b class='flag-5'>控制</b><b class='flag-5'>協(xié)議</b>

    傳輸控制協(xié)議TCP是怎樣進行工作的

    傳輸控制協(xié)議TCP,Transmission Control Protocol)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信
    的頭像 發(fā)表于 08-19 09:17 ?2778次閱讀
    <b class='flag-5'>傳輸</b><b class='flag-5'>控制</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>TCP</b>是怎樣進行工作的

    TCP/IP協(xié)議

    TCP/IP傳輸協(xié)議,即傳輸控制/網(wǎng)絡(luò)協(xié)議,也叫作網(wǎng)絡(luò)通訊協(xié)
    的頭像 發(fā)表于 11-09 13:31 ?2090次閱讀

    什么是TCP協(xié)議

    TCP(Transmission Control Protocol,傳輸控制協(xié)議),它是最常用傳輸協(xié)議
    的頭像 發(fā)表于 02-14 10:26 ?2916次閱讀

    傳統(tǒng)TCP設(shè)計的可靠傳輸協(xié)議詳解

    傳統(tǒng)TCP設(shè)計的可靠傳輸協(xié)議是一種基于TCP協(xié)議實現(xiàn)的可靠傳輸方法。下面是傳統(tǒng)
    的頭像 發(fā)表于 07-21 16:51 ?607次閱讀

    關(guān)于TCP、HTTP的知識科普

    要說http就繞不開tcp,TCP協(xié)議對應(yīng)于傳輸層,而HTTP協(xié)議對應(yīng)于應(yīng)用層,從本質(zhì)上來說,二者沒有可比性。但是,http是基于
    的頭像 發(fā)表于 12-21 09:31 ?969次閱讀
    關(guān)于<b class='flag-5'>TCP</b>、HTTP的<b class='flag-5'>知識</b><b class='flag-5'>科普</b>