Δίκτυα Υπολογιστών Κεφάλαιο 19 – Σύγκριση TCP και UDP

Δημοσιεύτηκε από τον/την codebrakes στις

Δίκτυα Υπολογιστών
Κεφάλαιο 19 - Σύγκριση TCP και UDP

Συνοπτικά οι λειτουργίες του επιπέδου μεταφοράς

Το επίπεδο μεταφοράς στο πρότυπο επικοινωνίας TCP/IP αφορά μια λογική σύνδεση μεταξύ δύο τερματικών σε ένα δίκτυο. Παρέχει υπηρεσίες απο σε υπολογιστές (hosts ή clients) και σε διακομιστές (servers). Αυτό αναφέρεται συχνά κι ως άκρο σε άκρο επικοινωνία (end-to-end connection). Οι κυριότερες υπηρεσίες που παρέχει το επίπεδο μεταφοράς είναι οι εξής:

  • Εγκαθίδρυση συνόδων (sessions)

  • Εντοπισμός μεμονομένων επικοινωνιών μεταξυ εφαρμογών τόσο στους πελάτες (clients) όσο και στους διακομιστές (servers)

  • Τεμαχισμός και διαχείριση δεδομένων

  • Επανασυναρμολόγηση των τμημάτων (segments) σε μια ροή δεδομένων για την εκάστοτε εφαρμογή που απευθύνεται

  • Εντοπισμός διαφορετικών εφαρμογών

  • Έλεγχος ροής (flow control) μεταξύ διαφορετικών χρηστών

  • Έλεγχος σφαλμάτων και τυχόν ανάκαμψης αυτών με επαναμετάδοση της πληροφορίας που χάθηκε

Εν συντομία ο κύριος σκοπός του επιπέδου μεταφοράς είναι να μπορέσουν πολλές εφαρμογές να χρησιμοποιούν το ίδιο δίκτυο ταυτόχρονά!!

Διαφορές και ομοιότητες του TCP και UDP

Υπάρχουν κάποιες βασικές ομοιότητες και διαφορές μεταξύ του TCP και του UDP. Μια απο αυτές τις διαφορές είναι ότι το TCP είναι ένα πρωτόκολλο μεταφοράς προσανατολισμένης σύνδεσης καθότι εγκαθιδρύει μια απ’ άκρο σε άκρο επικοινωνία (end-to-end connection) μεταξύ ενός πελάτη (client) κι ενός εξυπηρετητή (server) πρωτού ξεκινήσει η μεταφορά δεδομένων. Απο την αλλη μεριά το UDP είναι ένα ασυνδεσμικό (connection-less) πρωτόκολλο επικοινωνίας καθότι δεν καθορίζεται τίποτα στην σύνδεση και τα δεδομένα μεταφέρονται κατευθείαν. Η βασική δε ομοιότητα των δύο αυτών πρωτοκόλλων μεταφοράς είναι ότι και τα δύο βρίσκονται στο επίπεδο μεταφοράς του πρότυπου επικοινωνίας TCP/IP.

Το πρωτόκολλο μεταφοράς TCP

To Πρωτόκολλο Ελέγχου Μεταφοράς (Transmission Control Protocol – TCP) είναι ένα πρωτόκολλο προσανατολισμένης σύνδεσης (connection-oriented protocol) το οποίο βρίσκεται στο επίπεδο μεταφοράς του μοντέλου επικοινωνίας TCP/IP. Εγκαθιδρύει μια σύνδεση μεταξύ για μεταφορά δεδομένων μεταξύ δύο οντοτήτων (client και server). Η εικόνα παρακάτω δείνει ενα παράδειγμα εκκίνησης TCP σύνδεσης.

Διαδικασία έναρξης TCP σύνδεσης (Three-way handshake)
Διαδικασία ανταλλαγής δεδομένων στο TCP

Όπως παρατηρούμε κι απο τις παραπάνω εικόνες βλέπουμε ότι το TCP είναι ένα αρκετά αξιόπιστο πρωτόκολλο μεταφοράς δεδομένων καθότι χρησιμοποιεί three-way handshake, έλεγχο ροής, έλεγχο συμφόρησης και έλεγχο σφαλμάτων. Τα παρακάτω πρωτόκολλα χρησιμοποιούν το TCP για μεταφορά δεδομένων.

  • HTTP (Hypertext Transfer Protocol)

  • HTTPS (Hypertext Transfer Protocol Secure

  • FTP (File Transfer Protocol)

  • SMTP (Simple Mail Transfer Protocol), κλπ.

Μειονεκτήματα TCP
Μεγαλύτερο μήκος επικεφαλίδας σε σχέση με το UDP

  • UDP: Ελάχιστο μήκος UDP επικεφαλίδας: 8 bytes

  • TCP: Ελάχιστο μήκος TCP επικεφαλίδας: 20 bytes (ελάχιστο) έως 60 bytes (μέγιστο)

Αρκετή κατανάλωση πόρων καθότι υπάρχουν μηχανισμοί που ελέγχουν αν παραδόθηκαν όλα τα πακέτα στην άλλη άκρη και τυχόν επαναμετάδωσης τους σε διαφορετική περίπτωση

Το πρωτόκολλο μεταφοράς UDP

Το πρωτόκολλο Αυτοδύναμων Πακέτων Χρήστη (User Datagram Protocol – UDP) είναι ένα ασυνδεσμικό πρωτόκολλο επικοινωνίας (connectionless protocol) και βρίσκεται στο επίπεδο μεταφοράς του πρότυπου επικοινωνίας TCP/IP. Δεν απαιτεί εγκαθύδρυση επικοινωνίας ούτε ελέγχει αν ο παραλήπτης έλαβε τα δεδομένα ή όχι, απλά στέλνει τα δεδομένα όσο πιο γρήγορα γίνεται. Το UDP χρησιμοποιείται για εφαρμογές που απαιτούν γρήγορη ταχύτητα όπως σε τηλεδιασκέψεις, σε video streaming π.χ. Youtube, για audio streaming π.χ. Soundcloud κλπ.

Διαδικασία ανταλλαγής δεδομένων στο UDP
Λειτουργία TCP UDP
Σύνδεση Το TCP είναι ένα πρωτόκολλο προσανατολισμένης σύνδεσης connection-oriented) Το UDP είναι ένα ασυνδεσμικό πρωτόκολλο (connectionless protocol)
Τρόπος Λειτουργίας Το TCP επιβλέπει την σύνδεση και παρακολουθεί την πορεία κάθε πακέτου μέχρι αυτό να φτάσει στον τελικό του προορισμό. Σε διαφορετική περίπτωση το ξαναστέλνει. Το UDP απλά στέλνει τα πακέτα στον παραλήπτη και δεν το ενδιαφέρει αν φτάσουν τα πακέτα ή όχι. Απλά τα προωθεί όσο πιο γρήγορα γίνεται.

Χρήση
Το TCP χρησιμοποιείται σε εφαρμογές που απαιτούν αξιόπιστες συνδέσεις όπου ο χρόνος μετάδοσης των δεδομένων δεν αποτελεί μείζον ζήτημα. Το UDP χρησιμοποιείται σε εφαρμογές που απαιτούν γρήγορη μεταφορά δεδομένων.
Πρωτόκολλα HTTP, HTTPs, FTP, SMTP, Telnet DNS, DHCP, TFTP, SNMP, RIP, VOIP
Αναδιάταξη πακέτων Στο TCP κάθε πακέτο αριθμείται και στέλνεται με την σωστή σειρά Στο UDP τα πακέτα δεν αριθμούνται και δεν στέλνονται με συγκεκριμένη σειρά
Ταχύτητα μεταφοράς Αργό καθότι υπάρχουν μηχανισμοί αξιοπιστίας Γρήγορο καθότι δεν υπάρχουν μηχανισμοί αξιοπιστίας

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

Μήκος επικεφαλίδας
Ελάχιστο μήκος 20 bytes

Μέγιστο μήκος 60 bytes

Σταθερό μήκος 8 bytes.

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


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









Πεδία επικεφαλίδας
  1. Θύρα πηγής

  2. Θύρα προορισμού

  3. Αριθμός ακολουθίας

  4. Αριθμός επιβεβαίωσης

  5. Μέγεθος επικεφαλίδας

  6. Δεσμευμένο (Reserved)

  7. Σημαίες (flags)

  8. Μήκος Παραθύρου

  9. Άθροισμα ελέγχου (checksum)

  10. Επείγον (Urgent pointer)

  11. Επιλογές







  1. Μήκος

  2. Θύρα πηγής

  3. Θύρα προορισμού

  4. Άθροισμα ελέγχου (checksum)

Επιβεβαιώσεις Χρησιμοποιεί Δεν χρησιμοποιεί



Εγκαθίδρυση σύνδεσης
Απαιτούνται τρία πακέτα για εγκαθίδρυση σύνδεσης:
  1. SYN

  2. SYN-ACK

  3. ACK




Δεν πραγματοποιείται εγκαθίδρυση σύνδεσης

Σύγκριση πρωτοκόλλων μεταφοράς TCP και UDP

Τελευταία ενημέρωση: 26/04/2018