ΚΕΦΑΛΑΙΟ 16: Επίλυση Ονομάτων (Name Resolution) και DNS 16.1. Εισαγωγή Τα προγράμματα σπανίως απευθύνονται σε host, ταχυδρομικά κουτιά και σ άλλους πόρους με τη δυαδική τους διεύθυνση δικτύου. Αντί για δυαδικούς αριθμούς, χρησιμοποιούν συρμούς ASCII χαρακτήρων, όπως myname@something.com. Πάντως, το ίδιο δίκτυο καταλαβαίνει μόνο δυαδικές διευθύνσεις και γι αυτό απαιτείται κάποιος μηχανισμός που να μετατρέπει τους ASCII χαρακτήρες σε διευθύνσεις του δικτύου. Στις ακόλουθες ενότητες θα μελετήσουμε το πώς γίνεται αυτή η αντιστοίχηση στο Internet. Πίσω στις μέρες του ARPANET, υπήρχε απλώς ένα αρχείο, το host.txt, που απαριθμούσε όλους τους host και τις IP διευθύνσεις τους. Κάθε βράδυ, όλοι οι host το έφερναν από μία θέση όπου κάποιοι το συντηρούσαν. Για ένα δίκτυο με λίγες εκατοντάδες μεγάλες μηχανές καταμερισμού χρόνου, η μέθοδος αυτή δούλευε σχετικά καλά. Ωστόσο, όταν συνδέθηκαν στο δίκτυο χιλιάδες σταθμών εργασίας, όλοι διαπίστωσαν ότι αυτή η μέθοδος δεν μπορούσε να εφαρμοσθεί για πάντα. Κατ αρχήν, το μέγεθος του αρχείου θα γινόταν υπερβολικά μεγάλο. Ωστόσο, ακόμη πιο σημαντικό, θα προέκυπταν συνεχώς συγκρούσεις μεταξύ των ονομάτων host, εκτός αν υπήρχε κεντρική διαχείριση των ονομάτων, κάτι που είναι αδύνατο σε ένα τεράστιο παγκόσμιο δίκτυο. Προκειμένου να λυθούν αυτά τα προβλήματα, επινοήθηκε το Σύστημα Ονομασίας Περιοχών DNS (DomainNameServer). Η ουσία του DNS είναι η επινόηση μιας ιεραρχικής μεθόδου ονοματοδότησης βασισμένης σε περιοχές και μιας κατανεμημένης βάσης δεδομένων που να υλοποιεί αυτή τη μέθοδο. Χρησιμοποιείται πρωταρχικά για να αντιστοιχίζει τα ονόματα host και τους προορισμούς ηλεκτρονικού ταχυδρομείου με τις IP διευθύνσεις, αλλά μπορεί να χρησιμοποιηθεί και γι άλλους σκοπούς. Σε συντομία, το DNS χρησιμοποιείται με τον ακόλουθο τρόπο. Για να αντιστοιχισθεί ένα όνομα σε μια IP διεύθυνση, το πρόγραμμα εφαρμογής καλεί μια συνάρτηση βιβλιοθήκης που ονομάζεται επιλυτής (resolver) και στην οποία περνά το όνομα ως παράμετρο. Ο επιλυτής στέλνει ένα πακέτο UDP στον τοπικό εξυπηρετητή DNS, που αναζητά το όνομα και επιστρέφει την IP διεύθυνση στον επιλυτή, ο οποίος την επιστρέφει με τη σειρά του στον καλούντα. Διαθέτοντας την IP διεύθυνση, το πρόγραμμα μπορεί να εγκαταστήσει μια σύνδεση TCP με τον προορισμό ή να του στείλει πακέτα UDP.
Ερώτηση : 16.1.1. Τι προκάλεσε την ανάγκη δημιουργία του DNS.
16.2. Χώρος Ονομάτων του DNS Η διαχείριση ενός μεγάλου και συνεχώς μεταβαλλόμενου συνόλου ονομάτων αποτελεί σημαντικό πρόβλημα. Στο ταχυδρομικό σύστημα, η διαχείριση ονομάτων πραγματοποιείται με το να απαιτείται στις επιστολές να διευκρινίζεται (αμέσως ή εμμέσως) η χώρα, η πολιτεία ή επαρχία, η πόλη και η οδός του παραλήπτη. Με τη χρήση αυτού του είδους ιεραρχικής διεύθυνσης, δεν υπάρχει καμία σύγχυση ανάμεσα στον MarvinAnderson στη MainSt. στο WhitePlains, N.Y., και στον MarvinAnderson στη MainStAustin στο Texas. ToDNS λειτουργεί με τον ίδιο τρόπο. Το Internet είναι χωρισμένο νοητά σε εκατοντάδες διαφορετικές περιοχές υψηλού επιπέδου, καθεμία από τις οποίες καλύπτει πολλούς host. Κάθε περιοχή διαιρείται σε υπο-περιοχές (sub-domains), που διαιρούνται παραπέρα κ.ο.κ.. Όλες αυτές οι περιοχές μπορούν να αναπαρασταθούν μ ένα δένδρο, όπως φαίνεται στο σχήμα χχ. Τα φύλλα του δένδρου αναπαριστούν περιοχές που δεν έχουν υπό-περιοχές (αλλά βεβαίως περιλαμβάνουν μηχανές). Μια περιοχή φύλλο μπορεί να περιλαμβάνει έναν απλό host ή μπορεί να αντιπροσωπεύει μια εταιρεία και να περιέχει χιλιάδες host. Οι περιοχές υψηλού επιπέδου είναι δύο ειδών: γένη και χώρες. Οι περιοχές γενών είναι com (εμπορικές), edu (εκπαιδευτικοί οργανισμοί) κ.ο.κ.. Οι περιοχές χωρών περιλαμβάνουν μια καταχώρηση για κάθε χώρα. Κάθε περιοχή παίρνει το όνομά της από την ανοδική διαδρομή απ αυτή μέχρι τη ρίζα. Τα συστατικά χωρίζονται με τελείες. Συνεπώς, το τμήμα μηχανικών της SunMicrosystems μπορεί να είναι eng.sun.com., και όχι ένα όνομα τύπου UNIX, όπως είναι το /com/sun/eng. Προσέξτε ότι αυτή η ιεραρχική ονομασία σημαίνει ότι το eng.sun.com. δεν θα συγκρουστεί με την ενδεχομένη χρήση της λέξης eng στο eng.yale.edu., που μπορεί να χρησιμοποιείται από το Τμήμα Αγγλικής Φιλολογίας του Yale. Τα ονόματα περιοχών μπορεί να είναι είτε απόλυτα είτε σχετικά. Ένα απόλυτο όνομα περιοχής τελειώνει με μία τελεία, ενώ μια σχετική ονομασία δεν τελειώνει με τελεία. Οι σχετικές ονομασίες πρέπει να μεταφράζονται σύμφωνα με τα συμφραζόμενα ώστε να καθορίζεται με μοναδικό τρόπο η πραγματική τους σημασία. Και στις δύο περιπτώσεις, η κατονομαζόμενη περιοχή αναφέρεται σ έναν συγκεκριμένο κόμβο του δένδρου και σ όλους τους κόμβους κάτω από αυτόν. Οι ονομασίες περιοχών δεν εξαρτώνται από τα κεφαλαία ή πεζά γράμματα, έτσι edu και EDU σημαίνει ακριβώς το ίδιο πράγμα. Τα ονόματα των στοιχείων μπορεί να φτάνουν τους 63 χαρακτήρες σε μήκος και το όνομα ολόκληρης της διαδρομής δεν πρέπει να υπερβαίνει τους 255 χαρακτήρες. Οι περιοχές μπορούν να εισαχθούν μέσα στο δένδρο με δύο διαφορετικούς τρόπους. Για παράδειγμα, το cs.yale.ct.us. Ωστόσο, στην πράξη, σχεδόν όλοι οι οργανισμοί των ΗΠΑ ανήκουν σε μια περιοχή γένους και σχεδόν όλοι εκτός των ΗΠΑ βρίσκονται στην περιοχή χώρας τους. Δεν υπάρχει κανόνας που να απαγορεύει την εγγραφή σε δύο περιοχές
υψηλού επιπέδου, αλλά αν γίνει κάτι τέτοιο μπορεί να προκαλέσει μπέρδεμα κι έτσι πολύ λίγοι οργανισμοί το κάνουν. Κάθε περιοχή ελέγχει το πώς κατανέμει τις περιοχές που βρίσκονται κάτω από αυτήν. Για παράδειγμα, η Ιαπωνία διαθέτει τις περιοχές ac.jp και co.jp που αντιστοιχούν στις edu και com. Η Ολλανδία δεν κάνει αυτήν τη διάκριση και βάζει όλους τους οργανισμούς απ ευθείας κάτω από το nl. Έτσι, καθένα από τα παρακάτω είναι πανεπιστημιακά τμήματα της πληροφορικής: 1. cs.yale.edu (Πανεπιστήμιο του Yale στις ΗΠΑ) 2. cs.vu.nl (Πανεπιστήμιο Vrije στην Ολλανδία) 3. cs.keio.ac.jp (Πανεπιστήμιο του Keio στην Ιαπωνία) Για να δημιουργηθεί μια καινούρια περιοχή απαιτείται άδεια από την περιοχή στην οποία θα περιληφθεί. Για παράδειγμα, όταν ξεκινά μια ομάδα VLSI στο Yale και θέλει να γίνει γνωστή vlsi.cs.yale.edu, χρειάζεται άδεια από αυτόν που διευθύνει το cs.yale.edu. Παρόμοια, όταν ιδρυθεί ένα καινούριο πανεπιστήμιο, για παράδειγμα, το πανεπιστήμιο NorthernSouthDakota, θα ζητήσει από τον διαχειριστή της περιοχής edu να το καταχωρήσει ως unsd.edu. Μ αυτό τον τρόπο αποφεύγονται οι συγκρούσεις των ονομάτων και κάθε περιοχή είναι σε θέση να κρατά έναν κατάλογο μ όλες τις υποπεριοχές της. Κάθε φορά που δημιουργείται και καταχωρείται μια νέα περιοχή, μπορεί να σχηματίσει υπο-περιοχές, όπως cs.unsd.edu, χωρίς να πάρει άδεια από οιονδήποτε βρίσκεται ψηλότερα στο δένδρο. Ο καθορισμός του ονόματος ακολουθεί οργανωτικά όρια και όχι τα φυσικά δίκτυα. Για παράδειγμα, εάν το τμήμα Πληροφορικής και το τμήμα Ηλεκτρολόγων Μηχανικών βρίσκονται στο ίδιο κτίριο και μοιράζονται το ίδιο LAN, μπορούν παρόλα αυτά να έχουν ξεχωριστές περιοχές. Παρόμοια, ακόμη και εάν το τμήμα Πληροφορικής εκτείνεται στο BaddageHall και στο TurningHall, όλοι οι host και στα δύο κτίρια θα ανήκουν στην ίδια περιοχή. Ερώτηση : 16.2.1. Εξετάζοντας τις παρακάτω ονομασίες αποφανθείτε σε ποια χώρα ανήκει το κάθε πανεπιστήμιο. 1.cs.yale.edu 2.cs.vu.nl 3. cs.keio.ac.jp
16.3. Εξυπηρετητές Ονομάτων Στη θεωρία τουλάχιστον, ένας μόνο εξυπηρετητής ονομάτων θα μπορούσε να περιέχει ολόκληρη τη βάση δεδομένων DNS και να απαντά σ όλες τις σχετικές ερωτήσεις. Στην πράξη, αυτός ο εξυπηρετητής ονομάτων θα υπερφορτωνόταν τόσο πολύ που θα ήταν άχρηστος. Επιπλέον, εάν ποτέ κατέρρεε, θα σακάτευε όλο το Internet. Για να αποφευχθούν τα προβλήματα που δημιουργούνται λόγω της ύπαρξης μιας μόνο πηγής πληροφορίας, ο χώρος ονομάτων του DNS διαιρείται σε μη επικαλυπτόμενες ζώνες. Ένας πιθανός τρόπος διαίρεσης του χώρου ονομάτων είναι σε τέτοιες ζώνες. Κάθε ζώνη περιλαμβάνει κάποιο τμήμα του δένδρου και επίσης περιλαμβάνει εξυπηρετητές ονομάτων που περιέχουν στις επίσημες πληροφορίες γύρω απ αυτήν τη ζώνη. Συνήθως, μια ζώνη διαθέτει έναν κύριο εξυπηρετητή ονομάτων, που παίρνει τις πληροφορίες του από αρχείο στον δίσκο του, κι έναν ή περισσότερους δευτερεύοντες εξυπηρετητές ονομάτων, που παίρνουν τις πληροφορίες τους από τον βασικό εξυπηρετητή ονομάτων. Για να αυξηθεί η αξιοπιστία, ορισμένοι εξυπηρετητές μιας ζώνης μπορούν να τοποθετηθούν εκτός της ζώνης. Το πού θα βρίσκονται τα σύνορα μιας ζώνης επαφίεται στον διαχειριστή της ζώνης αυτής. Η απόφαση αυτή βασίζεται κατά κύριο λόγο στον αριθμό και στη θέση των επιθυμητών εξυπηρετητών ονομάτων. Για παράδειγμα, το Yale διαθέτει έναν εξυπηρετητή για την yale.edu που χειρίζεται την περιοχή eng.yale.edu αλλά όχι και την cs.yale.edu, η οποία αποτελεί μια ξεχωριστή ζώνη με τους δικούς της εξυπηρετητές ονομάτων. Μια τέτοια απόφαση μπορεί να ληφθεί όταν κάποιο τμήμα, όπως αυτό της Αγγλικής Φιλολογίας, δεν επιθυμεί να έχει έναν δικό του εξυπηρετητή ονομάτων, ενώ το τμήμα Πληροφορικής το επιθυμεί. Κατά συνέπεια, το cs.yale.edu είναι μια χωριστή ζώνη, αλλά το eng.yale.edu δεν είναι. Όταν ο επιλυτής λάβει μια ερώτηση για ένα όνομα περιοχής, περνά την ερώτηση σ έναν από τους τοπικούς εξυπηρετητές ονομάτων. Εάν η υπό αναζήτηση περιοχή βρίσκεται στη δικαιοδοσία του εξυπηρετητή ονομάτων, όπως η ai.cs.yale.edu βρίσκεται στη δικαιοδοσία του cs.yale.edu, τότε επιστρέφονται επίσημες εγγραφές. Μια επίσημη εγγραφή προέρχεται από την εξουσία που διαχειρίζεται την εγγραφή και γι αυτόν τον λόγο είναι πάντα σωστή. Οι επίσημες εγγραφές, σ αντίθεση με τις προσωρινές εγγραφές, δεν μπορεί να είναι ποτέ παρωχημένες. Εάν, ωστόσο, η περιοχή είναι απομακρυσμένη και δεν υπάρχει τοπικά καμία διαθέσιμη πληροφορία για τη ζητούμενη περιοχή, τότε ο εξυπηρετητής ονομάτων στέλνει ερώτηση στον εξυπηρετητή ονομάτων του υψηλού επιπέδου όπου ανήκει η αναζητούμενη περιοχή. Ας υποθέσουμε ότι ο τοπικός εξυπηρετητής ονομάτων δεν είχε ερωτηθεί ποτέ γι αυτήν την περιοχή και δεν γνωρίζει τίποτα σχετικό. Μπορεί να ρωτήσει μερικούς άλλους κοντινούς εξυπηρετητές ονομάτων, αλλά αν κανείς από αυτούς δεν γνωρίζει κάτι, στέλνει ένα πακέτο UDP στον εξυπηρετητή της περιοχής edu, που ορίζεται στη βάση δεδομένων του. Είναι απίθανο να γνωρίζει αυτός ο εξυπηρετητής τη ζητούμενη διεύθυνση, αλλά
πρέπει να γνωρίζει όλα τα δικά του παιδία, έτσι διαβιβάζει την ερώτηση στον εξυπηρετητή των παιδιών του και αυτά στα δικά τους μέχρι να φτάσουν σε κάποιο παιδί το οποίο να έχει την διεύθυνση. Αξίζει να σημειωθεί ότι η μέθοδος αναζήτησης που περιγράφεται εδώ είναι γνωστή ως αναδρομική αναζήτηση, επειδή κάθε εξυπηρετητής που δεν διαθέτει την αιτούμενη πληροφορία πηγαίνει και τη βρίσκει κάπου αλλού και μετά το αναφέρει. Υπάρχει κι ένας εναλλακτικός τρόπος. Μ αυτόν, όταν μια αναζήτηση δεν μπορεί να εξυπηρετηθεί τοπικά, η αναζήτηση αποτυχαίνει, αλλά επιστρέφεται το όνομα του επόμενου στη σειρά εξυπηρετητή για δοκιμή εκεί. Αυτή η διαδικασία προσφέρει στον πελάτη περισσότερο έλεγχο πάνω στη διαδικασία αναζήτησης. Ορισμένοι εξυπηρετητές δεν υλοποιούν την αναδρομική αναζήτηση και επιστρέφουν πάντοτε το όνομα του επόμενου εξυπηρετητή για ερώτηση. Αξίζει επίσης να σημειωθεί ότι εάν ένας πελάτης του DNS δεν πάρει απάντηση πριν λήξει το χρονόμετρο του, συνήθως την επόμενη φορά θα προσπαθήσει σε κάποιον άλλο εξυπηρετητή. Εδώ γίνεται η υπόθεση ότι ο εξυπηρετητής είναι μάλλον εκτός λειτουργίας και όχι ότι η αναζήτηση ή η απάντηση χάθηκαν.
16.4. Σύνοψη Κεφαλαίου - Η ουσία του DNS είναι η επινόηση μιας ιεραρχικής μεθόδου ονοματοδότησης βασισμένης σε περιοχές και μιας κατανεμημένης βάσης δεδομένων που να υλοποιεί αυτή τη μέθοδο - Το Internet είναι χωρισμένο νοητά σε εκατοντάδες διαφορετικές περιοχές υψηλού επιπέδου, καθεμία από τις οποίες καλύπτει πολλούς host. - Ο χώρος ονομάτων του DNS διαιρείται σε μη επικαλυπτόμενες ζώνες Ερώτηση : 16.4.1. Πώς μπορούμε να λύσουμε τα προβλήματα που δημιουργούνται λόγω της ύπαρξης μιας μόνο πηγής πληροφορίας. Ερώτηση: 16.4.2. Για να αντιστοιχίσει το DNS ένα όνομα σε μια διεύθυνση IP χρησιμοποιεί Πιθανές απαντήσεις: decoder revolver resolver Ερώτηση: 16.4.3. Τι σημαίνει DNS. Πιθανές απαντήσεις: Domain Name Server Directory of Named Servers Domain Name System