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

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

Δίκτυα Υπολογιστών
Κεφάλαιο 18 - TCP/IP Πολύπλεξη/Αποπολύπλεξη (Multiplexing/Demultiplexing)

TCP/IP Θύρες επικοινωνίας: Διευθυνσιοδότηση στο επίπεδο μεταφοράς

Ένας υπολογιστής μπορεί να τρέχει ένα σύνολο απο πολλές εφαρμογές ή διεργρασίες ταυτόχρονα. Καθέμια απο αυτές δημιουργούν ένα σύνολο απο δεδομένα τα οποία και τα προοθούν στα πρωτόκολλο μεταφοράς TCP ή UDP (ανάλογα με το πρωτόκολλο μεταφοράς που χρησιμοποιεί η εκάστοτε εφαρμογή/διεργασία). Στην συνέχεια τα πρωτόκολλα μεταφοράς προοθούν αυτά τα δεδομένα στο επίπεδο δικτύου (IP) προκειμένου αυτά να δρομολογηθούν στον τελικό τους προορισμό.

Αυτή η ροή δεδομένων στέλνεται απο το επίπεδο δικτύου (μέσω του πρωτοκόλλου IP) σε πολλαπλούς προορισμούς με την μορφή πακέτων. Αντίστοιχα, κάθε συσκευή που δέχεται πακέτα δεδομένων απο άλλους hosts προωθούν αυτά τα πακέτα δεομένων στα ανώτερα επίπεδα προκειμένου αυτά να μεταφραστούν απο απλή ροή bits σε μια ολοκληρωμένη πληρόφορία η οποία θα μπορεί να είναι αναγνώσιμη από έναν τερματικό χρήστη.

Απο τα παραπάνω κατανοούμε ότι στο πρότυπο επικοινωνίας TCP/IP κάθε επικοινωνία που πραγματοποιείται αφορά πάντα ανταλλαγή πληροφορίας και μετατροπής τους σε bits για μετάδοση στα φυσικά μεσα (ethernet καλώδια, οπτικές ίνες κλπ) ή μετατροπής αυτής της ροής απο bits σε μια πληροφορία η οποία θα μπορεί να είναι κατανοητή απο εναν άνθρωπο.

Όλα αυτά δεν θα ήταν εφικτά αν δεν υπήρχαν οι υπηρεσίες πολύπλεξης και αποπολύπλεξης οι οποίες αναλαμβάνουν όλα τα παραπάνω που αναφέραμε. Κάθε πρωτόκολλο μεταφοράς (είτε το TCP είτε το UDP) εφαρμόζει τις εν λόγω τεχνικές πολύπλεξης/αποπολύπλεξης μέσω των θυρών επικοινωνίας (ports). Οι θύρες επικοινωνίας είναι ειδικά πεδία τα οποία βρίσκονται στις επικεφαλίδες του TCP και του UDP.

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

Αφαιρετική προσέγγιση πολύπλεξης/αποπολύπλεξης

Θύρα προορισμού και θύρα πηγής

Όπως αναφέραμε παραπάνω τόσο το πρωτόκολλο μεταφοράς UDP όσο και το TCP διαθέτουν στις επικεφαλίδες τους δύο πεδία διευθυνσιοδότησης επιπέδου μεταφοράς, τα πεδία αυτά είναι τα εξής:

  • Θύρα πηγής
  • Θύρα προορισμού

Τα δύο αυτά πεδία είναι ανάλογα των πεδίων IP διεύθυνσης πηγής και προορισμού του επιπέδου δικτύου. Δηλαδή αντιπροσωπεύουν μοναδικά κάθε εφαρμογή ή ένα πρωτόκολλο. Για παράδειγμα κάθε πρωτόκολλο διαθέτει μια θύρα επικοινωνίας (όπως για παράδειγμα το HTTP που διαθέτει την TCP θύρα επικοινωνίας 80) και κάθε εφαρμογή διαθέτει μια μοναδική θύρα επικοινωνίας. Η μέγιστη θύρα επιπέδου μεταφοράς είναι η 65535 και η ελάχιστη η 1 καθότι η 0 είναι δεσμευμένη.

Παράδειγμα πολύπλεξης/αποπολύπλεξης

Στην παραπάνω εικόνα αποτυπώνεται ο τρόπος με τον οποίο λειτουργεί ο μηχανισμός πολύπλεξης/αποπολύπλεξης. Επίσης παρατηρούμε ότι υπάρχουν τέσσερις διαφορετικές TCP/IP εφαρμογές που επικοινωνούν ταυτόχρονα. Από τις τέσσερις εφαρμογές οι δύο χρησιμοποιούν το TCP και οι άλλες δύο το UDP. Κάθεμια εφαρμογή που τρέχει στον υπολογιστή του πελάτη (client) στέλνει μηνύματα χρησιμοποιώντας συγκεκριμένο αριθμό TCP ή UCP θύρας. Αυτοί οι αριθμοί θύρας χρησιμοποιούνται από τα προγράμματα (TCP ή UDP) του διακομιστή (server) προκειμένου να προωθήσει τα πακέτα στην κατάλληλη διεργασία εφαρμογής.

Πολύπλεξη/Αποπολύπλεξη (multiplexing/demultiplexing) με βάση το πρωτόκολλο μεταφοράς TCP

Αφού κατανοήσαμε μες τις άκρες την λειτουργία της διευθυνσιοδότησης στο επίπεδο μεταφοράς και την λειτουργία της πολύπλεξης και τις αποπολύπλεξης ας δούμε σε αυτό το σημείο ένα παράδειγμα με βάση το πρωτόκολλο μεταφοράς TCP. Έστω η παρακάτω εικόνα όπου έχουμε έναν πελάτη (client) που ανήκει στο δίκτυο Client LAN και θέλει πρόσβαση στην ιστοσελίδα codebrakes.gr.

Παράδειγμα ενός δικτύου πελάτη - εξυπηρετητή (Client - Server)

Όπως βλέπουμε από την παραπάνω εικόνα έχουμε δύο τοπικά δίκτυα (LANs) με τον διακομιστή (server) να έχει την IP 152.8.7.11 και τον πελάτη (Client) με δημόσια IP (NAT) την 162.103.56.103. Ο διακομιστής (server) του Server LAN προσφέρει διάφορες υπηρεσίες μεταξύ αυτών όπως το HTTP, FTP κλπ. Έστω ότι ο πελάτης (client) θέλει να σερφάρει στο διαδίκτυο (internet) και θέλει πρόσβαση σε μια ιστοδελίδα π.χ. codebrakes.gr, για να το κάνει αυτό θα πρέπει να χρησιμοποιήσει το πρωτόκολλο HTTP. Τυπικά κάθε φορά που εμείς χρησιμοποιούμε το διαδίκτυο εν αγνοία μας ο υπολογιστής μας (και κατά συνέπεια και εμείς) χρησιμοποιούμε ένα σύνολο από διάφορα πρωτόκολλα (όπως για παράδειγμα το HTTP για πρόσβαση στο Web, το FTP για μεταφορά αρχείων κι άλλα πολλά).

Κάθε πρωτόκολλο λοιπόν χρησιμοποιεί μια θύρα επικοινωνίας όπως έχουμε δει κι από τα προηγούμενα κεφάλαια όπου το HTTP χρησιμοποιεί την θύρα 80, το HTTPS την TCP θύρα επικοινωνίας 443, το FTP τις θύρες επικοινωνίας 20 (σύνδεση δεδομένων) και 21 (σύνδεση ελέγχου) κοκ. Στο παράδειγμα μας λοιπόν ο πελάτης (client) στο τοπικό δίκτυο Client LAN θέλει να αποκτήσει πρόσβαση στο περιεχόμενο της ιστοσελίδας codebrakes.gr. Συνεπώς θα χρησιμοποιηθούν τα πρωτόκολλα HTTP για πρόσβαση στην ιστοσελίδα και στο web όπως δείχνει και η παρακάτω εικόνα.

Χρήση πρωτοκόλλου HTTP

Για να μπορέσει λοιπόν ο πελάτης (client) να αποκτήσει πρόσβαση στην ιστοσελίδα Codebrakes.gr (χρήση HTTP) θα πρέπει στο πακέτο αίτησης που θα στείλει να μπουν τα εξής στοιχεία:

  • Η δική του IP διεύθυνση (διεύθυνση πηγής: 162.103.56.103)
  • Η IP διεύθυνση του διακομιστή (server) που επιθυμεί να αποκτήσει πρόσβαση (διεύθυνση προορισμού: 152.8.7.11)
  • Η θύρα πηγής (η οποία στο παράδειγμά μας είναι η TCP θύρα που χρησιμοποιεί ο browser π.χ. google chrome, Firefox κλπ)
  • Και τέλος η θύρα προορισμού η οποία απευθύνεται στο πρωτόκολλο που θέλουμε να χρησιμοποιήσουμε (που στο παράδειγμα μας είναι η θύρα 80)

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

Θύρες προορισμού και πηγής στο πακέτο αίτησης HTTP

Αυτό το πακέτο προωθείται προς τον server με το domain codebrakes.gr (152.8.7.11).

Προώθηση πακέτου HTTP απάντησης προς τον πελάτη (client)

Και με αυτόν τον τρόπο ο πελάτης (Client) μπορεί να έχει πρόσβαση σε μια ιστοσελίδα.

To PC του πελάτη (client) μόλις λάβει το πακέτο HTTP απάντησης από τον server

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