Edukira joan

Transmission Control Protocol

Wikipedia, Entziklopedia askea

TCP Transmission Control Protocol-ren siglak dira (Euskaraz Transmisiorako Kontrol Protokoloa).

TCP/IP ereduren garraio mailako konexiora zuzendutako sare protokolo fidagarria dugu, nahiz eta IP protokoloaren sare ez-fidagarrian sostengatzen den.

TCP-ren ezaugarriak

Bere ezaugarririk nagusienak:

  • Konexiora zuzenduta: Inongo daturik bidali aurretik konexioa ezartzea beharrezkoa da. Konexio honen bidez datuak hurrenkera egokian eta paketeak errepikatu gabe helduko dira helburuko aplikaziora
  • Fidagarria: Helbururi heltzen zaion informazioa modu zuzenean heldu dela bermatzeko prozedurak ezartzen ditu

TCP entitate igorleak (erabiltzaileak) eta hartzaileak datuak segmentuetan (garraio mailako paketea) zatikatzen dituzte eta ondorengo baldintzak bete behar dituzte:

  • Goiburukoa gutxienez 20 bytez osatuta dago, ondoren datuak datoz. Guztira (datuak + goiburukoa) 64K baino gehiagoko tamaina ezin du eduki, IP datagramaren formatuak ez bailuke onartuko.
  • Sare guztiek gehienezko datu tamaina bat (MTU) dute, Kbyte batzuetakoa izaten dela. Segmentuaren tamaina muga honetara egokitzen da. Segmentuak zeharkatu behar duen azpisare baten trama tamaina, segmentuaren tamaina baino txikiagoa bada, bideratzaileek segmentua zatikietan banatzen dute.

Fluxu-kontrola kudeatzeko leiho labainkorreko protokoloa erabiltzen dute TCP entitateek. Protokolo honetan igorleak segmentu bat bidaltzean, kontagailu (erloju) bat martxan jartzen du. Kontagailu honek segmentuaren onespena jasotzeko gehienezko denbora tartea zehazten du. Denbora hau agortuz gero, segmentua berriz igortzen da hartzaileari. Segmentuen zatiak berreraikitzea eta arazoak antzematean segmentua berrigortzea dira garraio-mailaren eginkizunak.


TCP segmentuaren formatua

Berton formatua (errenkada bakoitzak 32 bit du):

0

10

20

30

0

1

2

3

4

5

6

7

8

9

0

1

2

3

3

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

TCP iturburuko portua

TCP helburuko portua

Sekuentzia-zenbakia

Onespen-zenbakia

HLEN

Erreserbatua

Bit-kodeak

Leihoaren tamaina

Kontroleko batura

Presazko portua

Aukerak (baldin badaude)

Betegarri

Datuak

...

Aplikazio jakin batek sortutako datuak segmentu baten edo gehiagotan banatzen direla kontatu dugu. Segmentu hauek, IP datagramaren datu eremuan bidaiatzen dute,hots, kapsulatuta. Fluxu-kontrola kontrola kudeatzeko zenbakitzen dira segmentuak. Berton formatua (errenkada bakoitzak 32 bit du):

  • TCP iturburuko portua (16 bit). Iturburuko makinaren portu-zenbakia.
  • TCP helburuko portua (16 bit). Helburuko makinaren portu-zenbakia.
  • Sekuentzia-zenbakia (32 bit). TCP informazioaren korrontearen barruan uneko datuen posizioa adierazten du.
  • Onespen-zenbakia (32 bit). Eremu honekin aurretik jasotako byteak zuzen jaso direla adierazteko erabiltzen du helburuko makinak.
  • HLEN (4 bit). Goiburuko luzera adierazten du. 32 bitetako multiploetan adierazita, segmentuaren tamaina. Gutxienekoa 5 (1001 bitarrean) litzateke, 20 bytetako datu gabeko segmentuari dagokiona.
  • Erreserbatua (6 bit). Etorkizun batean erabiltzeko.
  • Bit-kodeak (6 bit). Segmentuaren asmoa zehazten dute.
    • URG. Presazko erakuslearen datuak bilatu eta prozesatu behar dira.
    • ACK. Onespen-segmentua da, beraz onespen-zenbakia kontuan hartzen da. SYN eta FIN kodeekin konexioaren ezarpena eta askapena adierazten dute. Segmentu berberak noranzko baten datuak bidal ditzake eta komunikazioaren beste noranzkoaren onespenak.
    • PSH. Buffer osoa betetzen den arte segmentua buferretan ez gordetzeko erakuslea, honela iritsi ahala aplikazioari bidaliko zaio. Push eragiketa.
    • RST. Uneko konexioa etetea.
    • SYN. Konexio eskaera. Sekuentzia-zenbakia nondik hasiko den adierazten du. ACK kodearekin batera (ACK=1;SYN=1) konexio-eskaerari onespena ematen zaio.
    • FIN. Konexio amaitu nahi dela adierazteko, ez baitaude datu gehiagorik bidaltzeko.
  • Leihoaren tamaina (16 bit). Konexio batentzako helburuko makinak onartuko duen buferren tamaina zehazten du.
  • Kontroleko batura (24 bit). Uneko segmentuaren erroren kontroleko batura. Iturburuko eta helburuko IPren helbideak ere sartzen dira (sasigoiburua).
  • Presazko erakuslea (8 bit). Presazko datuak non hasten diren zehazten du.
  • Aukerak (aldakorrak). Aukera hau zehaztuta badago, onartuko den segmenturen gehienezko tamaina zehazten du.
  • Betegarri. Eremu honekin segmentua 32 bitetako multiplokoa izatea behartuko litzateke.
  • Datuak. Aplikazioari bidaltzen zaion informazioa.


TCP Fluxu Kontrola

TCP protokoloak datuen fluxu kontrola burutzeko mekanismoak erabiltzen ditu. Mekanismo hauen laguntzarekin igorleak bidalitako datuekin ez da sekula hartzailearen buffer-a saturatuko.

Hartzaileak, igorlearengandik datuak jaso eta baieztatu behar dituenean (datu gehiagorekin edo ACK-ren bitartez), RcvWindow eremuan bere buffer-aren momentu horretako kapazitatea adieraziko dio. Eremu honen balioa dinamikoki aldatzen da transmisio batetik bestera.

Igorleak, jarraian bidaliko dituen datu kopurua, hartzaileak RcvWindow eremuan adierazitako byte kopururaren azpitik mantenduko ditu.

Fluxu kontrola egiteko RcvWindow eremuak leiho irristakorra-ren balioa adierazten du:

  • Leihoaren balioa handitu egingo da hartzailearen buffer-a libratzen den heinean.
  • Leihoaren balioa txikitu egingo da hartzailearen buffer-a betetzen den heinean.

Hartzaileak igorleari lehioaren balio jakin bat ematen badio (kreditu bat) eta igorleak bidalitako datuek saturazio egoeratik gertu uzten badute ere, hartzaileak ezin dezake hasieran emandako kredituraren murrizketa bat burutu.

Egoera honetatik habiatuz, fluxu kontrolaren ondoriozko blokeo egoera aztertuko da.

Blokeoa eta Persist Timer-a

Blokeo egoera bat emateko bi baldintza eman behar dira ezinbestean:

  • Igorle bizkorra – Hartzaile geldoa egoera eman behar da.
  • Komunikazioa asimetrikoa da: mutur batean transmititu eta bestean bakarrik baieztatu egingo da.

Baldintza hauek ematen badira eta komunikazioaren uneren batean hartzaileak RcvWindow=0 adierazten badu, igorleak ezin izango dio ezer bidali, eta hartzaileak ezer baiztatzeko ez duenez, ezingo dio adierazi igorleari jasotzeko prest dagoela, beraz, blokeo egoera bat gertatutko da.

Egoera honetatik ateratzeko, igorlean, Persist Timer mekanismoa erabiliko da. Hartzailearen erantzun bat jasotzen denetik denbora tarte batera, 1 byteko segmentuak bidaliko ditu igorleak, hartzailearen buffer-aren egoera ezagutu ahal izateko.

Persist Timer-aren erabilerak, badu bere alde txarra ere,S'''illy '''W'''indow Syndrome(SWS)-aren sortzailea baita.


Ikus, gainera

Erreferentziak

Kanpo loturak