ΚΕΦΑΛΑΙΟ 11: Διαδικασία Μετάδοσης Δεδομένων 11.1. Εισαγωγή Η μετάδοση δεδομένων αναφέρεται στην μεταφορά κάποιας πληροφορίας από ένα σημείο σε κάποιο άλλο, αφού πρώτα έχει μετασχηματισθεί σε ένα ηλεκτρομαγνητικό σήμα, διαμέσου ενός καναλιού επικοινωνίας. Παραδείγματα τέτοιων καναλιών επικοινωνίας αποτελούν καλώδια χαλκού, οπτικές ίνες όπως επίσης και ασύρματα μέσα μετάδοσης (π.χ. αέρας). Η μεταφερόμενη πληροφορία είναι συνήθως ένας συρμός από bits ο οποίος δημιουργείται από μια τοποθεσία την οποία θα αποκαλούμε πηγή και ο οποίος καταλήγει σε κάποια άλλη τοποθεσία την οποία συνήθως αποκαλούμε δέκτη. Η μετάδοση δεδομένων είναι μια θεματική ενότητα των επικοινωνιών και δεν μπορεί να καλυφθεί με καθολικό τρόπο στην ενότητα αυτή. Σε συνέχεια της προηγούμενης ενότητας θα περιγράψουμε την διαδικασία μετάδοσης δεδομένων για το TCP. Σύμφωνα λοιπόν με όσα αναφέραμε στην προηγούμενη ενότητα το TCP έχει κάποια χαρακτηριστικά τα οποία το διαχωρίζουν από άλλα πρωτόκολλα όπως το UDP. Επιγραμματικά αυτά είναι: Μεταφορά δεδομένων η οποία ακολουθεί κάποια σειρά Αναμετάδοση χαμένων πακέτων Απόσυρση διπλών πακέτων Μετάδοση δεδομένων χωρίς σφάλματα Έλεγχος της ροής μετάδοσης
11.2. Μεταφορά Δεδομένων η οποία Ακολουθεί Κάποια Σειρά, Χαμένα Πακέτα και Πολλαπλά Πακέτα Το TCP χρησιμοποιεί έναν αριθμό για να μπορεί να ανιχνεύσει το κάθε byte δεδομένων. Ο αριθμός αυτός καθορίζει την σειρά με την οποία τα bytes έχουν αποσταλεί από την κάθε μηχανή ώστε τα δεδομένα να μπορούν να μεταφερθούν με ασφαλή τρόπο και με την σωστή σειρά, παρά τα όσα προβλήματα μπορεί να συμβούν κατά την διαδικασία μετάδοσης. Για κάθε byte το οποίο μεταδίδεται, ο αριθμός αυτός αυξάνεται. Κατά τα αρχικά στάδια όπου δύο μηχανές προσπαθούν να εγκαταστήσουν μια σύνδεση, η καθεμία αποστέλλει τον αρχικό αριθμό πακέτου. Αυτός ο αριθμός μπορεί να είναι τυχαίος. Το TCP χρησιμοποιεί ένα συγκεντρωτικό μηχανισμό επαλήθευσης, σύμφωνα με τον οποίο ο δέκτης της πληροφορίας στέλνει ένα μήνυμα επιβεβαίωσης το οποίο σημαίνει ότι έχει λάβει όλα τα δεδομένα πριν από το επιβεβαιωμένο αριθμό πακέτου. Σε περίπτωση που ο αποστολέας των πακέτων καταλάβει πως ο δέκτης έχει πάρει κάποιο λανθασμένο πακέτο ή κάποιο πακέτο έχει χαθεί, προσπαθεί να το ξαναστείλει.
11.3. Μεταφορά Δεδομένων Χωρίς Σφάλματα Οι αριθμοί πακέτων και τα μηνύματα επιβεβαίωσης καλύπτουν τις ανάγκες για διατήρηση της σειράς των πακέτων καθώς επίσης προσφέρουν έναν τρόπο για την ανίχνευση πολλαπλών ή χαμένων πακέτων. Για να εξασφαλισθεί η ορθότητα των πακέτων, συμπεριλαμβάνεται στα πακέτα ένα πεδίο το οποίο επιτρέπει την διεξαγωγή ελέγχων στα δεδομένα (checksumfield). Ο τρόπος αυτός ελέγχου είναι σχετικά αδύναμος με βάση τα σύγχρονα στάνταρ. Εάν το TCP/IP σχεδιαζόταν ξανά σήμερα, μάλλον θα είχε έλεγχο κυκλικού πλεονασμού των 32bit, το οποίο γενικά μπορεί να ανιχνεύσει πολλά περισσότερα σφάλματα.
11.4. Έλεγχος Ροής Μετάδοσης Το TCP χρησιμοποιεί ένα end-to-end έλεγχο ροής δεδομένων για να αποφύγει την περίπτωση όπου ο αποστολέας δεδομένων τα αποστέλλει πολύ γρήγορα και ο δέκτης δεν προλαβαίνει να τα δεχτεί και επεξεργαστεί με ασφάλεια. Η ύπαρξη ενός μηχανισμού για τον έλεγχο της ροής των δεδομένων είναι απαραίτητη, ειδικά σε ένα περιβάλλον όπου επικοινωνούν μηχανές με πολύ διαφορετικές ταχύτητες δικτύων. Για παράδειγμα όταν ένα γρήγορο PC στέλνει δεδομένα σε ένα πολύ πιο αργό PDA, το PDA πρέπει να ρυθμίσει τον ρυθμό με τον οποίο του έρχονται τα δεδομένα, για την απρόσκοπτη λειτουργία του. Με ανάλογο τρόπο η ρύθμιση του ρυθμού μετάδοσης είναι χρήσιμη στην περίπτωση όπου μια εφαρμογή η οποία λαμβάνει τα δεδομένα, τα διαβάζει πολύ πιο αργά από ότι τα στέλνει μια άλλη εφαρμογή. Το TCP χρησιμοποιεί ένα κυλιόμενο παράθυρο για να υλοποιήσει το πρωτόκολλο διαχείρισης του ρυθμού μετάδοσης. Σε κάθε τμήμα του TCP, ο δέκτης καθορίζει στο πεδίο παράθυρο λήψης, το πόσo πολύ πληροφορία (σε bytes) είναι διατεθειμένος να λάβει σε αυτή τη σύνδεση. Ο αποστολέας μπορεί να στείλει μέχρι τόση πληροφορία, πριν του επιστραφεί κάποιο μήνυμα από τον λήπτη.
11.5. Σύνοψη Κεφαλαίου - Το TCP χρησιμοποιεί έναν αριθμό για να μπορεί να ανιχνεύσει το κάθε byte δεδομένων. - Το TCP χρησιμοποιεί ένα συγκεντρωτικό μηχανισμό επαλήθευσης, σύμφωνα με τον οποίο ο δέκτης της πληροφορίας στέλνει ένα μήνυμα επιβεβαίωσης το οποίο σημαίνει ότι έχει λάβει όλα τα δεδομένα πριν από το επιβεβαιωμένο αριθμό πακέτου. - Για να εξασφαλισθεί η ορθότητα των πακέτων, συμπεριλαμβάνεται στα πακέτα ένα πεδίο το οποίο επιτρέπει την διεξαγωγή ελέγχων στα δεδομένα (checksumfield). - Το TCP χρησιμοποιεί ένα end-to-end έλεγχο ροής δεδομένων για να αποφύγει την περίπτωση όπου ο αποστολέας δεδομένων τα αποστέλλει πολύ γρήγορα και ο δέκτης δεν προλαβαίνει να τα δεχτεί και να τα επεξεργαστεί με ασφάλεια. Ερώτηση : 11.5.1. Ανέφερε επιγραμματικά τα χαρακτηριστικά του TCP που το ξεχωρίζουν από άλλα πρωτόκολλα, όπως για παράδειγμα το UDP. Ερώτηση: 11.5.2. Με ποιο τρόπο ανιχνεύει το TCP το κάθε byte δεδομένων. Πιθανές απαντήσεις: Χρησιμοποιεί ένα γράμμα για κάθε byte Χρησιμοποιεί έναν αύξοντα αριθμό για το κάθε byte Στο πρωτόκολλο TCP η ανίχνευση του κάθε byte μας είναι αδιάφορη αφού λόγω σχεδίασης το κάθε byte φτάνει αυτόματα στον προορισμό του. Ερώτηση : 11.5.3. Αν σχεδιάζατε ξανά το πρωτόκολλο TCP/IP με τα σημερινά δεδομένα, προτείνετε ένα τρόπο για να περιοριστούν ακόμα περισσότερα τα σφάλματα.