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

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

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

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

冬至子 ? 來(lái)源: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)。 連接到不同但互連的計(jì)算機(jī)通信網(wǎng)絡(luò)的主計(jì)算機(jī)中的成對(duì)進(jìn)程之間依靠TCP提供可靠的通信服務(wù)。

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

01

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

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

圖片

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

02

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

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

圖片

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

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

03

** 可靠傳輸原理**

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

圖片

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

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

04

停止等待協(xié)議

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

圖片

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

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

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

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

05

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

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

圖片

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

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

圖片

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

    關(guān)注

    6

    文章

    1911

    瀏覽量

    45424
  • 接收機(jī)
    +關(guān)注

    關(guān)注

    8

    文章

    1177

    瀏覽量

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

    關(guān)注

    0

    文章

    3

    瀏覽量

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

    關(guān)注

    1

    文章

    91

    瀏覽量

    12054
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

    TCP/IP協(xié)議簡(jiǎn)介

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

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

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

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

    什么是tcp ip協(xié)議tcp ip協(xié)議詳解,深刻講述了tcp ip協(xié)議的概念,
    發(fā)表于 05-14 16:29 ?5985次閱讀
    <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ǔ)知識(shí)

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

    TCP協(xié)議的簡(jiǎn)介和關(guān)鍵知識(shí)點(diǎn)

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

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

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

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

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

    TCP/IP協(xié)議

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

    什么是TCP協(xié)議

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

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

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

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

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