101001 101001 Επίπεδο ύνδεσης Δεδομένων (Data Link Layer DLL) Είναι το δεύτερο επίπεδο στη διαστρωμάτωση του OSI (μετρώντας από κάτω) Ασχολείται με την αποδοτική και αξιόπιστη επικοινωνία μεταξύ δύο γειτονικών κόμβων γειτονικοί είναι οι κόμβοι που συνδέονται με ένα κανάλι επικοινωνίας (τα bit παραδίδονται με τη σειρά που στάλθηκαν). Α Β Α Β Σειρά εκπομπής Γειτονικοί Κόμβοι 101001 Σειρά λήψης Σειρά εκπομπής 000111 Σειρά λήψης Απομακρυσμένοι Κόμβοι (μή γειτονικοί) 1
Αποκλειστικός στόχος του DLL Παροχή Υπηρεσιών προς το επίπεδο δικτύου Θεμελιώδης υπηρεσία: η μεταφορά δεδομένων από το επίπεδο δικτύου του κόμβου προέλευσης προς το επίπεδο δικτύου του κόμβου προορισμού. 2
Οι τυπικές υπηρεσίες που παρέχονται είναι: Ασυνδεσμική υπηρεσία χωρίς επιβεβαιώσεις ο κόμβος-αποστολέας απλά μεταδίδει δεδομένα χωρίς να τον απασχολεί η ορθή λήψη των δεδομένων από τον παραλήπτη κατάλληλη για εφαρμογές πραγματικού χρόνου Ασυνδεσμική υπηρεσία με επιβεβαιώσεις η λήψη κάθε ομάδας δεδομένων (πακέτο) πρέπει να επιβεβαιωθεί. Εάν δεν ληφθεί επιβεβαίωση από τον παραλήπτη μέσα σε ένα προκαθορισμένο χρονικό διάστημα το πακέτο μεταδίδεταοι ξανά. αξιοπιστία (χρησιμή υπηρεσία στα μή αξιόπιστα κανάλια, όπως οι ασύρματες ζεύξεις) Συνδεσμοστρεφής υπηρεσία με επιβεβαιώσεις Οι κόμβοι «συμφωνούν» να επικοινωνήσουν (εγκαθιδρύεται μία λογική σύνδεση). Κάθε πακέτο αριθμείται και μεταδίδεται και λαμβάνεται σε σειρά. Αντίθετα στην ασυνδεσμική υπηρεσία μπορεί να χαθεί μία επιβεβαίωση και επομένως ένα συγκεκριμένο πακέτο μπορεί να παραληφθεί πολλές φορές. 3
Οι γειτονικοί κόμβοι μπορεί να είναι μέλη ενός τοπικού δικτύου (χρησιμοποιούν ένα κοινό κανάλι) ή να αποτελούν τους μοναδικούς κόμβους του δικτύου (επικοινωνία σημείο πρός σημείο). Δημιουργούνται τα εξής σημαντικά ζητήματα: Αντιμετώπιση σφαλμάτων που προκαλεί το κανάλι (π.χ. λόγω θορύβου) Συντονισμός πρόσβασης στο κοινό κανάλι επικοινωνίας (στα δίκτυα με κοινό μέσο μετάδοσης) Ένας από τους γειτονικούς κόμβους μεταδίδει δεδομένα πρός τον παραλήπτη με μεγαλύτερο ρυθμό από ότι μπορεί να «αντέξει» ο παραλήπτης. Δίκτυο Σημείο-προς-Σημείο Δίκτυο Πολλαπλής Πρόσβασης 4
Η παροχή αξιόπιστης υπηρεσίας από το DLL πρός το επίπεδο δικτύου λαμβάνει χώρα σε δύο φάσεις: η Πλαισίωση (Framing) των δεδομένων η Ανίχνευση και Διόρθωση Σφαλμάτων που συνέβησαν στο κάθε Πλαίσιο (Error Detection and Error Correction) Για τον συντονισμό της πρόσβασης υπεύθυνο είναι το Τπο-επίπεδο Πρόσβασης στο Μέσο (Medium Access Control MAC). Για τους «γρήγορους» αποστολείς εφαρμόζονται πρωτόκολλα ελέγχου ροής π.χ. Έλεγχος ροής με ανάδραση (feedback-based flow control) 5
Πλαισίωση Το επίπεδο DLL χρησιμοποιεί τις υπηρεσίες από το φυσικό επίπεδο. Λαμβάνει μία ροή από bit Η ροή ενδέχεται να περιέχει σφάλματα Το πλήθος των bit μπορεί να διαφέρει από αυτά που αρχικά μεταδώθηκαν Η συνηθισμένη τακτική είναι η ομαδοποίηση των bit αυτών σε πλαίσια και η διαχείριση τους ως ξεχωριστές ομάδες (έλεγχος σφαλμάτων, επαναμεταδόσεις) 10001001110 101110111011 1011101111 0000111...1000100111010111011101110111011110000111... Οι «ομάδες» αυτές έχουν συνήθως μέγεθος μερικές εκατοντάδες ή χιλιάδες bytes. 6
Σεχνικές πλαισίωσης Εισαγωγή χρονικών χασμάτων μεταξύ των ομάδων (πλαισίων) Κατ αναλογία με τα κενά που βάζουμε ανάμεσα στις λέξεις σε ένα κείμενο Αρχικά...1000100111010111011101110111011110000111... Με χρονικά χάσματα...1000100111 01011101110 1110111011 110000111... gap gap gap Μειονέκτημα στα δίκτυα σπανίως παρέχονται εγγυήσεις χρονισμού. ενδεχομένως τα χρονικά κενά να εξαφανιστούν Η μέθοδος αυτή δεν χρησιμοποιείται 7
Σεχνικές πλαισίωσης Μετρητές Χαρακτήρων Byte Σημαίας, με συμπλήρωση byte. Μετρητής χαρακτήρων χρησιμοποίηση ενός πεδίου στην επικεφαλίδα (header) του DLL που να προσδιορίζει πόσοι χαρακτήρες θα περιέχονται στο πλαίσιο Πρόβλημα η αλλοίωση του μετρητή! Χρησιμοποιείται σπάνια 8
Byte σημαίας παρακάμπτει το πρόβλημα της αλλοίωσης του μετρητή χαρακτήρων. επιβάλλει σε κάθε πλαίσιο να ξεκινά και να τελειώνει με ένα ειδικό byte (σημαία). Ο παραλήπτης μπορεί να εντοπίσει την αρχή ή το τέλος του πλαισίου ακόμα και εάν αλλοιωθεί ένα από τα flag bytes. Πρόβλημα Έστω ότι το flag byte είναι η ακολουθία 00000001. Τί θα συμβεί εάν εμφανιστεί αυτή η ακολουθία και μέσα στα δεδομένα του πλαισίου? Ο δέκτης λανθασμένα θα νομίζει ότι πρόκειται για την αρχή ή το τέλος του πλαισίου. Λύση όπου εμφανίζεται ίδια ακολουθία με το flag byte μέσα στο πλαίσιο, τοποθετείται ένας ειδικός χαρακτήρας (ESC byte) πρίν από την ακολουθία αυτή (συμπλήρωση με byte). Ακολουθία όμοια με το flag byte 9
Έλεγχος και Διόρθωση φαλμάτων (Error Detection and Correction - EDC) Γενικό σχεδιάγραμμα Αποστολέας Παραλήπτης Δεδομενόγραμμα Επίπεδο δικτύου Επίπεδο σύνδεσης Δεδομενόγραμμα NAI D =OK? OXI Απόφαση D EDC D EDC Επίπεδο φυσικό Κανάλι Εμπλουτισμός του πλαισίου προς αποστολή με bits EDC τα οποία θα βοηθήσουν τον δέκτη να εντοπίσει και (ενδεχομένως) να διορθώσει σφάλματα και αλλοιώσεις. 10
Έλεγχος Ισοτιμίας (Parity Check) Απλούστερη μορφή ανίχνευσης σφαλμάτων. Χρησιμοποιεί ένα bit ισοτιμίας. Εάν τα δεδομένα που θα αποσταλλούν περιλαμβάνουν d bits, τότε ο αποστολέας εισάγει ένα πρόσθετο bit στα δεδομένα πρός αποστολή (σύνολο d+1). Το πρόσθετο bit λέγεται bit ισοτιμίας (parity bit) και η τιμή του επιλέγεται έτσι ώστε: το σύνολο των «άσσων» στο πλαίσιο (συμπεριλαμβάνομένου και το parity bit) να είναι άρτιος αριθμός (άρτια ισοτιμία) το σύνολο των «άσσων» στο πλαίσιο (συμπεριλαμβάνομένου και το parity bit) να είναι περιττός αριθμός (περιττή ισοτιμία) Ο δέκτης πρέπει να γνωρίζει από πριν εάν πρόκειται να χρησιμοποιηθεί άρτια ή περιττή ισοτιμία. μετρά τους «άσσους» στο πλαίσιο εάν είναι άρτιος κανένα σφάλμα δεν σημειώθηκε (για άρτια ισοτιμία) αντίστοιχα και για την περιττή ισοτιμία. 11
Παραδείγματα Άρτια Ισοτιμία Αποστολέας 0 1 1 1 0 0 0 1 0 Παραλήπτης 0 1 1 1 0 0 0 1 0 Κανένα φάλμα d bits Parity bit d bits Parity bit Αποστολέας Παραλήπτης 0 1 1 1 0 0 0 1 0 0 1 1 0 0 0 0 1 0 φάλμα d bits Parity bit d bits Parity bit Αποστολέας Παραλήπτης 0 1 1 1 0 0 0 1 0 d bits Parity bit 0 1 0 0 0 0 0 1 0 d bits Parity bit Κανένα φάλμα Λάθος εκτίμηση 12
Παράδειγμα Κάνοντας χρήση της ASCII-7 κωδικοποίησης επιθυμούμε να μεταδόσουμε την λέξη world. Nα γράψετε τις ακολουθίες bit που θα μεταδοθούν εάν υποθέσουμε μηχανισμό άρτιας και περιττής ισοτιμίας: 13
Χρήση Parity bits και για την διόρθωση σφαλμάτων (δισδιάστατη ισοτιμία) Τοποθέτηση των d bits σε πίνακα με i γραμμές και j στήλες: d 1,1 d 1,j d 1,j+1 d 2,1 d 2,j d 2,j+1 d i,1 d i,j d i,j+1 Parity bits γραμμών d i+1,1 d 1+1,j d 1+1,j+1 Parity bits στηλών 14
Παράδειγμα (με χρήση άρτιας ισοτιμίας) 1 0 1 0 1 1 1 1 1 0 0 1 1 1 0 Αποστολέας 1 0 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 1 0 0 1 0 1 0 Αποστέλλεται 1 ο Αποστέλλεται 2 ο Αποστέλλεται 3 ο Αποστέλλεται 4 ο Παραλήπτης 1 0 1 0 1 1 1 0 1 1 0 0 0 1 1 1 0 1 0 0 1 0 1 0 φάλμα Ισοτιμίας φάλμα Ισοτιμίας 15
Παράδειγμα Να γράψετε τις ακολουθίες των bit που θα μεταδοθούν για την λέξη world του προηγούμενου παραδείγματος με δισδιάστατη άρτια ισοτιμία. εάν κατά την μετάδοση το γράμμα r αλλοιωθεί έτσι ώστε τελικώς να ληφθεί ως q, θα είναι σε θέση ο δέκτης να αντιληφθεί και να διορθώσει το σφάλμα? Να δικαιολογηθεί η απάντηση σας. 16
Έλεγχος Ροής Καθορισμός του Προβλήματος πρός Επίλυση Αποστολέας Ταχύτερος από τον Δέκτη Αποτέλεσμα: υπερχείλιση των ενταμιευτών στον δέκτη και άρα απώλειες πλαισίων Στόχος ο η «συγκράτηση» του αποστολέα (ο έλεγχος του) Επιτυγχάνεται με στην ανάδραση (feedback) του παραλήπτη 17
Πρωτόκολλο Παύσης και Αναμονής (Stop and Wait) Θεωρούμε την απλουστευμένη περίπτωση: «Αθόρυβο» κανάλι επικοινωνίας Μονόδρομη μετάδοση δεδομένων Πεπερασμένο μέγεθος ενταμιευτή στον παραλήπτη Περιγραφή πρωτοκόλλου Ο αποστολέας μεταδίδει ένα πλαίσιο δεδομένων και σταματά (παρόλο που μπορεί να διαθέτει και άλλα πλαίσια πρός μετάδοση) Μόλις το λάβει ο παραλήπτης, μεταδίδει ένα πακέτο επιβεβαίωσης (Acknowledgment ACK) πρός τον αποστολέα. Μόλις το λάβει ο αποστολέας προχωρά στην μετάδοση του επόμενου στη σειρά πλαισίου. Ο αποστολέας «εξαναγκάζεται» να περιμένει μέχρι να λάβει το ACK. Πρόβλημα τα κανάλια είναι επιρρεπή σε θόρυβο. μπορεί να χαθεί είτε το πλαίσιο δεδομένων είτε το ACK 18
Αυτόματη Αίτηση Επανάληψης (Automatic Repeat Request ARQ) Θεωρούμε την περίπτωση: Κανάλι επικοινωνίας με θόρυβο Μονόδρομη μετάδοση δεδομένων Πεπερασμένο μέγεθος ενταμιευτή στον παραλήπτη ο παραλήπτης έχει την δυνατότητα ανίχνευσης ενός εσφαλμένου πλαισίου. Περιγραφή πρωτοκόλλου Ο αποστολέας μεταδίδει ένα πλαίσιο δεδομένων, ξεκινά ένα χρονόμετρο και σταματά Μόλις το λάβει ο παραλήπτης, το ελέγχει για σφάλματα. Εάν δεν περιέχει σφάλματα μεταδίδει ένα ACK, εάν είναι εσφαλμένο δεν μεταδίδει τίποτε. Εάν λάβει ο αποστολέας ένα ACK συνεχίζει όπως πρίν. Εάν όχι τότε με τη λήξη του χρονομέτρου ξαναμεταδίδει το προηγούμενο πακέτο (μέχρι να λάβει ένα ACK). Πρόβλημα μπορεί να χαθεί είτε το ACK (να αποσταλεί χωρίς να χρειάζεται το ίδιο πλαίσιο) Λύση τοποθέτηση ενός αριθμού ακολουθίας στην επικεφαλίδα του πακέτου 19
Εμβόλιμη επιβεβαίβωση (piggybacking) ισχύει για την περίπτωση που έχουμε αμφίδρομη μετάδοση δεδομένων αντί να απαντά με ένα ξεχωριστό πακέτο επιβεβαίωσης κάθε φορά που λαμβάνει ένα πλαίσιο δεδομένων. Ένας κόμβος μπορεί να περιμένει μέχρι να έχει ένα πλαίσιο πρός μετάδοσης και να συμπεριλάβει και την επιβεβαίωση μέσα στο πλαίσιο δεδομένων. Βέλτιστη χρήση του καναλιού Πρόβλημα πόσο θα περιμένει για να δεί εάν του έρθει πλαίσιο δεδομένων? εάν περιμένει περισσότερο από το χρονόμετρο που έχει ξεκινήσει ο άλλος κόμβος? Λύση εάν διαθέτει ήδη (αποθηκευμένο στον buffer) ένα πλαίσιο, τότε συμπεριλαμβάνει το ACK. εάν όχι, τότε στέλνει ένα ξεχωριστό ACK πλαίσιο. 20
Οπισθοδρόμηση κατά N (Go-back-N) είναι ένα πρωτόκολλο ARQ Ο αποστολέας μεταδίδει μια σειρά από αριθμημένα πλαίσια. Εάν δεν υπάρξουν σφάλματα ο παραλήπτης επιβεβαιώνει την λήψη. Εάν υπάρξουν σφάλματα τότε το πλαίσιο απορρίπτεται καθώς και τα υπόλοιπα πλαίσια που το ακολουθούν: 21
Επιλεκτική Επανάληψη (Selective Repeat) Βελτίωση της Go-back-N Για κάθε εσφαλμένο πλαίσιο ο παραλήπτης παράγει μία Αρνητική Επιβεβαίωση (Negative Acknowledgment NACK) Τα σωστά πλαίσια αποθηκεύονται προσωρινά και αναδιατάσσονται μόλις ληφθούν σωστά αυτά που χάθηκαν. 22