1.5
Τι είναι ένα Πρωτόκολλο
Τα πρωτόκολλα, όπως το TCP και το IP, παρέχουν τους απαραίτητους
συντακτικούς και σημασιολογικούς κανόνες για την επικοινωνία. Ως εκ τούτου,
περιέχουν τις λεπτομέρειες για τη μορφή των μηνυμάτων, περιγράφουν τον τρόπο με
τον οποίο θα ανταποκρίνεται ένας υπολογιστής σε ένα μήνυμα που λαμβάνει καθώς και τον τρόπο με τον οποίο θα
χειρίζεται τα σφάλματα ή άλλες μη φυσιολογικές καταστάσεις.
" Πρωτόκολλο είναι η επίσημη
της μορφής των μηνυμάτων και οι μηχανές καθώς και οι κανόνες που πρέπει να ακολουθήσουν δύο ή περισσότεροι
υπολογιστές για να ανταλλάξουν εκείνα τα μηνύματα."
Ένα πρωτόκολλο κατά τον Tannenbaum είναι ένα σύνολο
κανόνων, βάσει των οποίων διεξάγεται η επικοινωνία των διεργασιών. Οι εν λόγω
κανόνες διέπουν τη δομή και το νόημα των πλαισίων, των πακέτων ή των μηνυμάτων
που ανταλλάσσονται μεταξύ των ομότιμων οντοτήτων του ίδιου στρώματος. Οι
οντότητες χρησιμοποιούν τα πρωτόκολλα έτσι ώστε να υλοποιήσουν τις υπηρεσίες
τους. Έχουν την ευχέρεια να αλλάζουν τα πρωτόκολλά τους κατά βούληση, εφόσον
δεν αλλάζει η υπηρεσία που είναι ορατή στους χρήστες τους.
Τα πρωτόκολλα παρέχουν
υπηρεσίες με ή χωρίς σύνδεση. Τα περισσότερα δίκτυα υποστηρίζουν ιεραρχίες
πρωτοκόλλων, με κάθε στρώμα να παρέχει υπηρεσίες στα ανώτερά του στρώματα και
να τα απομονώνει από τις λεπτομέρειες των πρωτοκόλλων που χρησιμοποιούνται στα
κατώτερα στρώματα. Οι στοίβες πρωτοκόλλων γενικά βασίζονται είτε στο μοντέλο
OSI, είτε στο μοντέλο TCP/IP. Αμφότερα διαθέτουν στρώματα δικτύου, μεταφοράς
και εφαρμογής αλλά διαφέρουν στα άλλα στρώματα.
Όταν το στρώμα n ενός τερματικού διεξάγει συζήτηση με το στρώμα n ενός άλλου τερματικού χρησιμοποιούνται κανόνες και
συμβάσεις, οι οποίοι συλλογικά ονομάζονται πρωτόκολλο
(protocol) στρώματος n.
Πρωτόκολλο είναι κατ’ ουσία μία συμφωνία ανάμεσα στα δύο επικοινωνούντα μέρη,
ως προς τον τρόπο με τον οποίο θα προχωρήσει η επικοινωνία. Η παραβίαση του
πρωτοκόλλου θα κάνει την επικοινωνία δύσκολη εάν όχι αδύνατη.
Εικόνα
1.1: Ένα ανθρώπινο πρωτόκολλο και ένα πρωτόκολλο δικτύου υπολογιστών
Είναι μάλλον ευκολότερο να κατανοήσετε την έvvοια
ενός πρωτοκόλλου δικτύου υπολογιστών εξετάζοντας πρώτα μερικά ανθρώπινα
ανάλογα παραδείγματα, επειδή οι άνθρωποι εκτελούν πρωτόκολλα συνεχώς. Σκεφθείτε
τι κάνετε, όταν θέλετε να ρωτήσετε κάποιον να σας πει την ώρα. Μια τυπική
ανταλλαγή φαίνεται στην Εικόνα 1.1. Το ανθρώπινο πρωτόκολλο (ή τουλάχιστον οι καλοί τρόποι) υπαγορεύουν να χαιρετήσετε πρώτα (το
πρώτο «Γεια» στην Εικόνα 1.1) για να εκκινήσετε την επικοινωνία με κάποιον
άλλο. Η τυπική απάντηση σε ένα «Γεια» είναι να επιστρέψετε ένα μήνυμα
"Γεια". Έμμεσα, κάποιος παίρνει το «Γεια» σαν μια ένδειξη ότι μπορεί
να προχωρήσει και να ρωτήσει την ώρα. Μια διαφορετική απόκριση στο αρχικό
«Γεια» (όπως «Μην με ενοχλείς!» ή «Δεν μιλώ Ελληνικά» ή κάποια απόκριση που δεν
μπορεί να γραφεί) μπορεί να υποδηλώνει μια απροθυμία ή αδυναμία επικοινωνίας.
Σε αυτή την περίπτωση το ανθρώπινο πρωτόκολλο δεν θα ρωτούσε την ώρα. Μερικές
φορές κάποιος δεν παίρνει καμία απόκριση σε μία ερώτηση, οπότε τυπικά
παραιτείται από το να ρωτά από τον άλλο την ώρα Παρατηρήστε ότι στο δικό μας
ανθρώπινο πρωτόκολλο, υπάρχουν συγκεκριμένα μηνύματα που
στέλνουμε και συγκεκριμένες ενέργειες που κάνουμε αποκρινόμενοι στα λαμβανόμενα
απαντητικά μηνύματα ή σε άλλα συμβάντα (όπως αν δεν
πάρουμε καμία απάντηση μέσα σε ένα καθορισμένο χρονικό διάστημα). Είναι
σαφές ότι, τα εκπεμπόμενα και τα λαμβανόμενα μηνύματα καθώς και οι ενέργειες
που γίνονται όταν αυτά τα μηνύματα στέλνονται ή λαμβάνονται ή όταν συμβαίνουν
άλλα γεγονότα, παίζουν ένα βασικό ρόλο σε ένα ανθρώπινο πρωτόκολλο. Αν οι
άνθρωποι εκτελούν διαφορετικά πρωτόκολλα (για παράδειγμα, αν το ένα άτομο έχει
τρόπους, αλλά το άλλο δεν έχει, ή αν ο ένας καταλαβαίνει το τι σημαίνει ώρα και
ο άλλος όχι), τα πρωτόκολλα δεν συνεργάζονται και δεν μπορεί να γίνει καμία
χρήσιμη εργασία Το ίδιο ισχύει στη δικτύωση - πρέπει δύο (ή περισσότερες)
οντότητες που επικοινωνούν να εκτελούν το ίδιο πρωτόκολλο για να κάνουν μια
εργασία.
Ας εξετάσουμε μια δεύτερη ανθρώπινη αναλογία Υποθέστε ότι είστε σε ένα
αμφιθέατρο (π. χ. σε ένα μάθημα για τα δίκτυα υπολογιστών!). Ο καθηγητής μιλά
για τα πρωτόκολλα και έχετε μπερδευτεί.
Ο καθηγητής σταματά και ρωτά, «Υπάρχουν ερωτήσεις;» (ένα μήνυμα που
μεταδίδεται και λαμβάνεται από όλους τους σπουδαστές που δεν κοιμούνται).
Σηκώνετε το χέρι σας (μεταδίδοντας ένα έμμεσο μήνυμα στον καθηγητή).
Ο καθηγητής βεβαιώνει τη λήψη με ένα χαμόγελο, λέγοντας
"Ναι..." (ένα μεταδιδόμενο μήνυμα που σας
ενθαρρύνει να κάνετε την ερώτησή σας - οι καθηγητές τρελαίνονται να ακούν
ερωτήσεις).
Ο καθηγητής ακούει την ερώτησή σας (δηλαδή, μεταδίδετε το μήνυμά σας
στον καθηγητή σας). Ο καθηγητής ακούει την ερώτηση (δέχεται το μήνυμα της
ερώτησης) και απαντά (μεταδίδει μια απάντηση προς εσάς).
Πάλι, βλέπουμε ότι η μετάδοση και η λήψη μηνυμάτων και ένα σύνολο
συμβατικών ενεργειών που γίνονται όταν στέλνονται και λαμβάνονται μηνύματα,
είναι η καρδιά αυτού του πρωτοκόλλου ερώτησης-απάντησης.
Τώρα σαν ένα παράδειγμα πρωτοκόλλου
δικτύου υπολογιστών με το οποίο πιθανώς θα είστε
εξοικειωμένοι, σκεφθείτε τι συμβαίνει όταν κάνετε μια αίτηση σε ένα νέο εξυπηρετητή, δηλαδή, όταν πληκτρολογείτε το URL μιας ιστοσελίδας στο
πρόγραμμα περιήγησης στο Web. Το σενάριο φαίνεται στο δεξιό μισό της Εικόνας 1.1. Πρώτα, ο υπολογιστής σας θα στείλει ένα μήνυμα «αίτησης σύνδεσης»
στον εξυπηρετητή Web και θα περιμένει για μια απόκριση. Ο εξυπηρετητής Web θα λάβει τελικά το μήνυμα αίτησης σύνδεσης και θα επιστρέψει ένα μήνυμα «απόκρισης σύνδεσης». Ξέροντας ότι
τώρα μπορεί να ζητήσει το έγγραφο Web, ο υπολογιστής σας στέλνει το όνομα της ιστοσελίδας που θέλει να φέρει από τον εξυπηρετητή Web μέσα σε ένα μήνυμα
"GET". Τέλος, ο εξυπηρετητής Web επιστρέφει την ιστοσελίδα (αρχείο) στον υπολογιστή σας.
Δεδομένων των παραδειγμάτων με ανθρώπους και
δίκτυα που είδαμε παραπάνω, η ανταλλαγή μηνυμάτων και οι ενέργειες που
γίνονται, όταν αυτά τα μηνύματα στέλνονται και λαμβάνονται, είναι τα βασικά στοιχεία που ορίζουν ένα
πρωτόκολλο:
Ένα πρωτόκολλο ορίζει τη μορφή και τη σειρά
των μηνυμάτων που ανταλλάσσονται ανάμεσα σε δύο ή περισσότερες επικοινωνούσες οντότητες, όπως και τις
ενέργειες που γίνονται κατά τη διάρκεια της μετάδοσης και/ή της λήψης ενός
μηνύματος ή άλλου γεγονότος.
Τα
πρωτόκολλα υπάρχουν συνήθως με δύο μορφές. Καταρχήν η πλειοψηφία των
πρωτοκόλλων του Διαδικτύου διανέμεται με τη μορφή
κειμένου προς ανάγνωση - ως RFCs - με στόχο τη κατανόηση του σχεδιασμού και της
λειτουργίας τους. Κατά δεύτερον, τα πρωτόκολλα υφίστανται ως κώδικας
προγραμματισμού.
Τα
πρωτόκολλα είναι απαραίτητα κάθε φορά που πρέπει δύο διαφορετικά υπολογιστές ή
προγράμματα να συμφωνήσουν σχετικά με τον τρόπο με τον οποίο θα μεταβιβάσουν
τις πληροφορίες μεταξύ τους.
Π.χ κάθε φορά που θέλουμε να τυπώσουμε κάτι σε έναν
εκτυπωτή δικτύων χρειαζόμαστε τα πρωτόκολλα, διαφορετικά δεν θα υπάρξει καμία
συμφωνία για το πώς να σταματήσει η στέλνοντας παραγωγή του υπολογιστή εάν ο
εκτυπωτής μένει πίσω. Η’ κάθε φορά που θέλουμε να μεταφορτώσουμε ένα αρχείο
χρειαζόμαστε τα πρωτόκολλα, διαφορετικά οι υπολογιστές θα είναι ανίκανοι να
συμφωνήσουν σε ποιο αρχείο πρέπει να μεταφορτωθεί.
Κάθε φορά που θέλουμε να σώσουμε την εργασία μας στο σκληρό δίσκο όμως, δεν
χρειαζόμαστε τα πρωτόκολλα - εκτός αν ο δίσκος είναι σε έναν κεντρικό
υπολογιστή αρχείων δικτύων (dummy
terminals).
Το Διαδίκτυο, και τα δίκτυα υπολογιστών γενικά, κάνουν
εκτεταμένη χρήση πρωτοκόλλων. Διαφορετικά πρωτόκολλα
χρησιμοποιούνται για να γίνουν διαφορετικές εργασίες επικοινωνίας. Κάποια
πρωτόκολλα είναι απλά και άμεσα, ενώ άλλα
είναι περίπλοκα και δύσκολα. Η κατανόηση του πεδίου της δικτύωσης υπολογιστών είναι ισοδύναμη
με την κατανόηση των πρωτοκόλλων
δικτύωσης.