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:
-
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.
-
Jooksva andmete edastamine: Andmed edastatakse kui pidev baitide voog, mitte eraldi paketid. TCP jagab andmevoo segmentideks.
-
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.
-
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.
-
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.
-
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.
-
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).
-
Ü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