Sloj | Protokol |
---|---|
Aplikacijski | DNS, DHCP, TLS/SSL, TFTP, FTP, HTTP, IMAP, IRC, NNTP, POP3, SIP, SMTP, SNMP, SSH, Telnet, BitTorrent, RTP, rlogin, … |
Transportni | TCP, UDP, DCCP, SCTP, IL, RUDP, |
Mrežni | IP (IPv4, IPv6), ICMP, IGMP, ARP, RARP, … |
Podatkovni | Ethernet, Wi-Fi, Token ring, PPP, SLIP, FDDI, ATM, DTM, Frame Relay, SMDS, … |
RUDP (engl. Reliable User Datagram Protocol) je protokol transportnog sloja koji je dizajniran u Bell Labs za operacijski sustav Plan 9. Cilj mu je pružiti rješenje gdje je UDP previše primitivan jer je poželjna isporuka paketa s jamstvom redoslijeda, ali TCP dodaje previše složenosti/overheada.[1][2]
Povijest
RUDP je nastao kao dio TCP/IP skupa protokola koji omogućuju komunikaciju između računala na mreži. TCP/IP se sastoji od četiri sloja:
- mrežnog sloja,
- internetskog sloja,
- transportnog sloja, i
- aplikacijskog sloja.
Mrežni sloj se bavi fizičkim prijenosom podataka između računala, internetski sloj se bavi adresiranjem i usmjeravanjem paketa, transportni sloj se bavi pouzdanošću i redoslijedom paketa, a aplikacijski sloj se bavi specifičnim protokolima za različite vrste komunikacije.
Sloj | Naziv | Primjeri protokola |
---|---|---|
Mrežni | Fizički i veznik | Ethernet, Wi-Fi, PPP |
Internetski | IP | IPv4, IPv6 |
Transportni | TCP i UDP | TCP, UDP, RUDP |
Aplikacijski | HTTP, FTP, SMTP | HTTP, FTP, SMTP, DNS |
Transportni sloj nudi dva osnovna protokola: TCP i UDP. TCP je pouzdan i orijentiran na vezu protokol koji jamči da će svi paketi doći do odredišta u ispravnom redoslijedu i bez grešaka. TCP koristi mehanizme kao što su potvrde (engl. acknowledgments), ponovna slanja (engl. retransmissions), kontrola zagušenja (engl. congestion control) i klizni prozor (engl. sliding window) kako bi postigao pouzdanost. Međutim, TCP ima i neke nedostatke kao što su visoki overhead, velika latencija (engl. delay) i osjetljivost na gubitak veze.
UDP je nepouzdan i neorijentiran na vezu protokol koji ne jamči ništa o isporuci paketa. UDP samo dodaje izvor i odredište portove na podatke koje šalje na internetski sloj. UDP nema mehanizme za potvrde, ponovna slanja, kontrolu zagušenja ili klizni prozor. Prednosti UDP-a su niski overhead, mala latencija i neovisnost o stanju veze.
RUDP je protokol koji pokušava pronaći sredinu između TCP-a i UDP-a. RUDP koristi UDP kao osnovu, ali dodaje neke značajke koje poboljšavaju pouzdanost i redoslijed paketa. RUDP koristi klizni prozor za kontrolu protoka podataka, potvrde za potvrdu primitka paketa i ponovna slanja za oporavak od gubitka paketa. RUDP također podržava višestruke veze (engl. multiplexing) između istih portova i opcionalne checksume za provjeru integriteta podataka.
Funkcioniranje
RUDP se sastoji od tri glavne komponente: segmenta, veze i sesije. Segment je jedinica podataka koju RUDP šalje ili prima preko UDP-a. Segment se sastoji od zaglavlja i tereta (engl. payload). Zaglavlje sadrži sljedeće polja:
Polje | Veličina (bajtovi) | Opis |
---|---|---|
Verzija | 1 | Označava verziju RUDP protokola |
Zastavice | 1 | Označavaju različite opcije kao što su checksum, potvrda, reset i završetak |
Prozor | 2 | Označava veličinu kliznog prozora u broju segmenata |
Sekvenca | 4 | Označava redni broj segmenta |
Potvrda | 4 | Označava redni broj sljedećeg očekivanog segmenta |
Checksum | 2 (opcionalno) | Sadrži kontrolnu sumu za provjeru grešaka |
Teret | Varijabilno | Sadrži korisne podatke |
Veza je logička veza između dva RUDP krajnjaka (engl. endpoints). Veza se uspostavlja slanjem segmenta s zastavicom potvrde i reset. Veza se završava slanjem segmenta s zastavicom završetka. Veza ima stanje koje se sastoji od sljedećih varijabli:Veza je logička veza između dva RUDP krajnjaka (engl. endpoints). Veza se uspostavlja slanjem segmenta s zastavicom potvrde i reset. Veza se završava slanjem segmenta s zastavicom završetka. Veza ima stanje koje se sastoji od sljedećih varijabli:
Prijenos:- Ako je sljedeći za slanje manji ili jednak od posljednjeg poslanog plus lokalni prozor, pošalji segment s rednim brojem sljedeći za slanje i povećaj ga za jedan.
- Ako je primljena potvrda s rednim brojem većim od posljednjeg poslanog, ažuriraj udaljeni prozor i ponovi korak 1.
- Ako je isteklo vrijeme čekanja (engl. timeout) za segment s rednim brojem manjim ili jednakim od posljednjeg poslanog, ponovno pošalji taj segment i ponovi korak 2.
- Ako je primljen segment s rednim brojem jednakim sljedećem za primanje, isporuči teret aplikaciji, pošalji potvrdu s rednim brojem sljedećeg za primanje plus jedan i povećaj ga za jedan.
- Ako je primljen segment s rednim brojem manjim od sljedećeg za primanje, pošalji potvrdu s rednim brojem sljedećeg za *primanje.
- Ako je primljen segment s rednim brojem većim od sljedećeg za primanje, spremi ga u međuspremnik (engl. buffer), pošalji potvrdu s rednim brojem sljedećeg za primanje i ponovi korak 1.
Primjena
RUDP se može koristiti za aplikacije koje zahtijevaju pouzdanost i redoslijed paketa, ali ne mogu tolerirati visoku latenciju ili overhead TCP-a. Takve aplikacije su npr. glasovna ili video komunikacija, prijenos datoteka, igre u stvarnom vremenu.