TCP vs UDP: Απομυθοποίηση της διαμάχης μεταξύ αξιοπιστίας και αποδοτικότητας

Σήμερα, θα ξεκινήσουμε εστιάζοντας στο TCP. Νωρίτερα στο κεφάλαιο για την επίστρωση, αναφέραμε ένα σημαντικό σημείο. Στο επίπεδο δικτύου και κάτω, πρόκειται περισσότερο για συνδέσεις μεταξύ κεντρικών υπολογιστών, πράγμα που σημαίνει ότι ο υπολογιστής σας πρέπει να γνωρίζει πού βρίσκεται ένας άλλος υπολογιστής για να συνδεθεί σε αυτόν. Ωστόσο, η επικοινωνία σε ένα δίκτυο είναι συχνά επικοινωνία μεταξύ διεργασιών και όχι μεταξύ μηχανών. Επομένως, το πρωτόκολλο TCP εισάγει την έννοια της θύρας. Μια θύρα μπορεί να καταλαμβάνεται μόνο από μία διεργασία, η οποία παρέχει άμεση επικοινωνία μεταξύ διεργασιών εφαρμογών που εκτελούνται σε διαφορετικούς κεντρικούς υπολογιστές.

Το έργο του επιπέδου μεταφοράς είναι ο τρόπος παροχής υπηρεσιών άμεσης επικοινωνίας μεταξύ διεργασιών εφαρμογών που εκτελούνται σε διαφορετικούς κεντρικούς υπολογιστές, επομένως είναι επίσης γνωστό ως πρωτόκολλο από άκρο σε άκρο. Το επίπεδο μεταφοράς αποκρύπτει τις βασικές λεπτομέρειες του δικτύου, επιτρέποντας στη διεργασία εφαρμογής να βλέπει σαν να υπάρχει ένα λογικό κανάλι επικοινωνίας από άκρο σε άκρο μεταξύ των δύο οντοτήτων του επιπέδου μεταφοράς.

Το TCP σημαίνει Transmission Control Protocol (Πρωτόκολλο Ελέγχου Μετάδοσης) και είναι γνωστό ως πρωτόκολλο προσανατολισμένο στη σύνδεση. Αυτό σημαίνει ότι πριν μια εφαρμογή μπορέσει να ξεκινήσει την αποστολή δεδομένων στην άλλη, οι δύο διεργασίες πρέπει να κάνουν μια χειραψία. Η χειραψία είναι μια λογικά συνδεδεμένη διαδικασία που διασφαλίζει αξιόπιστη μετάδοση και ομαλή λήψη δεδομένων. Κατά τη διάρκεια της χειραψίας, δημιουργείται μια σύνδεση μεταξύ των κεντρικών υπολογιστών προέλευσης και προορισμού ανταλλάσσοντας μια σειρά από πακέτα ελέγχου και συμφωνώντας σε ορισμένες παραμέτρους και κανόνες για να διασφαλιστεί η επιτυχής μετάδοση δεδομένων.

Τι είναι το TCP; (Mylinking'sΔίκτυο ΠατήστεκαιΜεσίτης Πακέτων Δικτύουμπορούσε να επεξεργαστεί πακέτα TCP ή UDP)
Το TCP (Πρωτόκολλο Ελέγχου Μετάδοσης) είναι ένα πρωτόκολλο επικοινωνίας επιπέδου μεταφοράς προσανατολισμένο στις συνδέσεις, αξιόπιστο, βασισμένο σε byte-stream.

Προσανατολισμένο στη σύνδεσηΗ επικοινωνία TCP με προσανατολισμό στη σύνδεση σημαίνει ότι είναι ένα-προς-ένα, δηλαδή επικοινωνία από σημείο σε σημείο από άκρο σε άκρο, σε αντίθεση με το UDP, το οποίο μπορεί να στέλνει μηνύματα σε πολλούς υπολογιστές ταυτόχρονα, επομένως δεν μπορεί να επιτευχθεί επικοινωνία ένα-προς-πολλούς.
ΑξιόπιστοςΗ αξιοπιστία του TCP διασφαλίζει ότι τα πακέτα παραδίδονται αξιόπιστα στον παραλήπτη ανεξάρτητα από αλλαγές στη σύνδεση δικτύου, γεγονός που καθιστά τη μορφή πακέτου πρωτοκόλλου του TCP πιο περίπλοκη από αυτή του UDP.
Βασισμένο σε ροή byteΗ φύση του TCP που βασίζεται σε byte-stream επιτρέπει τη μετάδοση μηνυμάτων οποιουδήποτε μεγέθους και εγγυάται τη σειρά των μηνυμάτων: ακόμη και αν το προηγούμενο μήνυμα δεν έχει ληφθεί πλήρως, και ακόμη και αν τα επόμενα byte έχουν ληφθεί, το TCP δεν θα τα παραδώσει στο επίπεδο εφαρμογής για επεξεργασία και θα απορρίψει αυτόματα τα διπλότυπα πακέτα.
Μόλις οι κεντρικοί υπολογιστές Α και Β δημιουργήσουν μια σύνδεση, η εφαρμογή χρειάζεται μόνο να χρησιμοποιήσει την εικονική γραμμή επικοινωνίας για την αποστολή και λήψη δεδομένων, διασφαλίζοντας έτσι τη μετάδοση δεδομένων. Το πρωτόκολλο TCP είναι υπεύθυνο για τον έλεγχο εργασιών όπως η δημιουργία σύνδεσης, η αποσύνδεση και η διατήρηση. Πρέπει να σημειωθεί ότι εδώ λέμε εικονική γραμμή μόνο για τη δημιουργία μιας σύνδεσης, η σύνδεση μέσω πρωτοκόλλου TCP υποδεικνύει μόνο ότι και οι δύο πλευρές μπορούν να ξεκινήσουν τη μετάδοση δεδομένων και για να διασφαλιστεί η αξιοπιστία των δεδομένων. Οι κόμβοι δρομολόγησης και μεταφοράς διαχειρίζονται από τις συσκευές δικτύου. Το ίδιο το πρωτόκολλο TCP δεν ασχολείται με αυτές τις λεπτομέρειες.

Μια σύνδεση TCP είναι μια υπηρεσία πλήρους αμφίδρομης επικοινωνίας, που σημαίνει ότι ο κεντρικός υπολογιστής Α και ο κεντρικός υπολογιστής Β μπορούν να μεταδίδουν δεδομένα και προς τις δύο κατευθύνσεις σε μια σύνδεση TCP. Δηλαδή, τα δεδομένα μπορούν να μεταφερθούν μεταξύ του κεντρικού υπολογιστή Α και του κεντρικού υπολογιστή Β σε αμφίδρομη ροή.

Το TCP αποθηκεύει προσωρινά δεδομένα στο buffer αποστολής της σύνδεσης. Αυτό το buffer αποστολής είναι μία από τις προσωρινές μνήμες που έχουν ρυθμιστεί κατά τη διάρκεια της τριμερούς χειραψίας. Στη συνέχεια, το TCP θα στείλει τα δεδομένα από την προσωρινή μνήμη αποστολής στην προσωρινή μνήμη λήψης του κεντρικού υπολογιστή προορισμού την κατάλληλη στιγμή. Στην πράξη, κάθε peer θα έχει μια προσωρινή μνήμη αποστολής και μια προσωρινή μνήμη λήψης, όπως φαίνεται εδώ:

TCP-UDP

Το buffer αποστολής είναι μια περιοχή μνήμης που διατηρείται από την υλοποίηση TCP στην πλευρά του αποστολέα και χρησιμοποιείται για την προσωρινή αποθήκευση δεδομένων που πρόκειται να αποσταλούν. Όταν εκτελείται η τριμερής χειραψία για τη δημιουργία μιας σύνδεσης, η προσωρινή μνήμη αποστολής ρυθμίζεται και χρησιμοποιείται για την αποθήκευση δεδομένων. Το buffer αποστολής προσαρμόζεται δυναμικά ανάλογα με τη συμφόρηση δικτύου και την ανάδραση από τον δέκτη.

Ένα buffer λήψης είναι μια περιοχή μνήμης που διατηρείται από την υλοποίηση TCP στην πλευρά λήψης και χρησιμοποιείται για την προσωρινή αποθήκευση των δεδομένων που λαμβάνονται. Το TCP αποθηκεύει τα δεδομένα που λαμβάνονται στην προσωρινή μνήμη λήψης και περιμένει την ανάγνωση από την ανώτερη εφαρμογή.

Σημειώστε ότι το μέγεθος της προσωρινής μνήμης αποστολής και λήψης είναι περιορισμένο. Όταν η προσωρινή μνήμη είναι πλήρης, το TCP μπορεί να υιοθετήσει ορισμένες στρατηγικές, όπως έλεγχο συμφόρησης, έλεγχο ροής κ.λπ., για να διασφαλίσει την αξιόπιστη μετάδοση δεδομένων και τη σταθερότητα του δικτύου.

Στα δίκτυα υπολογιστών, η μετάδοση δεδομένων μεταξύ των κεντρικών υπολογιστών πραγματοποιείται μέσω τμημάτων (segments). Τι είναι λοιπόν ένα τμήμα πακέτου;

Το TCP δημιουργεί ένα τμήμα TCP, ή τμήμα πακέτου, διαιρώντας την εισερχόμενη ροή σε κομμάτια και προσθέτοντας κεφαλίδες TCP σε κάθε κομμάτι. Κάθε τμήμα μπορεί να μεταδοθεί μόνο για περιορισμένο χρονικό διάστημα και δεν μπορεί να υπερβεί το Μέγιστο Μέγεθος Τμήματος (MSS). Κατά την καθοδήγησή του, ένα τμήμα πακέτου διέρχεται από το επίπεδο σύνδεσης. Το επίπεδο σύνδεσης έχει μια Μέγιστη Μονάδα Μετάδοσης (MTU), η οποία είναι το μέγιστο μέγεθος πακέτου που μπορεί να περάσει από το επίπεδο σύνδεσης δεδομένων. Η μέγιστη μονάδα μετάδοσης συνήθως σχετίζεται με τη διεπαφή επικοινωνίας.

Ποια είναι λοιπόν η διαφορά μεταξύ MSS και MTU;

Στα δίκτυα υπολογιστών, η ιεραρχική αρχιτεκτονική είναι πολύ σημαντική επειδή λαμβάνει υπόψη τις διαφορές μεταξύ των διαφορετικών επιπέδων. Κάθε επίπεδο έχει διαφορετικό όνομα. Στο επίπεδο μεταφοράς, τα δεδομένα ονομάζονται τμήμα και στο επίπεδο δικτύου, τα δεδομένα ονομάζονται πακέτο IP. Επομένως, η Μέγιστη Μονάδα Μετάδοσης (MTU) μπορεί να θεωρηθεί ως το Μέγιστο Μέγεθος Πακέτου IP που μπορεί να μεταδοθεί από το επίπεδο δικτύου, ενώ το Μέγιστο Μέγεθος Τμήματος (MSS) είναι μια έννοια του επιπέδου μεταφοράς που αναφέρεται στη μέγιστη ποσότητα δεδομένων που μπορούν να μεταδοθούν από ένα πακέτο TCP κάθε φορά.

Σημειώστε ότι όταν το Μέγιστο Μέγεθος Τμήματος (MSS) είναι μεγαλύτερο από τη Μέγιστη Μονάδα Μετάδοσης (MTU), ο κατακερματισμός IP θα πραγματοποιηθεί στο επίπεδο δικτύου και το TCP δεν θα διαιρέσει τα μεγαλύτερα δεδομένα σε τμήματα κατάλληλα για το μέγεθος MTU. Θα υπάρχει μια ενότητα στο επίπεδο δικτύου αφιερωμένη στο επίπεδο IP.

Δομή τμήματος πακέτων TCP
Ας εξερευνήσουμε τη μορφή και το περιεχόμενο των κεφαλίδων TCP.

Τμήμα TCP

Αριθμός ακολουθίας: Ένας τυχαίος αριθμός που παράγεται από τον υπολογιστή κατά την εδραίωση της σύνδεσης ως αρχική του τιμή κατά την εδραίωση της σύνδεσης TCP και ο αριθμός ακολουθίας αποστέλλεται στον παραλήπτη μέσω του πακέτου SYN. ​​Κατά τη μετάδοση δεδομένων, ο αποστολέας αυξάνει τον αριθμό ακολουθίας ανάλογα με την ποσότητα των δεδομένων που αποστέλλονται. Ο παραλήπτης κρίνει τη σειρά των δεδομένων σύμφωνα με τον αριθμό ακολουθίας που έλαβε. Εάν τα δεδομένα διαπιστωθεί ότι είναι εκτός σειράς, ο παραλήπτης θα τα αναδιατάξει για να διασφαλίσει τη σειρά τους.

Αριθμός επιβεβαίωσης: Αυτός είναι ένας αριθμός ακολουθίας που χρησιμοποιείται στο TCP για την επιβεβαίωση της λήψης δεδομένων. Υποδεικνύει τον αριθμό ακολουθίας των επόμενων δεδομένων που ο αποστολέας αναμένει να λάβει. Σε μια σύνδεση TCP, ο παραλήπτης καθορίζει ποια δεδομένα έχουν ληφθεί με επιτυχία με βάση τον αριθμό ακολουθίας του τμήματος πακέτου δεδομένων που έλαβε. Όταν ο παραλήπτης λάβει με επιτυχία τα δεδομένα, στέλνει ένα πακέτο ACK στον αποστολέα, το οποίο περιέχει τον αριθμό επιβεβαίωσης επιβεβαίωσης. Μετά τη λήψη του πακέτου ACK, ο αποστολέας μπορεί να επιβεβαιώσει ότι τα δεδομένα έχουν ληφθεί με επιτυχία πριν επιβεβαιώσει τον αριθμό απάντησης.

Τα bits ελέγχου ενός τμήματος TCP περιλαμβάνουν τα ακόλουθα:

bit ACKΌταν αυτό το bit είναι 1, σημαίνει ότι το πεδίο απάντησης επιβεβαίωσης είναι έγκυρο. Το TCP καθορίζει ότι αυτό το bit πρέπει να οριστεί σε 1 εκτός από τα πακέτα SYN κατά την αρχική δημιουργία της σύνδεσης.
RST bitΌταν αυτό το bit είναι 1, υποδεικνύει ότι υπάρχει εξαίρεση στη σύνδεση TCP και η σύνδεση πρέπει να αναγκαστεί να αποσυνδεθεί.
bit SYNΌταν αυτό το bit έχει οριστεί σε 1, σημαίνει ότι πρέπει να δημιουργηθεί η σύνδεση και η αρχική τιμή του αριθμού ακολουθίας ορίζεται στο πεδίο αριθμού ακολουθίας.
FIN bitΌταν αυτό το bit είναι 1, σημαίνει ότι δεν θα αποσταλούν άλλα δεδομένα στο μέλλον και η σύνδεση είναι επιθυμητή.
Οι διάφορες λειτουργίες και τα χαρακτηριστικά του TCP ενσωματώνονται στη δομή των τμημάτων πακέτων TCP.

Τι είναι το UDP; (Mylinking'sΔίκτυο ΠατήστεκαιΜεσίτης Πακέτων Δικτύουμπορούσε να επεξεργαστεί πακέτα TCP ή UDP)
Το Πρωτόκολλο Δεδομένων Χρήστη (UDP) είναι ένα πρωτόκολλο επικοινωνίας χωρίς σύνδεση. Σε σύγκριση με το TCP, το UDP δεν παρέχει πολύπλοκους μηχανισμούς ελέγχου. Το πρωτόκολλο UDP επιτρέπει στις εφαρμογές να στέλνουν απευθείας ενθυλακωμένα πακέτα IP χωρίς να δημιουργείται σύνδεση. Όταν ο προγραμματιστής επιλέξει να χρησιμοποιήσει UDP αντί για TCP, η εφαρμογή επικοινωνεί απευθείας με την IP.

Το πλήρες όνομα του πρωτοκόλλου UDP είναι Πρωτόκολλο Δεδομένων Χρήστη (User Datagram Protocol) και η κεφαλίδα του έχει μέγεθος μόνο οκτώ byte (64 bits), κάτι που είναι πολύ συνοπτικό. Η μορφή της κεφαλίδας UDP έχει ως εξής:

Τμήμα UDP

Θύρες προορισμού και προέλευσηςΟ κύριος σκοπός τους είναι να υποδείξουν σε ποια διεργασία πρέπει να στείλει πακέτα το UDP.
Μέγεθος πακέτουΤο πεδίο μεγέθους πακέτου περιέχει το μέγεθος της κεφαλίδας UDP συν το μέγεθος των δεδομένων
Άθροισμα ελέγχουΣχεδιασμένο για να διασφαλίζει την αξιόπιστη παράδοση κεφαλίδων και δεδομένων UDP. Ο ρόλος του αθροίσματος ελέγχου είναι να ανιχνεύει εάν έχει συμβεί σφάλμα ή καταστροφή κατά τη μετάδοση ενός πακέτου UDP, ώστε να διασφαλίζεται η ακεραιότητα των δεδομένων.

Διαφορές μεταξύ TCP και UDP στο MylinkingΔίκτυο ΠατήστεκαιΜεσίτης Πακέτων Δικτύουμπορούσε να επεξεργαστεί πακέτα TCP ή UDP
Τα TCP και UDP διαφέρουν ως προς τα ακόλουθα:

TCP έναντι UDP

ΣύνδεσηΤο TCP είναι ένα πρωτόκολλο μεταφοράς προσανατολισμένο στις συνδέσεις που απαιτεί την εγκατάσταση μιας σύνδεσης πριν από τη μεταφορά δεδομένων. Το UDP, από την άλλη πλευρά, δεν απαιτεί σύνδεση και μπορεί να μεταφέρει δεδομένα αμέσως.

Αντικείμενο ΥπηρεσίαςΤο TCP είναι μια υπηρεσία δύο σημείων ένα-προς-ένα, δηλαδή, μια σύνδεση έχει μόνο δύο τελικά σημεία για να επικοινωνούν μεταξύ τους. Ωστόσο, το UDP υποστηρίζει διαδραστική επικοινωνία ένα-προς-ένα, ένα-προς-πολλά και πολλά-προς-πολλούς, η οποία μπορεί να επικοινωνεί με πολλούς κεντρικούς υπολογιστές ταυτόχρονα.

ΑξιοπιστίαΤο TCP παρέχει την υπηρεσία αξιόπιστης παράδοσης δεδομένων, διασφαλίζοντας ότι τα δεδομένα είναι χωρίς σφάλματα, χωρίς απώλειες, χωρίς διπλότυπα και φτάνουν κατ' απαίτηση. Το UDP, από την άλλη πλευρά, καταβάλλει κάθε δυνατή προσπάθεια και δεν εγγυάται αξιόπιστη παράδοση. Το UDP ενδέχεται να παρουσιάσει απώλεια δεδομένων και άλλες καταστάσεις κατά τη μετάδοση.

Έλεγχος συμφόρησης, έλεγχος ροήςΤο TCP διαθέτει μηχανισμούς ελέγχου συμφόρησης και ελέγχου ροής, οι οποίοι μπορούν να προσαρμόσουν τον ρυθμό μετάδοσης δεδομένων ανάλογα με τις συνθήκες του δικτύου για να διασφαλίσουν την ασφάλεια και τη σταθερότητα της μετάδοσης δεδομένων. Το UDP δεν διαθέτει μηχανισμούς ελέγχου συμφόρησης και ελέγχου ροής, ακόμη και αν το δίκτυο είναι πολύ συμφορημένο, δεν θα κάνει προσαρμογές στον ρυθμό αποστολής UDP.

Επικεφαλίδα επικάλυψηςΤο TCP έχει μεγάλο μήκος κεφαλίδας, συνήθως 20 byte, το οποίο αυξάνεται όταν χρησιμοποιούνται πεδία επιλογών. Το UDP, από την άλλη πλευρά, έχει σταθερή κεφαλίδα μόνο 8 byte, επομένως το UDP έχει χαμηλότερη επιβάρυνση κεφαλίδας.

TCP έναντι UDP

Σενάρια εφαρμογών TCP και UDP:
Τα TCP και UDP είναι δύο διαφορετικά πρωτόκολλα επιπέδου μεταφοράς και έχουν κάποιες διαφορές στα σενάρια εφαρμογών.

Δεδομένου ότι το TCP είναι ένα πρωτόκολλο προσανατολισμένο στις συνδέσεις, χρησιμοποιείται κυρίως σε σενάρια όπου απαιτείται αξιόπιστη παράδοση δεδομένων. Ορισμένες συνήθεις περιπτώσεις χρήσης περιλαμβάνουν:

Μεταφορά αρχείων FTPΤο TCP μπορεί να διασφαλίσει ότι τα αρχεία δεν θα χαθούν και δεν θα καταστραφούν κατά τη μεταφορά.
HTTP/HTTPSΤο TCP διασφαλίζει την ακεραιότητα και την ορθότητα του περιεχομένου ιστού.
Επειδή το UDP είναι ένα πρωτόκολλο χωρίς σύνδεση, δεν παρέχει εγγύηση αξιοπιστίας, αλλά έχει τα χαρακτηριστικά της αποτελεσματικότητας και του πραγματικού χρόνου. Το UDP είναι κατάλληλο για τα ακόλουθα σενάρια:

Χαμηλή κίνηση πακέτων, όπως DNS (Σύστημα Ονομάτων Τομέα)Τα ερωτήματα DNS είναι συνήθως μικρά πακέτα και το UDP μπορεί να τα ολοκληρώσει πιο γρήγορα.
Επικοινωνία πολυμέσων όπως βίντεο και ήχοςΓια μετάδοση πολυμέσων με υψηλές απαιτήσεις σε πραγματικό χρόνο, το UDP μπορεί να παρέχει χαμηλότερη καθυστέρηση για να διασφαλίσει ότι τα δεδομένα μπορούν να μεταδοθούν έγκαιρα.
Ραδιοτηλεοπτική επικοινωνίαΤο UDP υποστηρίζει επικοινωνία ένα-προς-πολλούς και πολλά-προς-πολλούς και μπορεί να χρησιμοποιηθεί για τη μετάδοση μηνυμάτων ευρείας μετάδοσης.

Περίληψη
Σήμερα μάθαμε για το TCP. Το TCP είναι ένα πρωτόκολλο επικοινωνίας επιπέδου μεταφοράς προσανατολισμένο στις συνδέσεις, αξιόπιστο, βασισμένο σε byte stream. Εξασφαλίζει την αξιόπιστη μετάδοση και την ομαλή λήψη δεδομένων μέσω της δημιουργίας σύνδεσης, της χειραψίας και της επιβεβαίωσης. Το πρωτόκολλο TCP χρησιμοποιεί θύρες για την πραγματοποίηση της επικοινωνίας μεταξύ διεργασιών και παρέχει υπηρεσίες άμεσης επικοινωνίας για διεργασίες εφαρμογών που εκτελούνται σε διαφορετικούς κεντρικούς υπολογιστές. Οι συνδέσεις TCP είναι full-duplex, επιτρέποντας ταυτόχρονες αμφίδρομες μεταφορές δεδομένων. Αντίθετα, το UDP είναι ένα πρωτόκολλο επικοινωνίας χωρίς σύνδεση, το οποίο δεν παρέχει εγγυήσεις αξιοπιστίας και είναι κατάλληλο για ορισμένα σενάρια με υψηλές απαιτήσεις σε πραγματικό χρόνο. Τα TCP και UDP διαφέρουν ως προς τη λειτουργία σύνδεσης, το αντικείμενο υπηρεσίας, την αξιοπιστία, τον έλεγχο συμφόρησης, τον έλεγχο ροής και άλλες πτυχές, και τα σενάρια εφαρμογής τους είναι επίσης διαφορετικά.


Ώρα δημοσίευσης: 03-12-2024