Δημοσιεύτηκε: 03 Σεπ 2011, 22:20
από stamatiou
Star_Light έγραψε:Λοιπον επανέρχομαι με τις λύσεις των 2 τελευταίων ασκήσεων.
Έχουμε και λέμε για την άσκηση 2
Λυση Άσκησης 2Spoiler: show
- Κώδικας: Επιλογή όλων
Β. Σύμφωνα με το πρωτόκολλο HDLC (γιατι τα πρωτόκολλα ορίζουν κανόνες) για την αναγνώριση της αρχής ενος frame απο τον δέκτη οπως έχουμε πει χρησιμοποιείται ενας μοναδικός κωδικός (αρχή μηνύματος) flag byte ή απλα flag αρχής και τέλους. Αυτο το flag ειναι ο 01111110 και ο δέκτης εξετάζει καθε ψηφίο που λαμβάνει επομενως με τον τρόπο αυτο μολις αναγνωρίσει το flag ξερει οτι αρχίζει το frame. Είναι δηλαδη ενας τρόπος για να καταλάβει ποτε αρχίζει το πλαίσιο και ποτε τελειώνει (καθώς ο ίδιος κωδικος μπαίνει και στο τελος) οριοθετόντας το με αυτον τον τρόπο. Αυτο βέβαια μπορεί να δημιουργήσει προβλήματα αν αυτο το flag εμφανισθεί και πουθενα αλλου μεσα στο πακετο μας πχ λογω κάποιου σφάλματος κατα την μετάδοση το οποιο δεν ειναι καθολου απίθανο σαν ενδεχόμενο , για αυτο το λογο λοιπον προσπαθούμε με την τεχνική bit stuffing να το "διορθώσουμε" μέχρι να το πάρει ο δέκτης. Για αυτο λοιπον οταν πέσουμε πανω σε 6 συνεχόμενους άσσους μεταξύ του 5ου και του 6ου θα παρεμβληθεί ενα 0 το οποίο και θα βγει οταν ο δέκτης θα κάνει την αποκωδικοποιηση του για να ανακτησει το αρχικο πακέτο. Επομένως κατα την κωδικοποιήση θα έχουμε (σύμφωνα και με τον κανονα μετα τους 5 άσσους να προσθέτουμε 0 ακομη και αν ακολουθεί αλλο 0)
01111110 1000011 1001111 1"0"001111 1"0"001100 01111110
ενω κατα την αποκωδικοποιήση :
1000011 1001111 10001111 1001100 οσο δηλαδη και το αρχικό πακέτο. Ο δέκτης θα πρέπει φυσικά να γνωρίζει το πρωτόκολλο HDLC ωστε να μπορέσει να κάνει την αποκωδικοποιήση.
Γ. Η αποκωδικοποιήση τώρα των δεδομένων σε πραγματικό μήνυμα(εννοωντας που να ειναι κατανοητό απο τους ανθρώπους) :D μπορει να γίνει σε 2 φάσεις.
1 ΦΑΣΗ => Καταρχήν έχουμε ορισμένες δυαδικές ακολουθίες δηλαδη δεδομένα τα οποια ομως αναπαριστώνται στο δυαδικό σύστημα , κάτι τέτοιο δεν αποτελεί πρόβλημα μιας και μπορεί κάποιος να κάνει την αποκωδικοποιήση και την μετατροπή τους ουσιαστικά απο το δυαδικό στο δεκαδικό σύστημα
και επειδη η εκφώνηση μας λεει οτι τα δεδομένα αυτα αναπαριστούν κώδικα ASCII με 7 δυαδικά , εξαρχής θα παίξω με 7 δυαδικά.
Πραγματικά λοιπον ο δυαδικός 1000011 αντιστοιχεί στον δεκαδικό 67
ο δυαδικός 1001111 αντιστοιχεί στον 79
ο 1001111 αντιστοιχεί στον 79 μιας και ειναι ιδιοι
και τελος ο 1001100 στον 76
Πριν προχωρήσουμε στην 2η φάση (απο δεκαδικό σε χαρακτήρα) θα πρέπει να σκεφτούμε τι μας λέει η κωδικοποιήση ASCII. Συμφωνα με το ASCII λοιπον απο το οποίο η κωδικοποιηση έχει παρει το ονομα της κάθε αριθμητική τιμή αντιστοιχει σε έναν χαρακτήρα και αυτο φυσικα δεν το επινόησαν για διασκέδαση αλλα ουτε για παιχνιδι καθως έχει άμεση σχέση με τον τρόπο αποθήκευσης ενος χαρακτήρα σε ενα υπολογιστικό σύστημα. Ένας χαρακτήρας ειναι ενας αριθμητικός τύπος δεδομένων επομένως για να ξεπεραστεί η "αδυναμία" αυτη που αρχικα θα εκανε καποιον να αναρωτιεται για το πως τελικα γίνεται να αποθηκεύσεις εναν χαρακτηρα στην μνήμη του συστήματος σου έπινοήθηκε - προτάθηκε - δημιουργήθηκε οπως θελετε πείτε το η ASCII.
ΕΠομένως και σύμφωνα με τον απλουστατο κώδικα που έδωσα για τον υπολογισμό απο αριθμητική τιμή σε χαρακτήρες
Ο 67 αντιστοιχεί στον C
o 79 στον Ο
και ο 76 στον L
και επομένως το μήνυμα που τελικά μεταδόθηκε ηταν η αγγλική λέξη COOL. :)
Αααααα, δλδ έπρεπε στο ήδη υπάρχον να κάνουμε και bit stuffing;