国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【科普系列】TCP 協議:數據傳輸的“可靠衛士”

北匯信息POLELINK ? 2025-10-22 10:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

d07aa460-aeeb-11f0-8ce9-92fbcf53809c.png

作者 | 雨田

小編 | CACTUS


在智能汽車加速邁入數字化的今天,車載以太網早已不是簡單的 “數據通道”,而是像縱橫交錯的城市快速路網絡,日夜承載著自動駕駛的決策指令、智能座艙的影音交互數據、云端互聯的實時路況信息 —— 這些數據洪流如同高速行駛的車流,一旦出現 “丟件”“堵車”,小則影響車機使用體驗,大則關乎自動駕駛的安全決策。而在這條 “信息高速公路” 上,有一位默默守護的 “衛士”,始終確保關鍵數據不丟失、不錯亂、準時抵達目的地,它就是我們今天要聊的核心 ——TCP 協議。


d0914986-aeeb-11f0-8ce9-92fbcf53809c.png

TCP 協議概念


TCP協議(Transmission Control Protocol,傳輸控制協議)是車載以太網中的核心組件之一,主要運行于OSI模型的傳輸層。作為一種面向連接、可靠且基于字節流的傳輸層通信協議,TCP憑借其多項關鍵機制包括三次握手、四次揮手、確認應答、超時重傳、滑動窗口、擁塞控制以及保活機制等有效保障了數據傳輸的可靠性與穩定性,確保數據在網絡中有序、無誤地傳輸。

d0a041f2-aeeb-11f0-8ce9-92fbcf53809c.png


d0adc4bc-aeeb-11f0-8ce9-92fbcf53809c.png

TCP報文結構


TCP協議報文也稱TCP報文段,是TCP通信的基本單元,一個TCP報文段由首部和數據兩部分組成,其中首部包含了必要的控制信息,確保數據的正確傳輸和連接管理,下圖是TCP報文結構,并對TCP首部進行了格式解析:

d0b7aff4-aeeb-11f0-8ce9-92fbcf53809c.png

端口號:占16 位,表示發送方的端口號,取值范圍0~65535;

目的端口號:占16位,表示接收方的端口號,取值范圍0~65535;

序列號:占32位,表示本報文段所發送的數據的第一個字節的序號,取值范圍0~2^32 – 1,當序號增加到2^32-1后,下一個序號就又回到0;

確認號:占32位,表示期望收到對方下一個報文段的第一個數據字節的序號;

首部長度:占4位,表示TCP首部數據長度,以4字節為單位計數,最大長度為60字節;

標志位:占6位,包括URG、ACK、PSH、RST、SYN、FIN 6個標志位;

URG:占1位,緊急指針標志,當URG被設置1時,緊急指針字段有效;

ACK:占1位,確認標志,當ACK被設置1時,確認號字段才有效;

PSH:占1位,推送標志,當收到TCP報文段中的PSH值為1時應盡快將數據傳遞給應用程序,不需要等到整個緩存都填滿后再向應用層傳遞;

RST:占1位,重置連接標志,當RST被置1時表示連接錯誤或者連接被拒絕;

SYN:占1位,同步標志,用于連接建立,當SYN被置1時表示一個連接請求或連接接收報文;

FIN:占1位,結束標志,用于關閉連接;

窗口大小:占16位,表示接收方希望一次接收多少字節;

檢驗和:占16位,用于校驗數據的完整性;

緊急指針:占16位,當URG標志置1時緊急指針才有效,緊急指針是一個正的偏移量,和序列號字段的值相加表示緊急數據最后一個字節的序號;

選項:可變長度,最大長度為40字節【計算方式 :首部總長度-20字節固定長度】,由于TCP首部的偏移單位為4 字節,當選項占用字節個數不是4字節的整數倍時,需要進行數據填充。

以下為Wireshark數據示例

d0c4af88-aeeb-11f0-8ce9-92fbcf53809c.png


d0d1f472-aeeb-11f0-8ce9-92fbcf53809c.png

TCP連接建立與終止


TCP協議是一種面向連接的協議,在進行數據傳輸之前,需通過三次握手建立連接,數據傳輸完成后,通過四次揮手斷開連接。

1.三次握手

1)第一次握手(SYN):客戶端向服務端發送一個SYN報文,并且會隨機生成一個客戶端的序列號(seq)。

2)第二次握手(SYN-ACK):服務端收到來自客戶端的SYN報文后也會生成一個隨機的序列號,同時也會計算出確認號(Ack),并通過SYN-ACK 報文發送給客戶端,該確認號(Ack)也會告知客戶端下一次期望接收到報文序列號是多少。

3)第三次握手(ACK):客戶端收到來自服務端的SYN-ACK 報文后,會發送一個ACK報文通知服務端,確認接收到了序列號并可以開始通信。


三次握手過程如圖所示,此過程確保了雙方都能確認對方的連接能力,從而建立起一個可靠的,雙向的通信通道。

d0df87a4-aeeb-11f0-8ce9-92fbcf53809c.png


2.四次揮手

1)第一次揮手(FIN):客戶端發送一條FIN報文,通知數據發送完畢,希望關閉連接。

2)第二次揮手(ACK):服務端回復一條ACK報文,確認收到了客戶端FIN報文,ACK報文中的確認號是收到FIN報文的序列號加1,表示所有數據已被接收。

3)第三次揮手(FIN):服務端發送完所有數據后,也會發送一條FIN報文給客戶端,通知數據發送完畢,準備關閉連接。

4)第四次揮手(ACK):客戶端回復一條ACK報文,確認收到了服務端的FIN報文,至此,連接完全關閉。


如下圖所示,四次揮手機制確保了雙方都有機會發送完所有數據,并且相互確認了對方的終止請求,從而實現了TCP連接的優雅關閉。

d0ec88dc-aeeb-11f0-8ce9-92fbcf53809c.png

在揮手過程中涉及到幾種狀態,如下所示:

d0f78d40-aeeb-11f0-8ce9-92fbcf53809c.png

ESTABLISHED狀態:已建立連接的狀態,可正常收發數據;

FIN-WAIT-1狀態:客戶端向服務端發送FIN報文后進入FIN-WAIT-1狀態,此狀態下可以接收數據,禁止發送新數據;

FIN-WAIT-2狀態:客戶端接收到ACK 報文后進入FIN-WAIT-2狀態,此狀態可以接收數據,停止發送新數據;

CLOSE-WAIT狀態:服務端發送ACK 后進入CLOSE-WAIT狀態,此狀態可以發送數據,停止接收新數據;

TIME-WAIT 狀態:客戶端接收到來自服務端FIN報文并返回ACK后進TIME-WAIT 狀態,該狀態持續時間為2MSL(Maximum Segment Lifetime,最大報文段生存時間);

LAST-ACK 狀態:服務端發送FIN報文后進入此狀態等待客戶端發送ACK報文;


d10545e8-aeeb-11f0-8ce9-92fbcf53809c.png

TCP的重要機制


1.確認應答與超時重傳

TCP 通過確認應答(ACK)實現可靠的數據傳輸,在建立TCP連接時會雙方都會產生一個屬于自己的序列號,當服務端收到數據后會根據seq信息判斷是否所期望的數據序號,判斷沒問題后會響應一條ACK 報文告知對方已發送成功。


如下圖所示:

d11298d8-aeeb-11f0-8ce9-92fbcf53809c.png

數據在網絡通道上傳輸常常會遇到突發情況,導致數據未發送到目的地,遇到這種情況TCP協議作為交通指揮官將會行使自己的超時重傳權力來處理突發狀況。如下兩種情景所示:


情景一:當客戶端在一定時間內沒有收到確認應答,會認為自己數據已經丟失并進行重傳。

如下圖所示:

d11fb19e-aeeb-11f0-8ce9-92fbcf53809c.png


情景二:服務端回復了確認應答,但是服務端在一定時間內并未收到,則客戶端也會進行重新發送。

如下圖所示:

d12eb2ac-aeeb-11f0-8ce9-92fbcf53809c.png

由以上兩種情景可知,當客戶端在一定時間內未接收到應答報文才會進行重傳,這個時間定義為超時重傳時間(RTO),如果重傳后還未接收到應答報文,則重傳時間為2*RTO,以此類推,每重傳一次RTO值會加倍,這種行為也稱為指針退避策略。


2.滑動窗口機制

通過TCP 的確認應答和超時重傳機制可知,每發一個TCP報文段時都要等待對方的應答報文,這樣的傳輸方式降低了網絡吞吐量,為了解決這個問題,TCP協議又增加一個滑動窗口功能。簡單的講,在服務端的窗口大小范圍內發送一個TCP報文段后不必要一直等待確認應答,而是可以繼續發送。

假設需要發送1000字節數據,TCP最大報文段為100字節,服務端窗口大小為400字節,數據該如何進行傳輸呢?


如下圖所示:

d15834b0-aeeb-11f0-8ce9-92fbcf53809c.png

服務端滑動窗口:當收到TCP報文段數據總長度為400字節時,已占滿了整個窗口大小,此時無法再接收其他數據,需要確認接收后才可以釋放一定的緩存空間。


如下圖所示:

d164725c-aeeb-11f0-8ce9-92fbcf53809c.png


客戶端滑動窗口:

d16ea812-aeeb-11f0-8ce9-92fbcf53809c.png


3.擁塞控制機制

通過滑動窗口、確認應答、超時重傳等機制都體現了TCP協議傳輸的可靠性,當網絡擁堵狀態下,由于客戶端接收不到確認應答報文會在一定時間內進行數據重傳,這樣反而加重了擁堵程度,而TCP的擁塞控制就是避免將過多的數據包被發送到網絡中,導致網絡擁堵和數據丟失,TCP擁塞控制算法包括以下四個主要部分:

(1)慢啟動

慢啟動為發送方的TCP增加了另一個窗口:擁塞窗口(congestion window),記為cwnd,當兩個主機建立TCP連接時,假定擁塞窗口被初始化為1個報文段(MSS)。發送方開始時發送一個報文段,然后等待ACK。當收到該ACK時,擁塞窗口從1增加為2, 即可以發送兩個報文段。當收到這兩個報文段的ACK時,擁塞窗口就增加為 4,這是一種指數增加的關系。

如下圖所示:

d179f9a6-aeeb-11f0-8ce9-92fbcf53809c.png

(2)擁塞避免

因慢啟動中擁塞窗口呈指數增長,當達到一定值時會再次造成網絡擁塞,為避免這種現象,將設置一個閾值,當達到閾值后擁塞窗口將進行緩慢增長,這種方法稱為擁塞避免算法,而這個閾值稱為慢啟動閾值(slow start threshold),記為ssthresh,擁塞避免算法需要維持兩個變量:一個擁塞窗口和一個慢 啟動閾值。

工作過程下圖所示:

d1890a40-aeeb-11f0-8ce9-92fbcf53809c.png

在該圖中,設置ssthresh初始值為16個報文段,在時刻0發送了一個報文段,在時刻1收到它的ACK,此時cwnd 增長為2,接著發送了2個報文段,并假定在時刻2接收到它們的ACK,于是cwnd增加為4(對每個ACK增加一次),這種指數增長方式一直進行到時刻3和4之間收到8個ACK后,cwnd等于ssthresh時才停止,從此刻起,cwnd以線性方式增長,在每個往返時間內最多增加一個報文段,假設在時刻4和5之間出現了超時情況,則重新進入慢啟動,此時cwnd 為1,ssthresh值更新為cwnd/2。

(3)快速重傳

客戶端如果連續收到3個或者3個以上的重復ACK,此時會認為某一報文段丟失并立刻進行重傳而不需要等待超時重傳的時間,這種策略稱為快速重傳算法。

如下圖所示:

d1951bdc-aeeb-11f0-8ce9-92fbcf53809c.png

1)客戶端發送數據Seq1,服務端接收到返回Ack2(希望下一個數據的Seq號信息2);

2)客戶端發送數據Seq2,因某種原因使其發送數據中斷無法到達;

3)客戶端繼續發送數據Seq3,因服務端未收到期望的Seq2的數據信息,繼續回復Ack2;

4)客戶端繼續發送Seq4,同理,服務端繼續回復Ack2;

5)當客戶端接收到三次重復的Ack2信息后確認發送數據Seq2丟失,客戶端重新發送Seq2,服務端接收到Seq2數據后,回復Ack5告知客戶端Seq1-Seq4數據段全部接收成功,期望下一次接收的數據信息為Seq5;

(4)快速恢復

當快速重傳之后,不經過慢啟動過程而直接進入擁塞避免階段,這就是快速恢復算法,未經過慢啟動的原因是因為接收方只有收到另一個報文段時才會產生重復的ACK,也說明了后續的報文段已經成功發送到服務端的緩存中,并不需要減少網絡上的數據流,快速恢復算法過程如下所示:

1)當收到第3個重復的ACK時,將ssthresh設置為當前擁塞窗口的一半,并重傳丟失的報文段,設置cwnd為ssthresh +3個報文段;

2)每次收到另一個重復的ACK時,cwnd增加一個報文段大小

3)當收到對丟失報文和其后若干報文段的累計確認后置cwnd=ssthresh,進入擁塞避免階段。

d1a108e8-aeeb-11f0-8ce9-92fbcf53809c.png


4.保活機制

保活機制(Keep-Alive) 是確保TCP連接處于活動狀態或者及時檢測并關閉空閑連接的一種方法。關于保活機制有以下幾個重要參數:

保活時間:處于非活動狀態的時間內

保活時間間隔:兩個保活探測報文的時間間隔

保活探測數:探測報文的最大次數

描述:如果在保活時間內連接處于非活動狀態,則TCP一端將會開啟保活機制向另一端發送保活探測報文,如果客戶端沒有收到響應報文,則經過保活時間間隔后會再次發送一條保活探測報文,直到發送次數達到保活探測數,此時將認為另一端不在線,并關閉TCP連接。保活探測報文的報文段長度為0或者包含一個字節的數據,序列號為對方主機最大應答號減1


TCP在車載以太網中扮演關鍵角色,通過連接管理、確認應答、超時重傳、擁塞控制等機制,實現數據的高效、可靠傳輸,其實現遵循國際標準文檔(如RFC793),從而保證不同廠商提供的TCP實現具備良好的互通性與兼容性,為OTA、診斷、信息 娛樂等核心功能提供了堅實的網絡基礎。

與此同時,OPEN聯盟發布了相應的測試規范,其中《OPEN Alliance Automotive Ethernet ECU Test Specification Layer 3-7》明確列出了TCP協議的測試項目,包括標志位測試、窗口測試、序列號測試等,為行業提供了統一的驗證依據。


北匯信息作為一家專注于汽車電子測試領域的企業,在車載以太網測試方面積累了豐富經驗。我們可提供專業的培訓、技術咨詢及完整的測試解決方案,協助汽車制造商與零部件供應商確保車載以太網系統的可靠性及安全性。如您需要具體的測試服務或希望了解更多信息,歡迎隨時聯系我們。

參考文獻:

【1】《TCP/IP詳解 卷1:協議》

【2】《車載以太網權威指南》

【3】《RFC 793文檔》


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據傳輸
    +關注

    關注

    9

    文章

    2201

    瀏覽量

    67579
  • TCP
    TCP
    +關注

    關注

    8

    文章

    1424

    瀏覽量

    83501
  • 車載以太網
    +關注

    關注

    19

    文章

    266

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    TCP協議保證數據傳輸可靠性的方式主要有什么

    的必要性(1)可靠地實現了TCP全雙工連接的終止(2)允許老的重復分節在網絡中的消逝(為什么需要2***)6、流量控制7、擁塞控制TCP協議保證數據
    發表于 12-22 08:03

    GPRS網絡上數據傳輸協議之討論

    摘要:本文將UDP與TCP兩種協議進行對比,從可靠性、適用性、資費等方面深入討論在GPRS網絡上,數據傳輸
    發表于 03-11 13:28 ?1565次閱讀
    GPRS網絡上<b class='flag-5'>數據傳輸</b><b class='flag-5'>協議</b>之討論

    tcp ip 數據傳輸

    tcp ip 數據傳輸 現有的許多具有串口管理功能的設備不能進行聯網的管理和數據存取,我們可以利用先進的TCP/IP技術和管理方式對
    發表于 12-25 12:59 ?1234次閱讀

    TCP/IP協議單片機在網絡通信中的數據傳輸技術

    介紹了嵌入式TCP/IP協議單片機在網絡通信中的數據傳輸技術。將TCP/IP協議嵌入式單片機中,借助網卡芯片CS8900實現了單片機在局域網
    發表于 04-16 22:04 ?4808次閱讀
    <b class='flag-5'>TCP</b>/IP<b class='flag-5'>協議</b>單片機在網絡通信中的<b class='flag-5'>數據傳輸</b>技術

    tcp_ip 協議講座:介紹數據傳輸

    介紹了tcp協議數據傳輸的問題(交互式數據傳輸,批量數據傳輸,流量控制,擁塞避免)
    的頭像 發表于 07-03 11:05 ?4230次閱讀
    <b class='flag-5'>tcp</b>_ip <b class='flag-5'>協議</b>講座:介紹<b class='flag-5'>數據傳輸</b>

    消息協議如何提高數據傳輸可靠

    串行端口是PIC與其他設備通信的最簡單方法之一。但是,事件串行端口存在缺陷,因此在本教程中,我們將了解消息協議如何提高數據傳輸可靠性。
    的頭像 發表于 08-01 16:48 ?3822次閱讀

    udp是什么協議 TCP與UDP的區別

    TCP協議提供可靠數據傳輸,UDP協議提供盡量高效的數據傳輸
    的頭像 發表于 06-26 17:47 ?1.3w次閱讀

    如何實現MQTT協議數據傳輸

    如何實現MQTT協議數據傳輸? 隨著物聯網技術的不斷發展,越來越多的設備和應用需要實現互聯互通。而MQTT作為一種輕量級的發布/訂閱消息傳輸協議,在物聯網領域應用廣泛,成為了許多設備之
    的頭像 發表于 11-15 17:23 ?1939次閱讀

    工業控制領域基于TCP/IP的數據傳輸方案

    電子發燒友網站提供《工業控制領域基于TCP/IP的數據傳輸方案.pdf》資料免費下載
    發表于 11-16 10:52 ?5次下載
    工業控制領域基于<b class='flag-5'>TCP</b>/IP的<b class='flag-5'>數據傳輸</b>方案

    讓“可靠”變得“更快更安全”的數據傳輸協議:SCTP

    SCTP(Stream Control Transmission Protocol,流控傳輸協議)的出現,并不是萬丈高樓平地起,而是站在TCP這個巨人肩膀上,讓數據傳輸從“
    的頭像 發表于 12-28 17:25 ?2752次閱讀
    讓“<b class='flag-5'>可靠</b>”變得“更快更安全”的<b class='flag-5'>數據傳輸</b><b class='flag-5'>協議</b>:SCTP

    DTU的多種協議,解鎖數據傳輸的無限可能

    DTU,即數據傳輸單元,是一種在物聯網(IoT)網絡中常用的設備,主要用于在傳感器和智能設備之間進行數據傳輸。DTU使用多種協議來實現這一目標,這些協議不僅提高了
    的頭像 發表于 03-01 11:00 ?2007次閱讀
    DTU的多種<b class='flag-5'>協議</b>,解鎖<b class='flag-5'>數據傳輸</b>的無限可能

    無線模塊通過TCP/IP協議實現與PC端的數據傳輸解析

    無線網絡中進行數據傳輸的設備。它通常集成了網絡接口層、傳輸層和應用層等多個功能模塊,以支持TCP/IP等網絡通信協議TCP/IP
    的頭像 發表于 06-15 16:16 ?1155次閱讀

    socket 數據傳輸效率提升技巧

    在現代網絡應用中,數據傳輸效率是衡量系統性能的關鍵指標之一。對于使用socket進行數據傳輸的應用,優化傳輸效率不僅可以提升用戶體驗,還能降低成本。 1. 選擇合適的傳輸
    的頭像 發表于 11-12 14:34 ?1918次閱讀

    PCIe數據傳輸協議詳解

    、網卡和聲卡等,以實現高效的數據傳輸。以下是對PCIe數據傳輸協議的介紹: 一、PCIe協議的基本概念 PCIe協議定義了一
    的頭像 發表于 11-26 16:12 ?6262次閱讀

    MPU數據傳輸協議詳解

    協議的基本概念 數據傳輸協議定義了數據在MPU和外部設備之間傳輸的方式,包括數據的格式、同步方式
    的頭像 發表于 01-08 09:37 ?1790次閱讀