如何提高UDP的可靠性
TCP是通過確認(rèn)機(jī)制和超時(shí)重傳機(jī)制實(shí)現(xiàn)可靠傳輸
?
UDP
UDP它不屬于連接型協(xié)議,因而具有資源消耗小,處理速度快的優(yōu)點(diǎn),所以通常音頻、視頻和普通數(shù)據(jù)在傳送時(shí)使用UDP較多,因?yàn)樗鼈兗词古紶杹G失一兩個(gè)數(shù)據(jù)包,也不會對接收結(jié)果產(chǎn)生太大影響。傳輸層無法保證數(shù)據(jù)的可靠傳輸,只能通過應(yīng)用層來實(shí)現(xiàn)了。實(shí)現(xiàn)的方式可以參照tcp可靠性傳輸?shù)姆绞?#xff0c;只是實(shí)現(xiàn)不在傳輸層,實(shí)現(xiàn)轉(zhuǎn)移到了應(yīng)用層。
關(guān)鍵在于兩點(diǎn),從應(yīng)用層角度考慮:
1 提供超時(shí)重傳,能避免數(shù)據(jù)報(bào)丟失。
2 提供確認(rèn)序列號,可以對數(shù)據(jù)報(bào)進(jìn)行確認(rèn)和排序。
?
本端:首先在UDP數(shù)據(jù)報(bào)定義一個(gè)首部,首部包含確認(rèn)序列號和時(shí)間戳,時(shí)間戳是用來計(jì)算RTT(數(shù)據(jù)報(bào)傳輸?shù)耐禃r(shí)間),從何計(jì)算出合適的RTO(重傳的超時(shí)時(shí)間)。然后以等-停的方式發(fā)送數(shù)據(jù)報(bào),即收到對端的確認(rèn)之后才發(fā)送下一個(gè)的數(shù)據(jù)報(bào)。當(dāng)時(shí)間超時(shí),本端重傳數(shù)據(jù)報(bào),同時(shí)RTO擴(kuò)大為原來的兩倍,重新開始計(jì)時(shí)。
?
對端:接受到一個(gè)數(shù)據(jù)報(bào)之后取下該數(shù)據(jù)報(bào)首部的時(shí)間戳和確認(rèn)序列號,并添加本端的確認(rèn)數(shù)據(jù)報(bào)首部之后發(fā)送給對端。根據(jù)此序列號對已收到的數(shù)據(jù)報(bào)進(jìn)行排序并丟棄重復(fù)的數(shù)據(jù)報(bào)。
轉(zhuǎn)載于:https://www.cnblogs.com/home123/p/7499608.html
總結(jié)
以上是生活随笔為你收集整理的如何提高UDP的可靠性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 总结第九天
- 下一篇: 软件工程---在此基础上,进行软件的改进