chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

什么是TCP協(xié)議

汽車電子技術(shù) ? 來源:物聯(lián)網(wǎng)IoT開發(fā) ? 作者:杰杰mcu ? 2023-02-14 10:26 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

TCP協(xié)議簡單了解

TCP(Transmission Control Protocol,傳輸控制協(xié)議),它是最常用傳輸層協(xié)議,也是最穩(wěn)定傳輸層協(xié)議,很多上層應(yīng)用都是依賴于TCP進(jìn)程傳輸數(shù)據(jù)。

TCP 屬于傳輸層協(xié)議,它為應(yīng)用層提供了可靠的字節(jié)流服務(wù)。在網(wǎng)絡(luò)協(xié)議棧中對它的描述要比對其它協(xié)議的描述復(fù)雜的多,這也導(dǎo)致了lwip中很大一部分代碼都是用于描述TCP協(xié)議的。

IP包暢游在網(wǎng)絡(luò)中,從主機(jī)A出發(fā),風(fēng)塵仆仆趕到主機(jī)B,雖然整個過程占用時間都是以毫秒或者秒計算的,但期間風(fēng)險重重啊,可能發(fā)生的情況:IP包在行進(jìn)中因擁塞而被路由器、交換機(jī)拋棄,以至于IP包在傳輸期間可能會被丟掉。但主機(jī)A會希望所有的IP包都安全地抵達(dá)主機(jī)B,這需要一個機(jī)制來保障數(shù)據(jù)能穩(wěn)定傳輸,于是專家們制定了TCP傳輸協(xié)議。

TCP是面向連接的技術(shù)。也就是說,基于TCP的兩臺主機(jī),在通信之前要先建立信息交互(IP協(xié)議則沒有這種交互),主機(jī)之間的設(shè)備(路由器)和線路,都僅是只負(fù)責(zé)處理協(xié)議棧模型的下三層(物理層、數(shù)據(jù)鏈路層和網(wǎng)絡(luò)層)的工作。

TCP一旦發(fā)現(xiàn)傳輸出錯就會重新傳輸數(shù)據(jù)包,直到所有數(shù)據(jù)安全、正確地傳送到目的地,再遞交到應(yīng)用層。

  1. TCP屬于傳輸模型的傳輸層
  2. TCP采用數(shù)據(jù)流的形式傳輸
  3. TCP提供可靠地、面向連接和字節(jié)流的傳輸層服務(wù)

TCP協(xié)議的特性

面向連接

TCP是一個面向連接的協(xié)議,無論哪一方向另一方發(fā)送數(shù)據(jù)之前,都必須先在雙方之間建立一個連接,否則將無法發(fā)送數(shù)據(jù),一個TCP連接必須有雙方 IP地址與端口號,而面向連接意味著兩個使用 TCP的應(yīng)用(通常是一個客戶端和一個服務(wù)器端)。就像打電話一樣。

正面確認(rèn)

當(dāng)TCP協(xié)議發(fā)出一個TCP報文段后,它啟動一個定時器,等待目的端主機(jī) 確認(rèn)收到這個報文段,如果不能及時收到一個確認(rèn),將重發(fā)這個報文段。一個完整的TCP傳輸必須有兩個端的主機(jī)進(jìn)行數(shù)據(jù)的交互,接收方在接收到數(shù)據(jù)之后必須正面進(jìn)行確認(rèn),向發(fā)送方報告接收的結(jié)果。

因為TCP協(xié)議依賴的是IP層的服務(wù),IP數(shù)據(jù)報的傳輸是無連接、不可靠的,因此它要通過確認(rèn)來知道接收方確實已經(jīng)收到數(shù)據(jù)了。

數(shù)據(jù)分割

應(yīng)用數(shù)據(jù)會被分割成TCP協(xié)議認(rèn)為最適合發(fā)送的報文段,這些其實是動態(tài)調(diào)整的, TCP協(xié)議只能是盡可能發(fā)送最大報文段(MSS)以保證數(shù)據(jù)傳輸?shù)乃俾省?/p>

數(shù)據(jù)緩沖

在發(fā)送方想要發(fā)送數(shù)據(jù)的時候,由于應(yīng)用程序的數(shù)據(jù)大小、類型都是不可預(yù)估的,而 TCP提供了緩沖機(jī)制來處理這些數(shù)據(jù),實際上TCP協(xié)議發(fā)送數(shù)據(jù)時,如果數(shù)據(jù)還未到 TCP報文段合適的大小,這些數(shù)據(jù)可能會被臨時緩存,知道超時或者等待到數(shù)據(jù)合適到TCP報文段時才發(fā)送出去,這也是大名鼎鼎的 Nagle算法(當(dāng)然可以禁用它哈哈哈)。這樣就能保證一次傳輸數(shù)據(jù)的效率并且減少網(wǎng)絡(luò)中的流量。

發(fā)送方在將數(shù)據(jù)發(fā)送出去后并不會 立即刪除數(shù)據(jù),而是讓數(shù)據(jù)依舊保存在緩沖區(qū)中(實際上是使用鏈表維護(hù)的),因為發(fā)送出去的數(shù)據(jù)不一定能被接收方正確接收,它需要等待到接收方的確認(rèn)再將數(shù)據(jù)刪除。

同樣的,在接收方也需要有同樣的緩沖機(jī)制,因為 TCP協(xié)議是以字節(jié)流發(fā)送數(shù)據(jù)的,這些數(shù)據(jù)可能會分割成多個 TCP報文段,而且在網(wǎng)絡(luò)中傳輸?shù)母鱾€ TCP報文段到達(dá)目標(biāo)主機(jī)的時間可能是不一樣的,這就導(dǎo)致數(shù)據(jù)失序,接收方需要把這些數(shù)據(jù)報組裝成完整且有序的數(shù)據(jù),然后再遞交到應(yīng)用層中,在這之前的數(shù)據(jù)都會被緩存。此外還有可能導(dǎo)致接收方接收到重復(fù)的數(shù)據(jù),因為IP數(shù)據(jù)報會可能發(fā)生重復(fù),這就必須在接收方將重復(fù)的數(shù)據(jù)剔除。

全雙工通信

TCP連接建立后,任何一個主機(jī)都可以向另一個主機(jī)發(fā)送數(shù)據(jù),數(shù)據(jù)是雙向流通的。在實際情況中,很大一部分的 TCP的確認(rèn)是通過 捎帶的方式來實現(xiàn),即接收方把確認(rèn)信息放到發(fā)送給發(fā)送方的報文段中,不必單獨為確認(rèn)信息申請一個報文。

當(dāng)然斷開連接也是一樣的,任意一方都可以主動斷開,不過對于服務(wù)器來說,應(yīng)用程序一般不會主動斷開 TCP連接,這其實是有點 貪婪思想了,不到萬不得已,都不會主動斷開連接。

流量控制

一條 TCP連接每一側(cè)的主機(jī)都設(shè)置了緩沖區(qū)域,很多時候可能對于接收方來說并不會立即去處理這些數(shù)據(jù),如果發(fā)送方一直發(fā)送數(shù)據(jù),就很可能導(dǎo)致接收方來不及處理,就像喂小孩子吃飯那樣,你一直給他塞飯,他根本咽不下是吧,所以 TCP協(xié)議就提供了來了控制,消除發(fā)送方使接收方緩沖區(qū)溢出的可能,流量控制其實是一個速度匹配的服務(wù),讓接收方的處理速度趕得上發(fā)送方的發(fā)送速度,就像小孩子,吃飯的速度趕得上你喂食的速度,但是小孩子的自身(硬件)是沒法改變的,總不能讓他有我們的吃飯速度對不對,那么只能改變我們喂食的速度了,我們慢一點,小孩子就不會被噎著。

TCP協(xié)議通過讓維護(hù)一個接收窗口的變量來提供流量控制,它是接收方用于給發(fā)送方一個指示:我還能接收多少數(shù)據(jù),接收方會將此窗口值放在 TCP 報文的首部中的窗口字段,然后通過確認(rèn)報文發(fā)送給發(fā)送方,這個窗口的值的大小是在發(fā)送數(shù)據(jù)的時候動態(tài)調(diào)整的。

當(dāng)然,如果接收窗口的大小是 0怎么辦?能想到這個問題的人很牛逼, 留個言我給你點個贊!

簡單來說說協(xié)議棧通信的處理無非是兩種方式觸發(fā),要么是事件、要么是時間(定時器),事件觸發(fā)就是我在等你連接事件發(fā)生,然后我響應(yīng),時間觸發(fā)就是超時后我再處理,都是比較容易理解的。

回到如果接收窗口的大小是 0怎么辦這個問題,那么接收窗口為0時,發(fā)送方應(yīng)該怎么發(fā)送數(shù)據(jù)呢,總不能不發(fā),也總不能是直接斷開吧,既然這樣子,那應(yīng)該什么時候發(fā)呢?

當(dāng)發(fā)送方收到接收方的報文,報文中指定接收窗口的大小為0,那么這是一個事件,發(fā)送方就會啟動一個探測定時器,來探測接收方什么時候能接收數(shù)據(jù),而定時器就可以產(chǎn)生超時對吧,每次超時就發(fā)送一個字節(jié)的數(shù)據(jù)給接收方,并且記錄超時的次數(shù)并且刷新定時器,如果在超時之前收到來自接收方的報文,報文中指定接收窗口的大小不為0,這也是一個事件,那么就關(guān)閉探測定時器,然后正常發(fā)送數(shù)據(jù)。當(dāng)然,如果超時次數(shù)到達(dá)極限,將終止 tcp連接或者是 reset

擁塞控制

在局域網(wǎng)中傳輸數(shù)據(jù)的話,僅使用流量控制就能達(dá)到速度匹配的結(jié)果,這種理想情況還是非常好的,但是實際情況中,在發(fā)送方和接收方之間存在多個路由器和速率較慢的鏈路時,就有可能出現(xiàn)一些問題。一些中間路由器可能緩存IP數(shù)據(jù)報,并有可能耗盡存儲器的空間,這就導(dǎo)致這些中間路由器不再接收IP數(shù)據(jù)報并轉(zhuǎn)發(fā),然后這些報文將被丟棄,而TCP協(xié)議發(fā)現(xiàn)被丟棄了又會重新發(fā)送,這種情況就導(dǎo)致越來越嚴(yán)重的問題——擁塞。就像過年時候回家的大塞車。

TCP協(xié)議的發(fā)展,有越來越多的控制算法來避免這些問題,比如慢啟動算法,擁塞避免,擁塞發(fā)生,快速恢復(fù)等算法,慢啟動為發(fā)送方的TCP增加了另一個窗口:擁塞窗口。當(dāng)與主機(jī)建立 TCP連接時,擁塞窗口被初始化為 1個報文段(即另一端通告的報文段大?。C渴盏揭粋€ ACK,擁塞窗口就增加一個報文段( 注意增加的不是字節(jié)而是報文段)。

簡單來說就是:發(fā)送方開始時發(fā)送一個報文段,然后等待 ACK。當(dāng)收到該 ACK時,擁塞窗口從 1增加為 2,即可以發(fā)送兩個報文段。當(dāng)收到這兩個報文段的 ACK時,擁塞窗口就增加為 4,這是一種指數(shù)增加的關(guān)系。

當(dāng)然啦,我這篇文章還是非常表面地介紹這些知識,更多詳細(xì)知識還是得看書!

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

    關(guān)注

    8

    文章

    1401

    瀏覽量

    80737
  • 傳輸數(shù)據(jù)
    +關(guān)注

    關(guān)注

    1

    文章

    127

    瀏覽量

    16325
  • 傳輸層協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    1364
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    LwIP中TCP協(xié)議是如何實現(xiàn)的

    與其他協(xié)議一樣,為了描述`TCP`協(xié)議,LwIP定義了一個名字叫`tcp_pcb`的結(jié)構(gòu)體,可以稱之為`TCP控制塊`,其內(nèi)定義了大量的成員
    的頭像 發(fā)表于 02-14 10:39 ?3722次閱讀

    42 第24講--基于TCP協(xié)議的遠(yuǎn)程更新 - 第3節(jié) #硬聲創(chuàng)作季

    TCP協(xié)議
    充八萬
    發(fā)布于 :2023年08月19日 12:09:56

    42 第24講--基于TCP協(xié)議的遠(yuǎn)程更新 - 第6節(jié) #硬聲創(chuàng)作季

    TCP協(xié)議
    充八萬
    發(fā)布于 :2023年08月19日 12:12:26

    tcp_ip 協(xié)議講座:介紹tcp協(xié)議的特性

    介紹了tcp協(xié)議的特性,連接的建立和終止
    的頭像 發(fā)表于 07-03 09:05 ?3105次閱讀

    TCP/IP協(xié)議進(jìn)階課程:TCP協(xié)議(2)

    TCP/IP協(xié)議進(jìn)階課程:6、TCP協(xié)議02
    的頭像 發(fā)表于 07-05 00:10 ?4526次閱讀

    TCP協(xié)議是不是快被UDP協(xié)議淘汰了

    TCP 協(xié)議可以說是今天互聯(lián)網(wǎng)的基石,作為可靠的傳輸協(xié)議,在今天幾乎所有的數(shù)據(jù)都會通過 TCP 協(xié)議傳輸,然而
    的頭像 發(fā)表于 02-07 15:39 ?3077次閱讀

    徹底弄懂TCP協(xié)議:從三次握手說起

    說到 TCP 協(xié)議,相信大家都比較熟悉了,對于 TCP 協(xié)議總能說個一二三來,但是 TCP 協(xié)議
    發(fā)表于 01-26 17:23 ?1次下載
    徹底弄懂<b class='flag-5'>TCP</b><b class='flag-5'>協(xié)議</b>:從三次握手說起

    ISO on TCP協(xié)議通信的連接配置

    使用ISO on TCP 協(xié)議通信,除了連接參數(shù)的定義不同,其它組態(tài)編程與 TCP 協(xié)議通信完全相同,見S7-1200 和 S7-1200 之間 T
    的頭像 發(fā)表于 07-21 10:41 ?3071次閱讀

    TCP協(xié)議原理詳解

    一個典型的使用TCP協(xié)議封裝的數(shù)據(jù)包,包括以太網(wǎng)MAC頭+網(wǎng)絡(luò)層IP數(shù)據(jù)頭+傳輸層TCP頭+要傳輸?shù)臄?shù)據(jù)。
    的頭像 發(fā)表于 04-21 12:41 ?2247次閱讀
    <b class='flag-5'>TCP</b><b class='flag-5'>協(xié)議</b>原理詳解

    Mobdus_TCP協(xié)議如何使用?

    網(wǎng)關(guān)支持標(biāo)準(zhǔn)的__Modbus-TCP__協(xié)議,支持Modbus-TCP協(xié)議的設(shè)備(例如智能儀表、電表等),都可以通過此協(xié)議直接通訊,實現(xiàn)遠(yuǎn)
    的頭像 發(fā)表于 08-16 16:57 ?1297次閱讀
    Mobdus_<b class='flag-5'>TCP</b><b class='flag-5'>協(xié)議</b>如何使用?

    TCP 協(xié)議的運作機(jī)制

    今天我們將 從穩(wěn)定性角度深挖 TCP 協(xié)議的運作機(jī)制 。 如今,大半個互聯(lián)網(wǎng)都建立在 TCP 協(xié)議之上,我們使用的 HTTP 協(xié)議、消息隊列
    的頭像 發(fā)表于 11-13 11:34 ?896次閱讀
    <b class='flag-5'>TCP</b> <b class='flag-5'>協(xié)議</b>的運作機(jī)制

    mqtt協(xié)議tcp協(xié)議區(qū)別

    MQTT協(xié)議TCP協(xié)議在設(shè)計和應(yīng)用上存在以下主要區(qū)別: 1. 起源與設(shè)計:MQTT協(xié)議誕生于1999年互聯(lián)網(wǎng)初期,而TCP
    的頭像 發(fā)表于 04-01 09:15 ?2355次閱讀

    TCP協(xié)議是什么

    在網(wǎng)絡(luò)通信的廣闊領(lǐng)域中,TCP(Transmission Control Protocol,傳輸控制協(xié)議)扮演著舉足輕重的角色。作為TCP/IP協(xié)議族中的核心
    的頭像 發(fā)表于 10-09 13:54 ?1706次閱讀

    什么是TCP協(xié)議及其工作原理

    在現(xiàn)代網(wǎng)絡(luò)通信中,數(shù)據(jù)的傳輸需要依賴于一套復(fù)雜的協(xié)議來確保數(shù)據(jù)的完整性和可靠性。TCP協(xié)議作為這些協(xié)議中的關(guān)鍵一環(huán),扮演著至關(guān)重要的角色。 TCP
    的頭像 發(fā)表于 01-22 09:41 ?1142次閱讀

    如何優(yōu)化TCP協(xié)議的性能

    優(yōu)化TCP協(xié)議的性能可以從多個方面入手,以下是一些關(guān)鍵的策略和方法: 一、調(diào)整TCP參數(shù) TCP窗口大小 : 重要性 :TCP窗口大小是衡量
    的頭像 發(fā)表于 01-22 09:52 ?836次閱讀