色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

TCP和UDP如何實現可靠性傳輸

STM32嵌入式開發 ? 來源:博客園-ostin ? 2023-10-16 14:19 ? 次閱讀

一、udp與tcp的區別:

TCP(TransmissionControl Protocol 傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。

UDP是User Datagram Protocol,一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務。可靠性由上層應用實現,所以要實現udp可靠性傳輸,必須通過應用層來實現和控制。

二、TCP如何實現可靠性傳輸:

可靠性:

應用數據被分割成TCP認為最適合發送的數據塊。這和UDP完全不同,應用程序產生的數據長度將保持不變。由TCP傳遞給IP的信息單位稱為報文段或段(segment)。

當TCP發出一個段后,它啟動一個定時器,等待目的端確認收到這個報文段。如果不能及時收到一個確認,將重發這個報文段。當TCP收到發自TCP連接另一端的數據,它將發送一個確認。TCP有延遲確認的功能,在此功能沒有打開,則是立即確認。功能打開,則由定時器觸發確認時間點。

TCP將保持它首部和數據的檢驗和。這是一個端到端的檢驗和,目的是檢測數據在傳輸過程中的任何變化。如果收到段的檢驗和有差錯,TCP將丟棄這個報文段和不確認收到此報文段(希望發端超時并重發)。

既然TCP報文段作為IP數據報來傳輸,而IP數據報的到達可能會失序,因此TCP報文段的到達也可能會失序。如果必要,TCP將對收到的數據進行重新排序,將收到的數據以正確的順序交給應用層。

既然IP數據報會發生重復,TCP的接收端必須丟棄重復的數據。

TCP還能提供流量控制。TCP連接的每一方都有固定大小的緩沖空間。TCP的接收端只允許另一端發送接收端緩沖區所能接納的數據。這將防止較快主機致使較慢主機的緩沖區溢出。

重傳策略:

TCP協議用于控制數據段是否需要重傳的依據是設立重發定時器。在發送一個數據段的同時啟動一個重傳,如果在重傳超時前收到確認(Acknowlegement)就關閉該重傳,如果重傳超時前沒有收到確認,則重傳該數據段。在選擇重發時間的過程中,TCP必須具有自適應性。它需要根據互聯網當時的通信情況,給出合適的重發時間。

這種重傳策略的關鍵是對定時器初值的設定。采用較多的算法是Jacobson于1988年提出的一種不斷調整超時時間間隔的動態算法。其工作原理是:對每條連接TCP都保持一個變量RTT(Round Trip Time),用于存放當前到目的端往返所需要時間最接近的估計值。當發送一個數據段時,同時啟動連接的定時器,如果在定時器超時前確認到達,則記錄所需要的時間(M),并修正[2] RTT的值,如果定時器超時前沒有收到確認,則將RTT的值增加1倍。通過測量一系列的RTT(往返時間)值,TCP協議可以估算數據包重發前需要等待的時間。在估計該連接所需的當前延遲時通常利用一些統計學的原理和算法(如Karn算法),從而得到TCP重發之前需要等待的時間值。

窗口確認:

TCP的一項功能就是確保每個數據段都能到達目的地。位于目的主機的TCP服務對接受到的數據進行確認,并向源應用程序發送確認信息。使用數據報頭序列號以及確認號來確認已收到包含在數據段的相關的數據字節。

TCP在發回源設備的數據段中使用確認號,指示接收設備期待接收的下一字節。這個過程稱為期待確認。

源主機在收到確認消息之前可以傳輸的數據的大小稱為窗口大小。用于管理丟失數據和流量控制。

三、udp如何實現可靠性傳輸:

UDP它不屬于連接型協議,因而具有資源消耗小,處理速度快的優點,所以通常音頻視頻和普通數據在傳送時使用UDP較多,因為它們即使偶爾丟失一兩個數據包,也不會對接收結果產生太大影響。

傳輸層無法保證數據的可靠傳輸,只能通過應用層來實現了。實現的方式可以參照tcp可靠性傳輸的方式,只是實現不在傳輸層,實現轉移到了應用層。

實現確認機制、重傳機制、窗口確認機制。

如果你不利用Linux協議棧以及上層socket機制,自己通過抓包和發包的方式去實現可靠性傳輸,那么必須實現如下功能:

發送:包的分片、包確認、包的重發

接收:包的調序、包的序號確認

目前有如下開源程序利用udp實現了可靠的數據傳輸。分別為RUDP、RTP、UDT。

RUDP:

RUDP 提供一組數據服務質量增強機制,如擁塞控制的改進、重發機制及淡化服務器算法等,從而在包丟失和網絡擁塞的情況下, RTP 客戶機(實時位置)面前呈現的就是一個高質量的 RTP 流。在不干擾協議的實時特性的同時,可靠 UDP 的擁塞控制機制允許 TCP 方式下的流控制行為。

RTP:

實時傳輸協議(RTP)為數據提供了具有實時特征的端對端傳送服務,如在組播或單播網絡服務下的交互式視頻音頻或模擬數據。應用程序通常在 UDP 上運行 RTP 以便使用其多路結點和校驗服務;這兩種協議都提供了傳輸層協議的功能。但是 RTP 可以與其它適合的底層網絡或傳輸協議一起使用。如果底層網絡提供組播方式,那么 RTP 可以使用該組播表傳輸數據到多個目的地。

RTP 本身并沒有提供按時發送機制或其它服務質量(QoS)保證,它依賴于底層服務去實現這一過程。RTP 并不保證傳送或防止無序傳送,也不確定底層網絡的可靠性。RTP 實行有序傳送, RTP 中的序列號允許接收方重組發送方的包序列,同時序列號也能用于決定適當的包位置,例如:在視頻解碼中,就不需要順序解碼。

UDT:

基于UDP的數據傳輸協議(UDP-basedData Transfer Protocol,簡稱UDT)是一種互聯網數據傳輸協議。UDT的主要目的是支持高速廣域網上的海量數據傳輸,而互聯網上的標準數據傳輸協議TCP在高帶寬長距離網絡上性能很差。顧名思義,UDT建于UDP之上,并引入新的擁塞控制和數據可靠性控制機制。UDT是面向連接的雙向的應用層協議。它同時支持可靠的數據流傳輸和部分可靠的數據報傳輸。由于UDT完全在UDP上實現,它也可以應用在除了高速數據傳輸之外的其它應用領域,例如點到點技術(P2P),防火墻穿透,多媒體數據傳輸等等。

因項目中的需要,現在詳細分析一下UDT是如何通過udp實現數據的可靠傳輸。通過閱讀源碼的方式。

四、UDT原理分析:

主要通過分析源碼來弄清楚如何利用udp實現數據的可靠性傳輸,主要按照協議格式、關鍵數據結構等展開。

UDT應用層協議:

UDT并不是在瓶勁帶寬相對較小的和大量多元短文檔流的情況下用來取代TCP的。

UDT主要作為TCP的朋友,和TCP并存,UDT分配的帶寬不應該超過根據MAX-MIN規則的最大最小公平共享原則。(備注,最大最小規則允許UDT在高BDP連接下分配TCP不能使用的可用帶寬)。

UDT是雙工的,每個UDT實體有兩個部分:發送和接收。

發送者根據流量控制和速率控制來發送(和重傳)應用程式數據。

接收者接收數據包和控制包,并根據接收到的包發送控制包。發送和接收程式共享同一個UDP端口來發送和接收。

接收者也負責觸發和處理任何的控制事件,包括擁塞控制和可靠性控制和他們的相對機制,例如RTT估計、帶寬估計、應答和重傳。

UDT總是試著將應用層數據打包成固定的大小,除非數據不夠這么大。和TCP相似的是,這個固定的包大小叫做MSS(最大包大小)。由于期望UDT用來傳輸大塊數據流,我們假定只有很小的一部分不規則的大小的包在UDT session中。MSS能夠通過應用程式來安裝,MTU是其最優值(包括任何包頭)。

UDT擁塞控制算法將速率控制和窗口(流量控制)合并起來,前者調整包的發送周期,后者限制最大的位被應答的包。在速率控制中使用的參數通過帶寬估計技術來更新,他繼承來自基于接收的包方法。同時,速率控制周期是估計RTT的常量,流控制參數依賴于對方的數據到達速度,另外接收端釋放的緩沖區的大小。

報文類型及格式:

UDT有兩種包:數據包和控制包。他們通過包頭的第一位來區分(標志位)。如果是0,表示是數據包,1表示是控制包。

數據包:

數據包結構如下顯示:

wKgZomUs1jCAAkhSAAAw0Vvupm8819.png

包序號是UDT數據包頭中唯一的內容。它是一個無符號整數,使用標志位后的31位,UDT使用包基礎的需要,例如,每個非重傳的包都增加序號1。序號在到達最大值2^31-1的時候覆蓋。緊跟在這些數據后面的是應用程序數據。

控制包:

控制包結構如下:

wKgZomUs1jCAJrtyAAA6xpS3yHw221.png

有6種類型的控制包在UDT中,bit1-3表示這些信息。前32位在包頭中必須存在。控制信息字段包括0(例如,它不存在)或者多個32位無符號整數,這由包類型決定。

UDT使用應答子序號的方法。每個ACK/ACK2包有一個無符號的16位序號,它獨立于數據包需要。它使用位16-31。應答需要從0到(2^16-1)。位16-31在其他控制包中沒有定義。

wKgaomUs1jCAEliCAABQ-krFD3I305.png

注意,對于數據和控制包來說,可以從UDP協議頭中得到實際的包大小。包大小信息能被用來得到有效的數據負載和NAK包中的控制信息字段大小。

定時器:

UDT在接收端使用4個定時器來觸發不同的周期事件,包括速率控制、應答、丟失報告(negative應答)和重傳/連接維護。

UDT中的定時器使用系統時間作為源。UDT接收端主動查詢系統時間來檢查一個定時器是否過期。對于某個定時器T來說,其擁有周期TP,將定變量t用來記錄最近T被設置或復位的時間。如果T在系統時間t0(t= t0)被復位,那么任何t1(t1-t>=TP)是T過期的條件。

四個定時器是:RC定時器、ACK定時器、NAK定時器、EXP定時器。他們的周期分別是:RCTP、ATP、NTP、ETP。

RC定時器用來觸發周期性的速率控制。ACK定時器用來觸發周期性的有選擇的應答(應答包)。RCTP和ATP是常量值,值為:RCTP=ATP=0.01秒。

NAK被用來觸發negative應答(NAK包)。重傳定時器被用來觸發一個數據包的重傳和維護連接狀態。他們周期依賴于對于RTT的估計。ETP值也依賴于連續EXP時間溢出的次數。推薦的RTT初始值是0.1秒,而NTP和ETP的初始值是:NTP=3RTT,ETP=3RTT+ATP。

在每次bounded UDP接收操作(如果收到一個UDP包,一些額外的必須的數據處理時間)時查詢系統時間來檢查四個定時器是否已經過期。推薦的周期粒度是微秒。UDP接收時間溢出值是實現的一個選擇,這依賴于循環查詢的負擔和事件周期精確度之間的權衡。

速率控制事件更新包發送周期,UDT發送端使用STP來安排數據包的發送。假定一個在時間t0被發送,那么下一次包發送時間是(t0+ STP)。換句話說,如果前面的包發送花費了t’時間,發送端將等待(STP-t’)來發送下一個數據包(如果STP-t’ <0,就不需要等待了)。這個等待間隔需要一個高精確度的實現,推薦使用CPU時鐘周期粒度。

最簡單的方式是在應用層模仿傳輸層TCP的可靠性傳輸。下面不考慮擁塞處理,談談自己的個人簡單粗暴的設計:

1、添加seq/ack機制,確保數據發送到對端。

2、添加發送和接收緩沖區,主要是用戶超時重傳。

3、添加超時重傳機制。

發送端發送數據時,生成一個隨機seq=x,然后每一片按照數據大小分配seq。數據到達接收端后接收端放入緩存,并發送一個ack=x的包,表示對方已經收到了數據。發送端收到了ack包后,刪除緩沖區對應的數據。

時間到后,定時任務檢查是否需要重傳數據。

如下是tcp的確認機制

wKgaomUs1jCAYD0VAAJBFY_HNAo095.png

審核編輯:湯梓紅

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

    關注

    28

    文章

    922

    瀏覽量

    40583
  • 定時器
    +關注

    關注

    23

    文章

    3259

    瀏覽量

    115890
  • TCP
    TCP
    +關注

    關注

    8

    文章

    1389

    瀏覽量

    79631
  • UDP
    UDP
    +關注

    關注

    0

    文章

    329

    瀏覽量

    34162
  • 傳輸層
    +關注

    關注

    0

    文章

    30

    瀏覽量

    10968

原文標題:UDP實現可靠性傳輸,附項目鏈接

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    通信必備知識!TCPUDP協議介紹及使用

    TCPUDP是兩個最常用的通訊協議。TCP是面向連接的協議,需要在收發數據前與對方建立可靠的連接,建立連接的過程為3次握手,斷開連接的過程為4次揮手,確保數據
    的頭像 發表于 03-15 08:19 ?2112次閱讀
    通信必備知識!<b class='flag-5'>TCP</b>與<b class='flag-5'>UDP</b>協議介紹及使用

    求助關于TCP/UDP傳輸的問題

    本帖最后由 思想的小魚 于 2016-5-20 10:47 編輯 樓主完成了UDPTCP傳輸的模塊,但目的是實現UDP
    發表于 05-20 10:43

    TCPUDP有哪些不同

    TCP:為應用程序提供可靠的通信連接。適合于一次傳輸大批數據的情況。并適用于要求得到響應的應用程序。UDP:提供了無連接通信,且不對傳送包進行可靠性
    發表于 11-04 06:47

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

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

    TCP協議如何保證可靠性

    strcpy()函數標準該如何去實現呢?TCP協議如何保證可靠性呢?
    發表于 12-24 06:10

    TCPUDP的區別分析

      傳輸層協議主要有TCPUDPUDP提供無連接的通信,不能保證數據包被發送到目標地址,典型的即時傳輸少量數據的應用程序通常使用
    發表于 09-18 10:29 ?2次下載

    tcpudp的應用場景

    從特點上我們已經知道,TCP可靠的但傳輸速度慢 ,UDP 是不可靠的但傳輸速度快。因此在選用
    發表于 12-08 10:16 ?1.5w次閱讀
    <b class='flag-5'>tcp</b>和<b class='flag-5'>udp</b>的應用場景

    tcpudp協議的異同

    UDP 協議 UDP 協議是無連接、不可靠的一個傳輸層協議。下圖是 UDP 數據報格式。 端口號用來區分發送進程和接收進程。
    的頭像 發表于 11-12 14:45 ?4190次閱讀
    <b class='flag-5'>tcp</b>和<b class='flag-5'>udp</b>協議的異同

    UDP能否像TCP一樣實現可靠傳輸

    UDP (User Datagram Protocol)是一種無連接的協議,基于數據報的傳輸方式。在網絡通信中,它通常用于快速傳輸數據包,但卻無法保證數據包的可靠
    的頭像 發表于 06-05 09:48 ?760次閱讀
    <b class='flag-5'>UDP</b>能否像<b class='flag-5'>TCP</b>一樣<b class='flag-5'>實現</b><b class='flag-5'>可靠</b><b class='flag-5'>傳輸</b>?

    UDP一定比TCP更快嗎?什么情況下用UDP會更慢?

    當談到網絡傳輸時,大多數人可能認為TCP是最好的選擇。因為TCP是一種可靠的協議,它可以確保數據的可靠性和完整
    的頭像 發表于 04-03 09:38 ?1740次閱讀
    <b class='flag-5'>UDP</b>一定比<b class='flag-5'>TCP</b>更快嗎?什么情況下用<b class='flag-5'>UDP</b>會更慢?

    UDP能否像TCP一樣實現可靠傳輸

    連接的協議,基于字節流的傳輸方式。它通過確認和重傳等機制來保證數據的完整和順序實現數據包的可靠傳輸
    的頭像 發表于 06-08 14:50 ?1005次閱讀
    <b class='flag-5'>UDP</b>能否像<b class='flag-5'>TCP</b>一樣<b class='flag-5'>實現</b><b class='flag-5'>可靠</b><b class='flag-5'>傳輸</b>?

    udp是什么協議 TCPUDP的區別

    TCP協議提供可靠的數據傳輸UDP協議提供盡量高效的數據傳輸TCP協議通過使用序列號、確認應
    的頭像 發表于 06-26 17:47 ?1.2w次閱讀

    如何選擇傳輸層協議?TCPUDP的優缺點和適用場合

    可靠性至關重要。本文將詳細介紹TCPUDP的優缺點以及適用場合。 1. TCP的優點和適用場合: TCP是一種
    的頭像 發表于 12-11 11:42 ?1188次閱讀

    UDPTCP的主要區別 UDP能否像TCP一樣實現可靠傳輸

    UDPTCP的主要區別 UDP能否像TCP一樣實現可靠傳輸
    的頭像 發表于 01-22 16:10 ?920次閱讀

    TCP協議與UDP協議的區別

    1. 連接 TCP傳輸控制協議) : 面向連接 :在數據傳輸之前,TCP需要建立一個連接,這通過三次握手過程完成。
    的頭像 發表于 01-22 09:44 ?238次閱讀
    主站蜘蛛池模板: 亚洲欧洲日本无在线码播放 | 一个人在线观看免费高清视频在线观看 | WWW国产亚洲精品久久 | 亚洲欧美日韩精品自拍 | 国产精品免费一区二区区 | 全球真实小U女视频合集 | 国产成人免费a在线视频app | 久久青草热热在线精品 | 国产成人免费视频 | 青青视频国产色偷偷 | 午夜福利影院私人爽爽 | 国产精亚洲视频综合区 | 久久久久国产精品美女毛片 | 国产成人拍精品视频网 | 国产Av男人的天堂精品良久 | 久久99AV无色码人妻蜜柚 | 国产亚洲精品久久久久久久软件 | 我强进了老师身体在线观看 | 美女裸露100%奶头视频 | 仓井空torrent | 久9视频这里只有精品123 | 免费看国产曰批40分钟 | 亚洲国产女人aaa毛片在线 | 国产精品久久久久久人妻香蕉 | 日本精品久久久久中文字幕2 | 久久久影院亚洲精品 | 全黄H全肉禁乱公 | 欧美 亚洲 日韩 中文2019 | 中文字幕不卡在线视频 | h片下载地址 | 国产乱子影视频上线免费观看 | 亚洲精品欧美精品中文字幕 | 一区二区视频在线观看高清视频在线 | 福利一区福利二区 | 国产人成精品综合欧美成人 | 好硬好湿好爽再深一点视频 | 99久久国产综合精品网成人影院 | 午夜伦午夜伦锂电影 | 麻豆国产精品va在线观看约 | 嫩草影院在线观看精品 | 黑色丝袜美腿美女被躁翻了 |