Sobes.tech
Junior

Πώς λειτουργεί το πρωτόκολλο TCP;

sobes.tech AI

Απάντηση από AI

TCP (Transmission Control Protocol) — είναι ένα πρωτόκολλο επιπέδου μεταφοράς που παρέχει αξιόπιστη, σύνδεση-προσανατολισμένη παράδοση δεδομένων.

Βασικά στοιχεία λειτουργίας:

  1. Τριπλή χειραψία (Three-way Handshake):

    • Ο πελάτης στέλνει ένα πακέτο SYN (Synchronize) με έναν αρχικό αριθμό σειράς (ISN).
    • Ο διακομιστής λαμβάνει το SYN, στέλνει ένα SYN-ACK (Synchronize-Acknowledge) που περιέχει το δικό του ISN και μια επιβεβαίωση (ACK) του ISN του πελάτη (acknowledgement number = client ISN + 1).
    • Ο πελάτης λαμβάνει το SYN-ACK, στέλνει ένα ACK για την επιβεβαίωση του ISN του διακομιστή (acknowledgement number = server ISN + 1).
    • Η σύνδεση έχει εγκατασταθεί, τα δεδομένα μπορούν να μεταδοθούν.
  2. Ροή μεταφοράς δεδομένων: Τα δεδομένα μεταδίδονται ως συνεχής ροή bytes, όχι ως ξεχωριστά πακέτα. Το TCP τμηματοποιεί τη ροή δεδομένων σε τμήματα για μετάδοση.

  3. Αριθμοδότηση σειράς (Sequence Numbers): Κάθε byte στη ροή δεδομένων έχει έναν μοναδικό αριθμό. Τα τμήματα περιέχουν τον αριθμό του πρώτου byte που περιέχουν (sequence number) και τον αριθμό επιβεβαίωσης (acknowledgement number), που δείχνει το επόμενο byte που ο αποστολέας αναμένει να λάβει.

  4. Επιβεβαιώσεις (Acknowledgements - ACK): Ο παραλήπτης στέλνει ένα ACK για να ενημερώσει τον αποστολέα ποια δεδομένα έχουν ληφθεί επιτυχώς. Αν ο αποστολέας δεν λάβει ACK μέσα σε ορισμένο χρόνο (timeout), επαναστέλνει το τμήμα.

  5. Έλεγχος σφαλμάτων (Error Control): Χρησιμοποιούνται αθροίσματα ελέγχου (checksums) για τον έλεγχο της ακεραιότητας των δεδομένων. Αν ένα τμήμα είναι κατεστραμμένο, απορρίπτεται και ο αποστολέας περιμένει timeout ή διπλό ACK για επανεκπομπή.

  6. Έλεγχος ροής (Flow Control): Μηχανισμός που χρησιμοποιείται για την αποτροπή υπερφόρτωσης του buffer του παραλήπτη. Ο παραλήπτης ενημερώνει τον αποστολέα για το μέγεθος του παραθύρου λήψης (receive window) στα πακέτα ACK. Ο αποστολέας μπορεί να στείλει μόνο όσο δεδομένα χωράει στο παράθυρο.

  7. Έλεγχος συμφόρησης (Congestion Control): Μηχανισμός για τον προσδιορισμό της διαθέσιμης χωρητικότητας του δικτύου και τη δυναμική ρύθμιση της ταχύτητας μετάδοσης δεδομένων ώστε να αποφεύγεται η συμφόρηση. Περιλαμβάνει αλγορίθμους όπως slow start, congestion avoidance, fast retransmit και fast recovery.

  8. Κλείσιμο σύνδεσης: Συνήθως μέσω τετραπλής χειραψίας:

    • Μία πλευρά στέλνει ένα πακέτο FIN (Finish).
    • Η άλλη πλευρά στέλνει ένα ACK για το FIN.
    • Η άλλη πλευρά στέλνει το δικό της FIN (μετά την ολοκλήρωση της μετάδοσης των υπόλοιπων δεδομένων).
    • Η πρώτη πλευρά στέλνει ένα ACK για αυτό το FIN.
    • Η σύνδεση κλείνει.

Δομή τμήματος TCP:

Πεδίο Μέγεθος (bytes) Περιγραφή
Source Port 2 Πορτ αποστολέα
Destination Port 2 Πορτ παραλήπτη
Sequence Number 4 Αριθμός του πρώτου byte στο τμήμα
Acknowledgement Number 4 Αριθμός του επόμενου αναμενόμενου byte
Data Offset/Header Length 4 bits Μήκος κεφαλίδας TCP
Reserved 6 bits Κρατημένο
Flags (Control Bits) 6 bits URG, ACK, PSH, RST, SYN, FIN
Window Size 2 Μέγεθος παραθύρου λήψης
Checksum 2 Άθροισμα ελέγχου κεφαλίδας και δεδομένων
Urgent Pointer 2 Δείχνει επείγοντα δεδομένα (αν URG είναι ενεργό)
Options Μεταβλητό Επιπλέον επιλογές
Padding Μεταβλητό Για ευθυγράμμιση της κεφαλίδας
Data Μεταβλητό Μεταδιδόμενα δεδομένα
// Flags (Control Bits):
// URG: Σημαντικό πεδίο Urgent Pointer
// ACK: Σημαντικό πεδίο Επιβεβαίωσης
// PSH: Λειτουργία Push
// RST: Επαναφορά σύνδεσης
// SYN: Συγχρονισμός αριθμών σειράς
// FIN: Δεν υπάρχουν άλλα δεδομένα από τον αποστολέα