💾 Archived View for magaz.hellug.gr › 25 › 02_tcpip › index.gmi captured on 2024-08-18 at 17:36:11. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2024-02-05)
-=-=-=-=-=-=-
Κοτσιφάκης Θρασύβουλος Ιουλ 2000
Επιστροφή μετά από πολύ καιρό στα παλιά καλά λημέρια.Αν και ο χρόνος μου λίγος θα επιχειρήσω να σας μυήσω λιγάκι στις βασικές έννοιες των δικτύων και της πιο διαδεδομένης σε εμάς συλλογής πρωτοκόλλων το TCP/IP**
1. Τι είναι δίκτυο και τι είναι το TCP/IP;
2. Τα χαρακτηριστικά του TCP/IP
3. Τα Utilities του TCP/IP
Δίκτυο είναι το σύνολο από υπολογιστές και συσκευές που ομοιάζουν με υπολογιστή, τα οποία επικοινωνούν μεταξύ τους μέσω ενός μέσου μεταφοράς των δεδομένων. Αυτό το μέσο μεταφοράς μπορεί να είναι καλώδιο, η τηλεφωνική μας γραμμή ή κάποιο άλλο π.χ. κάποιος ασύρματος μεταδότης.
Σε ένα δίκτυο ο κάθε υπολογιστής πρέπει να είναι ικανός να επικοινωνεί με τους υπόλοιπους και μάλιστα αμφίδρομα, δηλαδή να δύναται να διοχετεύσει πληροφορίες αλλά και να λάβει. Για να γίνει τώρα αυτό θα πρέπει να οριστούν εξ αρχής ο τρόπος επικοινωνίας του με το υπόλοιπο δίκτυο. Θα πρέπει δηλαδή να οριστούν κάποιοι κανόνες για την ασφαλή και απρόσκοπτη μεταφορά των δεδομένων.
Οι συσκευές σε ένα δίκτυο δεν είναι απαραίτητο (αλλά ούτε και εφικτό πολλές φορές) να ακολουθούν τα ίδια πρότυπα ως μεμονωμένοι σταθμοί εργασίας (workstations), δηλαδή δεν είναι απαραίτητο να εκτελούν τις εντολές κάτω από το ίδιο λειτουργικό σύστημα ή να χρησιμοποιούν το ίδιο Hardware. Για τα παραπάνω όπως καταλαβαίνετε είμαστε αναγκασμένοι να ορίσουμε κάποια standards έτσι ώστε οι ανόμοιες αυτές συσκευές να μπορούν να συνεργάζονται αρμονικά και να εκτελούν τις αιτήσεις μας σε συνεργασία με τις υπόλοιπες συσκευές που σχηματίζουν το δίκτυο.
Ας ορίσουμε τώρα το TCP/IP. Όλοι περιγράφουμε το TCP/IP σαν ένα πρωτόκολο, αυτό δεν είναι απόλυτα σωστό. Στην πραγματικότητα είναι μία ολόκληρη σουίτα από πρωτόκολα η οποία έχει σαν βασικό της ρόλο να βοηθήσει την ομαλή συνύπαρξη των συσκευών που βρίσκονται συνδεδεμενες μεταξύ τους και επιπλέον να ορίσει τους κανόνες που θα ισχύουν κατά την επικοινωνία των συσκευών ετσι ώστε η πληροφορία που θα περνάει από τη μία συσκευή στην άλλη να μεταφράζεται σωστά.
Το TCP/IP έχει ορισμένα ενδιαφέροντα χαρακτηριστικά τα οποία χρησιμοποιεί για να παρακάμπτει προβλήματα που προκύπτουν στα δίκτυα. Ας εξετάσουμε όμως διεξοδικά πια είναι αυτά τα προβλήματα και να δούμε πως το TCP/IP αναλαμβάνει να τα επιλύσει.
Κάθε κάρτα δικτύου από κατασκευής δια8έτει μία μοναδική και μόνιμη φυσική διεύθυνση (physical address). Σε μικρά δίκτυα η παράδοση των δεδομένων γίνεται με βάση αυτή την φυσική διεύθυνση. Π.χ. σε τοπικά δίκτυα τύπου ethernet ένας υπολογιστής μεταδίδει τα δεδομένα κατευθείαν στο μέσο μεταφοράς (καλώδιο). Κάθε υπολογιστής που βρίσκεται στο συγκεκριμένο δίκτυο παρακολουθεί όλες τις μεταδώσεις και επιλέγει να κρατήσει τα δεδομένα που έχουν διεύθυνση την φυσική διεύθυνση της κάρτας δικτύου που βρίσκεται εγκατεστημένη σ' αυτόν. Σε μεγαλύτερα δίκτυα φανταστείτε τι θα γινόταν αν κάθε υπολογιστής παρακολουθούσε όλα τα πακέττα δεδομένων που αποστέλλονται μέσω του μέσου μεταφοράς.
Στα μεγάλα δίκτυα για αποφύγουμε την διαρκή παραλαβή άχρηστων δεδομένων τα χωρίζουμε σε άλλα μικρότερα υποδίκτυα (subnetworks) τα οποία κάτω απο μία ιεραρχική σχεδίαση και δομή μπορούν να παρακολουθούν τις αποστολές και να επιλέγουν τα πακέττα δεδομένων που προορίζονται για τις συσκευές που τα αποτελούν.
Για να επιτύχουμε την παραπάνω λειτουργία τα υποδίκτυα θα πρέπει να έχουν διευθύνσεις που να τα χαρακτηρίζουν για να γίνονται αναγνωρίσιμα. Η διευθυνσεις αυτές περέχονται από το λογισμικό και στην προκυμένη περίπτωση από το TCP/IP και ονομάζονται λογικές διευθύνσεις (logical address).Στο TCP/IP οι συγκεκριμένες διευθύνσεις λέγονται IP adresses.Η διεύθυνση IP τωρα με την σειρά της μπορεί να περιέχει:
Οι ταυτότητες που αναφέρουμε παραπάνω, ουσιαστικά αντιστοιχούν σε συνδυασμούς αριθμών που χαρακτηρίζουν και την κλάση του δικτύου.Ανάλογα με το είδος δικτύου που έχουμε, έχουμε και την αντίστοιχη κλάση. Εν περιλήψει οι βασικότερες:
Πιο πάνω είπαμε ότι μπορούμε να χωρίσουμε ένα δίκτυο σε άλλα μικρότερα και να αποδόσουμε λογικές διευθύνσεις σε αυτά.Πως όμως αποκόπτουμε τα άχρηστα πακέττα και πως όμως το μικρότερο αυτό δίκτυο 8α αντιληφθεί ότι κάποιο πακέττο δεδομένων απευθύνεται σε αυτό;Η τεχνική λέγεται routing και οι συσκευές που αναλαμβάνουν την αναγνώριση των πακέττων routers.
Με απλά λόγια ένας router διαχωρίζει το subnet από το υπόλοιπο δίκτυο και δεν επιτρέπει να περάσουν πληροφορίες στο σύνολο οι οποίες είναι άχρηστες. Πληροφορίες οι οποίες αφορούν τους υπολογιστές του υποδικτύου και κατευθύνονται από υπολογιστή μέσα σε αυτό σταματούν στον router και δεν βγαίνουν προς τα έξω. Οι πληροφορίες πάλι που απευθύνονται σε υπολογιστές εκτός του subnet ο router τις προω8εί εκτός. Γενικά ο τρόπος πού λειτουργεί ένας router είναι ο εξής:
Το TCP/IP περιέχει πρωτόκολλα τα οποία καθορίζουν πως ένας router θα βρει διαδρομή για να κατευθύνει τα πακέττα στον προορισμό τους. Αυτά είναι τα: a)Routing Information Protocol (RIP) Το οποίο είναι το παλαιότερο routing protocol. Με απλά λόγια οι routers στέλνουν πληροφορίες γι' αυτούς και επίσης αποστέλλουν το λεγόμενο hop count δηλαδή πληροφορία σχετικά με το πόσο απομακρισμένοι είναι. Με αυτόν τον τρόπο οι routers μεταξύ τους γνωρίζουν ποιοι απ' αυτούς είναι διαθέσιμοι και να εκτιμήσουν την συντομότερη διαδρομή για να αποστείλουν το πακέττο στον προορισμό τους.b)Open Shortest Path First (OSPF) είναι νεότερο πρωτόκολλο το οποίο σταδιακά πέρνει την θέση του RIP. Η μεγάλη διαφορά του από το RIP είναι ότι εδώ οι Proxies δεν χρειάζεται να κάνουν υπολογισμό του hop απλά αποστέλλουν πληροφορίεσ σχετικά με την κατάσταση τους στους proxies που βρίσκονται απ' ευ8είας συνδεδεμένοι μαζί τους. Με αυτόν τον τρόπο μειώνεται το συνολικό bandwidth που 8α πρέπει να δεσμευ8εί για την αποστολή πληροφοριών. Ως αποτέλεσμα τι OSPF μπορεί να υποστηρίξει δίκτυα μεγάλα σε όγκο και ανάγκες.
Φανταστείτε να σας έλεγαν 111.121.131.156 και την φίλη σας 111.121.131.158, μπέρδεμά έ; Ναι έχετε δίκιο. Καλοί οι αριθμούλιδες αλλά εμείς έχουμε μάθει να αναγνωρίζουμε τους άλλους από το όνομα τους και όχι από τον αριθμό της ταυτότητας τους. Για να μας κάνει την ζωή πιο εύκολη λοιπόν το TCP/IP χρησιμοποιει εν παραλλήλω με τα IP numbers και ένα πιο ανθρωπινο τρόπο για να αναγνωρίζεται ο αποστολέας και ο παραλήπτης ενός πακέττου τα ονόματα αυτά λέγονται domain names και η υπηρεσία Domain Name Service.Με αυτόν τον τρόπο δεν χρειάζεται να γνωρίζουμε το IP number κάποιου υπολογιστή σε ένα δίκτυο αλλά μόνο το όνομα του.Έτσι για να αποστείλουμε π.χ. ένα email στην αγαπημένη μας δεν χρειάζεται να ξέρουμε το IP number του mail server που της έχει παραχωρίσει χώρο αλλά μόνο το domain name που συνή8ως είναι όνομα της μορφής "companyname.com" του και φυσικά το όνομα που χρησιμοποιεί αυτή σαν αναγνωριστικό.
Πως γίνεται τώρα και τα domain names μεταφράζονται σε IP numbers; Με απλά λόγια υπάρχουν κάποιοι εξυπηρετητές οι οποίοι αναλλαμβάνουν την αποθήκευση των domain names και την αποκωδικοποίηση τους σε IP numbers. Αν θέλετε τώρα να δείτε πως περίπου γίνεται το name servicing ρίξτε μια ματιά στο /etc/hosts του κουτιού σας για να δείτε με ποια σύνταξη ορίζονται domain names σε IP names.
Κατά την μεταφορά αρχείων είναι λογικό ότι δεν πάνε πάντα τα πράγματα όπως τα θέλουμε. Λάθη κατά την μεταφορά ή πακέττα δεδομένων που για κάποιο λόγο δεν παρελήφθησαν ακέραια είναι συχνό φαινόμενο. Γι αυτόν τον λόγο οι σχεδιαστές του TCP/IP φρόντισαν να του ενσωματώσουν διαδικασίες οι οποίες ελέγχουν την χωρίς λάθη παραλαβή ενός πακέττου και την αποστολη του στον σωστό παραλήπτη. Οι διαδικασίες αυτές ενσώματωνονται στο ονομαζόμενο Transport Layer του TCP/IP.
Σε όλους είνα γνωστό ότι για να αποκτήσουμε πρόσβαση στο δίκτυο χρησιμοποιούμε εφαρμογές οι οποίες ουσιαστικά με τρόπο «αδιαφανή» μας παρέχουν την πρόσβαση αλλά και τις ζητούμενες υπηρεσίες. Δηλαδή δεν χρειάζεται π.χ. να γνωρίζουμε τι είναι το SMTP για να στείλουμε ένα email.
Το TCP/IP αναλαμβάνει την παροχή ενός interface για τις εφαρμογές μας έτσι ώστε αυτές να μπορούν να έχουν πρόσβαση στο λογισμικό του δικτύου και να διευκολύνει την προσπέλαση στο δίκτυο. Για να γίνει αυτό, η σουίτα χρησιμοποιεί ένα σύστημα από "λογικά κανάλια" τα οποία ονομάζονται ports. Κάθε port διαθέτει ένα port number το οποίο χρησιμοποιείται για την αναγνώριση της port και ουσιαστικά και για την αναγνώριση της εργασίας που καλείτε να εκτελέσει. Με απλά λόγια (και λίγη φαντασία) τα ports είναι αυλοί επικοινωνίας που μέσα τους κυκλοφορούν τα δεδομένα και οι αιτήσεις από την αφαρμογή προς το δίκτυο.
Το ίδιο το TCP/IP περιέχει μερικές εφαρμογές οι οποίες χρησιμοποιούνται για να διευκολύνουν τις διάφορες διαδικασίες. Αυτές οι εφαρμογές είναι οι γνωστές στους περισσότερους ftp lpr ping telnet και traceroute των οποίων την χρησιμότητα θα εξηγήσουμε παρακάτω.
Το ftp είναι εφαρμογή (ουσιαστικά ένα κέλυφος εργασίας) η οποία χρησιμοποιεί το File Transfer Protocol για την μεταφορά αρχείων από και προς έναν υπολογιστή ο οπoίος παίζει τον ρόλο του ftp server. Με την εντολή ftp εκκινούμε την εφαρμογή client η οποία μας παρέχει το περιβάλλον για να συνδεθούμε και να εργαστούμε με υπολογιστές οι οποίοι τρέχουν τον λεγόμενο ftp daemon ο οποίος είναι μία εφαρμογή που τρέχει σε έναν ftp server στο παρασκήνιο και όταν της ζητη8εί από τον client κάποιου υπολογιστή στο δίκτυο, αναλαμβάνει την διεκπεραιρέωση της αιτήσεως.
Η εκκίνηση της ftp μπορεί να γίνει είτε δίδοντας την εντολή σκέτη ή προσθέτοντας το IP adress ή το domain name του εξυπηρετητή που θέλουμε να συνδεθούμε. Μπορούμε επίσης να προσθέσουμε παραμέτρους οι οποίοι να καθορίζουν τον τρόπο και το είδος της σύνδεσης που θέλουμε να πετύχουμε. Μία ματιά στην man page της ftp θα σας κατατοπίσει καλύτερα για το ποιες παράμετροι μπορούν να σας φανούν χρήσιμες.
Αφού επιτύχουμε την σύνδεση με το ftp site που μας ενδιαφέρει μία σειρά εντολών μπορεί να δωθεί για την εργασία μας. Πολλές απ' αυτές είναι ήδη γνωστές από την εργασία μας στα linux shells (pwd mkdir cd chmod).
Είναι εντολή η οποία χρησιμοποιείται για την δρομολόγιση και μορφοποίηση αιτήσεων προς έναν εκτυπωτή. Όταν υπάρχουν πολύ εκτυπωτές πάνω στο δίκτυο η lpr μπορεί να εκτελεστεί με την παράμετρο -P και το όνομα του εκτυπωτή που θέλουμε να μας εξυπηρετήσει. Επίσης μια πλιάδα από παραμέτρους μπορούν να χρησιμοποιηθούν για ικανοποιητικότερη χρήση της.
Utility το οποίο χρησιμοποιείται ως διαγνωστικό. Όταν εκτελέσουμε την εντολή ping domainname τότε αποστέλλουμε ένα διαγνωστικό πακέττο κάτω από το ICMP protocol (Internet Control Message Protocol) αιτώντας ταυτόχρονα απάντηση (ICMP echo) από τον παραλήπτη. Η ping έχει σχεδιασθεί έτσι ώστε να βοηθά τον έλεγχο, την αποσφαλμάτωση, και μέτρηση της ανταπόκρισης μεταξύ δύο υπολογιστών σε ένα δίκτυο.Όταν παραλειφθεί το ICMP echo από τον υπολογιστή που εκτελέσαμε την ping, μας εμφανίζεται στην οθόνη το μέγεθος του πακέττου που απεστάλλει (56bytes για το linux) ο χρόνος σε milliseconds ο οποίος χρειάστηκε για να αποσταλλεί και να επιστρέψει όπως επίσης και το TTL (Time To Live), δηλαδή μία τιμή η οποία μας δείχνει πόσους επιπλεόν routers μπορούσε το πακέττο να περάσει μέχρι να απορριφθεί. Αν το ποσό που επιστρέφει ως ένδειξη στην TTL είναι κοντά στο μηδέν (1,2 κλπ) τότε θα πρέπει να υποψιαστούμε ότι σφάλματα στο δίκτυο.
Το telnet είναι κέλυφος εργασίας το οποίο ενσωματώνει διάφορες λειτουργίες για την εργασία μεταξύ δύο υπολογιστών εκ των οποίων ο ένας εκτελεί χρέη εξυπηρετητή τρέχοντας τον telnet daemon. Το telnet επίσης είναι και αυτόνομο πρωτόκολλο επικοινωνίας. Σκοπός του telnet είναι να μας παρέχει ένα περιβάλλον εργασίας όπου οι εντολές που εμείς πληκτρολογούμε να περνούν στο δίκτυο και να εκτελούνται στον απομακρυσμένο από εμάς υπολογιστή. Για να εκκινήσουμε μία telnet session χρησιμοποιούμε την εντολή:
Οι εντολές που δίνουμε από εκεί και πέρα εκτελούνται στον απομακρυσμένο υπολογιστή
Είναι utility το οποίο μας δείχνει την διαδρομή που ακολουθει ένα πακέττο δεδομένων έως ότου καταλήξει στον προορισμό του. Εάν δοκιμάσουμε την traceroute σε κάποιο domain στο INTERNET θα καταλάβουμε από τα domain names και την γεωγραφική διαδρομή που έκανε το πακέττο εως ότου φτάσει στον προορισμό του.