Sobes.tech
Junior

Kuidas töötab TCP protokoll?

sobes.tech AI

Vastus AI-lt

TCP (Transmission Control Protocol) on transpordikihi protokoll, mis tagab usaldusväärse, ühendusepõhise andmete kohaletoimetamise.

Põhiaspektid töö kohta:

  1. Kolmeastmeline käepigistus (Three-way Handshake):

    • Klient saadab SYN (Synchronize) paketi algse järjekorranumbriga (ISN).
    • Server saab SYN-i, saadab SYN-ACK (Synchronize-Acknowledge), mis sisaldab oma ISN-i ja kinnitust (ACK) kliendi ISN-i (acknowledgement number = client ISN + 1).
    • Klient saab SYN-ACK-i, saadab ACK-i, mis kinnitab serveri ISN-i (acknowledgement number = server ISN + 1).
    • Ühendus on loodud, saab alustada andmete edastamist.
  2. Jooksva andmete edastamine: Andmed edastatakse kui pidev baitide voog, mitte eraldi paketid. TCP jagab andmevoo segmentideks.

  3. Jada numbrid (Sequence Numbers): Iga bait voos omab unikaalset numbrit. Segmentides on esimese baiti number (järjekorranumber) ja kinnituse number (acknowledgement number), mis näitab järgmist oodatavat baiti.

  4. Kinnitused (Acknowledgements - ACK): Vastuvõtja saadab ACK-i, teavitades saatjat, millised andmed on edukalt saadud. Kui saatja ei saa ACK-i teatud aja jooksul (Aegumise aeg) tagasi, saadab ta segmenti uuesti.

  5. Vigade kontroll (Error Control): Kasutatakse kontrollsumma (checksum), et kontrollida andmete terviklikkust. Kui segment on rikutud, see visatakse minema, ja saatja ootab aegumise aega või duplikaat-ACK-i, et uuesti saata.

  6. Voo kontroll (Flow Control): Mehhanism, mis takistab vastuvõtja pufferi ülekoormust. Vastuvõtja teavitab saatjat oma vastuvõtuakna suurusest (receive window) ACK-ides. Saatja võib saata ainult nii palju andmeid, kui on näidatud aknas.

  7. Tõrke kontroll (Congestion Control): Mehhanism, mis määrab võrgu saadaval oleva läbilaskevõime ja dünaamiliselt reguleerib andmete edastamise kiirust, et vältida võrgu ülekoormust. Sisaldab algoritme nagu aeglane algus (slow start), ülekoormuse vältimine (congestion avoidance), kiire ümberlähe (fast retransmit) ja kiire taastumine (fast recovery).

  8. Ühenduse sulgemine: Tavaliselt kasutab neljaastmelist käepigistust:

    • Üks pool saadab FIN (Finish) paketi.
    • Teine pool saadab ACK FIN-i jaoks.
    • Teine pool saadab oma FIN-i (pärast andmete edastamise lõpetamist).
    • Esimene pool saadab ACK selle FIN-i jaoks.
    • Ühendus suletakse.

TCP segmenti struktuur:

Väli Suurus (bait) Kirjeldus
Allikasport 2 Saatja port
Sihtport 2 Vastuvõtja port
Sekvencenumber 4 Esimese baiti number segmentides
Kinnituse number 4 Järgmise oodatava baiti number
Andmete offset/pikkus 4 bitti TCP päise pikkus
Reserveeritud 6 bitti Reserveeritud
Kontrollnupud (Flags) 6 bitti URG, ACK, PSH, RST, SYN, FIN
Akna suurus 2 Vastuvõtja aken suurus
Kontrollsumma 2 Päise ja andmete kontrollsumma
Tõstik (Urgent Pointer) 2 Näitab kiireloomseid andmeid (kui URG on seatud)
Valikud muutuva suurusega Täiendavad valikud
Täitmine (Padding) muutuva suurusega Päise joondamiseks
Andmed muutuva suurusega Edastatavad andmed
// Kontrollnupud (Flags):
// URG: Kiireloomse näitaja oluline
// ACK: Kinnituse väli oluline
// PSH: Push funktsioon
// RST: Ühenduse lähtestamine
// SYN: Sekveneerimisnumbri sünkroniseerimine
// FIN: Rohkem andmeid saatjast