UDP

Protokol UDP (User Datagram Protocol) je urΦen² pro aplikaΦnφ protokoly a procesy, kterΘ po₧adujφ rychl² a nezabezpeΦen² p°enos paket∙ bez potvrzovßnφ p°φjmu a opakovßnφ p°enosu (datagramovß slu₧ba).

Protokol se p°enßÜφ v datovΘ Φßsti IP paket∙.Protokol obsahuje mechanismus adresovßnφ kocov²ch proces∙, aby mohl vykonßvat multiplex a demultiplex dat mezi koncov²mi procesy a sφtφ.

Na adresaci aplikaΦnφch proces∙ se pou₧φvajφ celoΦφselnΘ identifikßtory (aplikaΦnφ porty - socket) p°id∞lenΘ aplikacφm p°ed vlastnφ komunikacφ. Kombinace IP adresy s adresou aplikaΦnφho prortu tvo°φ ·pln² identifikßtor koncovΘho procesu v IP sφti a naz²vß se soketovß adresa (IP-port). RozliÜujeme rezervovanΘ porty (well-know) s Φφsly, kterΘ jsou staticky p°id∞lenΘ konktrΘtnφm slu₧bßm (server∙m) do hodnoty 1023 a dynamickΘ, podle pot°eby p°id∞lovanΘ klienstk²m Φßstφm aplikacφ.

 

TCP

Protokol TCP (Transport Control Protocol) pracuje podle modelu OSI v transportnφ vrstv∞. Hlavnφ funkcφ protokolu je vytvß°enφ, udr₧ovßnφ a ruÜenφ transportnφch spojenφ, prost°ednictvφm kter²ch komunikujφ aplikaΦnφ procesy v koncov²ch uzlech intersφt∞ IP. Pro protokol TCp jsou charakteristickΘ nßsledujφcφ vlastnosti:

  1. poskytovßnφ spolehlivΘ spojovΘ tranpsortnφ slu₧by koncov²m proces∙m
  2. multiplexnφ re₧im prßce pro koncovΘ procesy uzl∙ sφt∞ (n∞kolik proces∙ souΦasn∞)
  3. duplexnφ re₧im p°enosu ·daj∙ mezi kocov²mi prcesy (piggybacking)
  4. slu₧ba p°enosu dat v podob∞ proudu p°enßÜen²ch byt∙, stream segment∙ protokolu TCP
  5. potvrzovßnφ p°enosu dat (ACK) a opakovßnφ p°enosu segment∙
  6. adaptivnφ re₧im p°izp∙sobenφ parametr∙ protokolu podle stavu spojenφ
  7. °φzenφ toku systΘmem klouzavΘho okna (Sliding window) a pomocφ p°φjimacφch a vysφlacφh buffer∙.

Porty d∙le₧it²ch protokol∙:

Protokol TCP p°i zabezpeΦovßnφ jmenovan²ch slu₧eb vykonßvß nßsledujφcφ funkce:

  1. adresovßnφ aplikaΦnφch proces∙ v sφti
  2. vytvß°enφ a ruÜenφ transportnφch spojenφ
  3. p°φjem ·daj∙ z vyÜÜφ vrstvy (z aplikaΦnφho procesu), vytvß°enφ paket∙ TCP
  4. °φzenφ p°enosu TCP paket∙ mezi koncov²mi uzly v sφti

Adresovßnφ aplikaΦnφch preces∙ v sφti:

Na adresovßnφ aplikaΦnφch proces∙ se pou₧φvajφ, podobn∞ jako na adresovßnφ v protokolu UDP, celoΦφselnΘ identifikßtory, tzv. aplikaΦnφ porty (sekety). Ale protokol TCP pou₧φvß vlastnφ systΘm p°id∞lovßnφ Φφsel soket∙ komunikujφcφm aplikacφm, tak₧e Φφsla soket∙ UDP a TCP jsou vzßjemn∞ nezßvislΘ. Podle ΦφselnΘho rozsahu rozd∞lujeme sokety TCP na:

  1. ve°ejnΘ sokety (well-known) < 1023
  2. dynamickΘ sokety > 1023

Ve°ejn∞ znßmΘ sokety jsou vyhrazeny pro servery konkrΘtnφch aplikaΦnφch slu₧eb, zatφmco dynamickΘ jsou klienty aplikaΦnφch protokol∙ a proces∙ pou₧φvanΘ neomezen∞. Podobn∞ jako u UDP je kombinace IP adresy s adresou soketu v rßmci transportnΘho spojenφ TCP ·pln²m identifikßtorem komunikujφch proces∙.

Vytvß°enφ a ruÜenφ transportnφch spojenφ:

Protokol TCP je spojev∞ orientovan². Transportnφ spojenφ je definovßno jako dvojice soketov²ch adres (IPc,portc), (IPz,portz) komunikujφch koncov²ch proces∙. Aplikace si potom vym∞≥ujφ data prost°ednictvφm vytvo°enΘho spojenφ formou proudu byt∙.

Na vytvo°enφ transportnφho spojenφ se pou₧φvß koncepce Klient-server. AplikaΦnφ procesy odevzdajφ vrstv∞ TCP pot°ebnΘ ·daje pro vytvo°enφ spojenφ napr. Φφslo zdrojovΘho a cφlovΘho aplikaΦniho portu. P°i vytvß°enφ spojenφ rozliÜujeme dva re₧imy otev°enφ:

  1. Pasivnφ re₧im - p°φjφmß na ve°ejn∞ znßmΘm aplikaΦnφm port∞ volßnφ klient∙, kte°φ po₧adujφ vytvo°enφ transportnφho spojenφ se serverem.
  2. Aktivnφ re₧im - je aktivovßn klienty, kte°φ vysφlajφ po₧adavky na aplikaΦnφ port serveru, otev°en² v pasivnφm re₧imu

P°i vytvß°enφ TCP spojenφ se vykonßvß synchronizaΦnφ procedura oznaΦovanß Three - Way Handshake (SYN, SYN/ACK, ACK), b∞hem kterΘ si vym∞nφ a potvrdφ ob∞ strany startovacφ sekvenΦnφ Φφsla SN (x,y), pak pou₧φvanΘ na zabezpeΦenφ p°enosu transportnφm spojenφm. Takety TCP majφ v poli °φzenφ spojenφ nastavenΘ bity SYN a ACK, kterΘ druhΘ stran∞ signalizujφ ₧ßdost o vytvo°enφ spojenφ. Procedura je dostateΦn∞ robustnφ a odolnß proti v²padk∙m spojenφ a duplicitßm sekvenΦnφch Φφsel.  K ruÜenφ transportnφho spojenφ dochßzφ po ukonΦenφ p°enosu dat z podn∞tu libovolnΘho procesu ve spojenφ. P°i ruÜenφ spojenφ TCP uzel, ruÜφcφ spojenφ, vyÜle zprßvu s nastaven²m bitem FIN °φdφcφho poel, kterΘ informuje druh² proces ve spojenφ o ukonΦenφ p°enosu dat, kterΘ jeÜt∞ nep°enesl transportnφm spojenφm a a₧ po dokonΦenφ p°enosu potvrdφ ukonΦenφ spojenφ zprßvou FIN.

╪φzenφ p°enosu dat:

Po z°φzenφ transportnφho spojenφ vytvß°φ TCP pro aplikaΦnφ procesy virtußlnφ kanßl, kter²m si procesy vym∞≥ujφ data pln∞ duplexnφm zp∙sobem. Z hlediska aplikace se vytvo°enΘ spojenφ jevφ jako p°enos proudu (Stream) byt∙. Transportnφ protokol musφ umo₧nit zabezpeΦen² p°enos proudu byt∙, co₧ znamenß, ₧e p°enßÜenß data musφ b²t p°esenΘ ve sprßvnΘm po°adφ a nesmφ dojφt k jejich ztrßt∞ nebo zahlcenφ p°φjimaΦe. Protokol TCP zabezpeΦuje °φzenφ p°enosu nßsledovn∞:

  1. Data aplikaΦnφho procesu jsou uklßdßna do vysφlacφ pam∞ti (Output Buffer), z kterΘ jich TCP odebφrß postupn∞ po segmentech, kterΘ se dopl≥ujφ o hlaviΦku °φdφcφch ·daj∙ do TCP paketu.
  2. Integrita p°enosu se zabezpeΦuje Φφslovßnφm p°enßÜen²ch byt∙ proudu prost°ednictvφm sekvenΦnφch Φφsel SN, kterΘ udßvajφ po°adovΘ Φφslo prvnφho bytu v segmentu.
  3. P°φjimacφ strana potvrzuje p°φjem segmetnu pozitivnφm potvrzenφm ACK prost°ednictvφm sekvenΦnφho Φφsla nejbli₧Üφho oΦekßvanΘho bytu v segmentu AN.
  4. Aby nedoÜlo k zahlcenφ p°φjimaΦe vyΦerpßnφm p°φjimacφho bufferu, p°φjimacφ strana odesφlß p°i potvrzenφ p°φjmu vysφlacφ stran∞ informaci o dostupnΘ velikosti bufferu, tzv. p°φjimacφho okna W, Φφm₧ se ovlivnφ velikost odesφlanc²h segment∙ (Sliding window).
  5. V²padek, poÜkozenφ nebo ztrßta segmentu p°i p°enosu se oÜet°φ opakovßnφm p°enosu segmentu. Po vyprÜenφ ΦasovΘho intervalu T na p°φjem potvrzenφ segmentu (Retransmission Timeout) od p°φjimacφ strany, musφ vysφlaΦ znovu zopakovat p°eos ztracenΘho segmentu.

Hodnota ΦsovΘho intervalu T na p°φjem potvrzenφ se m∞nφ dynamicky podle aktußlnφho stavu sφt∞ adaptivnφm v²poΦtem (Karn-Jacobson∙v algoritmus) na zßklad∞ p°edpoklßdanΘho zpo₧d∞nφ SRTT (Smoothed Round Trip Time) a p°edpoklßdanΘ pr∙m∞rnΘ odchylky od skuteΦnΘho zpo₧d∞nφ SDEV (Smoothed Deviation).