1、tcp如何實現可靠性傳輸?
確認機制、重傳機制、滑動視窗。
1.1可靠性
1.應用資料被分割成tcp認為最適合傳送的資料塊。這和udp完全不同,應用程式產生的資料長度將保持不變。由tcp傳遞給ip的資訊單位稱為報文段或段
2.當tcp發出乙個段後,它啟動乙個定時器,等待目的端確認收到這個報文段。如果不能及時收到乙個確認,將重發這個報文段。當tcp收到發自tcp連線另一端的資料,它將傳送乙個確認。tcp有延遲確認的功能,在此功能沒有開啟,則是立即確認。功能開啟,則由定時器觸發確認時間點。
3.tcp將保持它首部和資料的檢驗和。這是乙個端到端的檢驗和,目的是檢測資料在傳輸過程中的任何變化。如果收到段的檢驗和有差錯,tcp將丟棄這個報文段和不確認收到此報文段(希望發端超時並重發)。
4.既然tcp報文段作為ip資料報來傳輸,而ip資料報的到達可能會失序,因此tcp報文段的到達也可能會失序。如果必要,tcp將對收到的資料進行重新排序,將收到的資料以正確的順序交給應用層。
5.既然ip資料報會發生重複,tcp的接收端必須丟棄重複的資料。
6.tcp還能提供流量控制。tcp連線的每一方都有固定大小的緩衝空間。tcp的接收端只允許另一端傳送接收端緩衝區所能接納的資料。這將防止較快主機致使較慢主機的緩衝區溢位。
1.2重傳策略
tcp協議用於控制資料段是否需要重傳的依據是設立重發定時器。在傳送乙個資料段的同時啟動乙個重傳,如果在重傳超時前收到確認(acknowlegement)就關閉該重傳,如果重傳超時前沒有收到確認,則重傳該資料段。在選擇重發時間的過程中,tcp必須具有自適應性。它需要根據網際網路當時的通訊情況,給出合適的重發時間。
這種重傳策略的關鍵是對定時器初值的設定。採用較多的演算法是jacobson於2023年提出的一種不斷調整超時時間間隔的動態演算法。其工作原理是:對每條連線tcp都保持乙個變數rtt(round trip time),用於存放當前到目的端往返所需要時間最接近的估計值。當傳送乙個資料段時,同時啟動連線的定時器,如果在定時器超時前確認到達,則記錄所需要的時間(m),並修正[2] rtt的值,如果定時器超時前沒有收到確認,則將rtt的值增加1倍。通過測量一系列的rtt(往返時間)值,tcp協議可以估算資料報重發前需要等待的時間。在估計該連線所需的當前延遲時通常利用一些統計學的原理和演算法(如karn演算法),從而得到tcp重發之前需要等待的時間值。
1.3視窗確認
tcp的一項功能就是確保每個資料段都能到達目的地。位於目的主機的tcp服務對接受到的資料進行確認,並向源應用程式傳送確認資訊。使用資料報頭序列號以及確認號來確認已收到包含在資料段的相關的資料位元組。
tcp在發回源裝置的資料段中使用確認號,指示接收裝置期待接收的下一位元組。這個過程稱為期待確認。
源主機在收到確認訊息之前可以傳輸的資料的大小稱為視窗大小。用於管理丟失資料和流量控制。
2、udp如何實現可靠性傳輸?
傳輸層無法保證資料的可靠傳輸,只能通過應用層來實現了。實現的方式可以參照tcp可靠性傳輸的方式,只是實現不在傳輸層,實現轉移到了應用層。
實現確認機制、重傳機制、視窗確認機制。
如果你不利用linux協議棧以及上層socket機制,自己通過抓包和發包的方式去實現可靠性傳輸,那麼必須實現如下功能:
傳送:包的分片、包確認、包的重發
接收:包的調序、包的序號確認
目前有如下開源程式利用udp實現了可靠的資料傳輸。分別為rudp、rtp、udt。
2.1rudp
rudp 提供一組資料服務質量增強機制,如擁塞控制的改進、重發機制及淡化伺服器演算法等,從而在包丟失和網路擁塞的情況下, rtp 客戶機(實時位置)面前呈現的就是乙個高質量的 rtp 流。在不干擾協議的實時特性的同時,可靠 udp 的擁塞控制機制允許 tcp 方式下的流控制行為。
2.2rtp
2.3udt
基於udp的資料傳輸協議(udp-baseddata transfer protocol,簡稱udt)是一種網際網路資料傳輸協議。udt的主要目的是支援高速廣域網上的海量資料傳輸,而網際網路上的標準資料傳輸協議tcp在高頻寬長距離網路上效能很差。顧名思義,udt建於udp之上,並引入新的擁塞控制和資料可靠性控制機制。udt是面向連線的雙向的應用層協議。它同時支援可靠的資料流傳輸和部分可靠的資料報傳輸。由於udt完全在udp上實現,它也可以應用在除了高速資料傳輸之外的其它應用領域,例如點到點技術(p2p),防火牆穿透,多**資料傳輸等等。
TCP如何實現可靠傳輸
1 tcp面向連線 udp無連線 2 tcp保證資料的可靠傳輸,資料傳送無差錯,不丟失,無重複,按序到達 udp不保證可靠交付 3 tcp連線一對一 udp支援更廣泛 4 udp實時性好,效率高,適用場景 短訊息傳輸,大量客戶端,對資料安全性要求不高但實時性要求高 5 tcp面向資料流 udp面向資...
TCP協議如何實現可靠傳輸
1.可靠傳輸的工作原理 停止等待協議 1.使用確認和重傳機制,我們就可以在不可靠的傳輸網路上實現可靠的通訊 2.這種可靠傳輸協議常稱為自動重傳請求arq automatic repeat request 3.arq表明重傳的請求是自動進行的,接收方不需要請求傳送重傳某個出錯的分組。2.停止等待協議的...
如何實現udp的可靠傳輸
傳輸層無法保證資料的可靠傳輸,只能通過應用層來實現了。實現的方式可以參照tcp可靠性傳輸的方式,只是實現不在傳輸層,實現轉移到了應用層。最簡單的方式是在應用層模仿傳輸層tcp的可靠性傳輸。下面不考慮擁塞處理,可靠udp的簡單設計。1 新增seq ack機制,確保資料傳送到對端 2 新增傳送和接收緩衝...