Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Tu je návod, ako môžete pridať spoľahlivosť k protokolu bez pripojenia, ako je UDP:
* kontrolné súčty/crc: Tieto sa už bežne používajú v UDP na detekciu korupcie údajov. Ak kontrolný súčet nezodpovedá, prijímač zlikviduje poškodený paket. To nezaručuje doručenie, ale zabezpečuje integritu údajov.
* Sekvenčné čísla: Každému paketu priraďte jedinečné číslo sekvencie. Prijímač si potom môže správne objednať pakety, aj keď dostanú z poriadku. To sa zaoberá presadzovaním, čo je spoločný problém s UDP.
* Poďakovanie (ACKS): Prijímač odošle paket potvrdenia (ACK) pre každý správne prijatý a objednaný paket. Ak odosielateľ nedostane ACK v období časového limitu, prehodnocuje paket. To je rozhodujúce pre zabezpečenie spoľahlivého dodania.
* časovače a opakovania: Odosielateľ potrebuje časovače, aby sledoval čas od odoslania paketu. Ak platnosť časového limitu vyprší bez prijatia ACK, odosielateľ opakovane paket. Vhodné hodnoty časového limitu sú nevyhnutné, aby sa predišlo zbytočným opakovaným prenosom a zároveň zabezpečili včasné doručenie.
* okno (voliteľné, ale efektívne): Na zlepšenie efektívnosti môžete implementovať posuvné okno. To umožňuje odosielateľovi odosielať viac paketov pred čakaním na ACK, čím sa zlepšila priepustnosť. Spravovanie veľkosti okna a potvrdenia manipulácie sa však stáva zložitejšou.
* Selektívne poďakovanie (vrecia) (voliteľné, zlepšuje účinnosť): Namiesto toho, aby ste iba potvrdili posledný správne prijatý paket, vrecia určujú rozsah správne prijatých paketov. To umožňuje efektívnejšie opakované opakovanie iba stratených paketov, čím sa zabráni zbytočným opakovaniu.
Príklad implementácie (konceptuálne):
Predstavte si jednoduchú aplikáciu postavenú na vrchole UDP na spoľahlivé odosielanie súborov.
1. odosielateľ: Rozdeľuje súbor na pakety, pridáva sekvenčné čísla a kontrolné súčty do každého paketu. Odosiela pakety a začína časovač pre každý. Po časovom limite sa prehodnocuje paket. Čaká tiež na Acks.
2. prijímač: Prijíma pakety, kontroluje kontrolné súčty. Ak je paket platný, pošle ACK. Ak sú pakety mimo prevádzky, vyrovnáva ich, až kým chýbajúce pakety neprídu alebo nie sú opakované. Ak je paket poškodený, zlikviduje ho a neposiela ACK pre toto sekvenčné číslo.
Obmedzenia:
Dokonca aj s týmito dodatkami nebude implementácia „spoľahlivej UDP“ úplne spoľahlivá tvárou v tvár preťaženiu siete alebo úplným zlyhaniam siete. Pridaná zložitosť tiež zavádza režijné náklady, čím sa v prvom rade znižuje výhody výkonu pri používaní UDP. TCP už tieto funkcie poskytuje natívne a efektívnejšie.
Stručne povedané, môžete * simulovať * spoľahlivosť nad UDP, ale v podstate budujete základný TCP na vrchu UDP. Vo všeobecnosti sa neodporúča, pokiaľ nemáte veľmi špecifické dôvody, aby ste sa vyhli TCP, ako napríklad potreba veľmi nízkej latencie za cenu spoľahlivosti.