ΑΝΑΠΤΥΞΗ ΣΥΣΤΗΜΑΤΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ ΥΠΟΛΟΓΙΣΤΩΝ, ΜΕ ΠΕΡΙΒΑΛΛΟΝ ΧΡΗΣΗΣ ΒΑΣΙΣΜΕΝΟ ΣΤΗΝ ΥΠΗΡΕΣΙΑ ΠΑΓΚΟΣΜΙΟΥ ΙΣΤΟΥ

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΑΝΑΠΤΥΞΗ ΣΥΣΤΗΜΑΤΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ ΥΠΟΛΟΓΙΣΤΩΝ, ΜΕ ΠΕΡΙΒΑΛΛΟΝ ΧΡΗΣΗΣ ΒΑΣΙΣΜΕΝΟ ΣΤΗΝ ΥΠΗΡΕΣΙΑ ΠΑΓΚΟΣΜΙΟΥ ΙΣΤΟΥ"

Transcript

1 ΤΕΙ ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ ΑΝΑΠΤΥΞΗ ΣΥΣΤΗΜΑΤΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ ΥΠΟΛΟΓΙΣΤΩΝ, ΜΕ ΠΕΡΙΒΑΛΛΟΝ ΧΡΗΣΗΣ ΒΑΣΙΣΜΕΝΟ ΣΤΗΝ ΥΠΗΡΕΣΙΑ ΠΑΓΚΟΣΜΙΟΥ ΙΣΤΟΥ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΤΟΥ ΜΠΑΤΣΙΟΥ ΟΔΥΣΣΕΑ ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ ΜΑΡΔΥΡΗΣ ΒΑΣΙΛΕΙΟΣ ΚΑΒΑΛΑ 2007

2 ΠΡΟΛΟΓΟΣ Σκοπός της συγκεκριμένης εργασίας είναι η ανάπτυξη ενός συστήματος ικανού να διαχειρίζεται δίκτυα υπολογιστών. Το περιβάλλον χρήσης είναι βασισμένο στην υπηρεσία του παγκόσμιου ιστού. Αποτελεί στην ουσία ένα δυναμικό και ευέλικτο εργαλείο που απευθύνεται στους διαχειριστές δικτύων. Καθώς μπορούν να το χρησιμοποιήσουν και να έχουν πρόσβαση στα στοιχεία που αφορούν τα δίκτυα που διαχειρίζονται οποιαδήποτε στιγμή το θελήσουν απ οπουδήποτε, και από οποιαδήποτε πλατφόρμα λογισμικού, αρκεί μόνο να έχουν πρόσβαση στον παγκόσμιο ιστό, βέβαια δίνεται και η δυνατότητα χρήσης της εφαρμογής τοπικά, δηλαδή ο διαχειριστής να έχει πρόσβαση μόνο μέσα από το τοπικό δίκτυο που διαχειρίζεται, αλλά αυτό είναι κάτι το οποίο θα κρίνει ο διαχειριστής ανάλογα με τις ανάγκες του και με το πώς θα παραμετροποιήσει την εφαρμογή. Το εργαλείο παρέχει όλες τις απαραίτητες αυτές πληροφορίες που χρειάζεται ένας διαχειριστής για να παρακολουθεί την κίνηση μέσα στο δίκτυο, χρήσιμες πληροφορίες που αφορούν το υλικό της κάθε συσκευής, την κάθε συσκευή και τους κόμβους που αποτελούν μέρος ενός δικτύου, ακόμα δίνεται και η δυνατότητα να αλλαχθούν κάποιες από αυτές τις πληροφορίες εύκολα και χωρίς χρονοβόρες και δύσκολες διαδικασίες όπως συνηθιζόταν σε αυτές τις περιπτώσεις. Οι πληροφορίες που παρέχει η εφαρμογή στον διαχειριστή είναι ικανές έτσι ώστε να τον βοηθήσουν να εντοπίσει πιθανά προβλήματα που προκύπτουν καθώς επίσης και σε ποια σημεία του δικτύου υπάρχουν τα προβλήματα αυτά, έτσι ώστε να τα εντοπίσει εύκολα και γρήγορα και στην συνέχεια να προχωρήσει σε διόρθωση τους. Ακόμα παρέχει πληροφορίες του κάθε υπολογιστή ή δικτυακής συσκευής που αποτελεί μέρος του δίκτυο, όπως διεύθυνση IP, φυσική διεύθυνση(mac), τοποθεσία που βρίσκεται, ποιος είναι ο υπεύθυνος επικοινωνίας, στοιχεία επικοινωνίας του υπευθύνου και άλλες χρήσιμες πληροφορίες που θα συζητήσουμε στην συνέχεια. Μια ακόμη δυνατότητα που δίνεται είναι αυτή της «απόδοσης ονόματος» έτσι ώστε να γνωρίζει ο διαχειριστής τι γίνεται ακριβώς μέσα στο δίκτυο του και τους πόρους που χρησιμοποιεί ο καθένας μέσα σε αυτό, να τις αλλάζει όποτε κρίνει σκόπιμο για να επιτύχει την σωστότερη και αποτελεσματικότερη εκμετάλλευση όλων των πόρων που του παρέχει το δίκτυο. Το σύστημα παρέχει στον διαχειριστή ενός δικτύου υπολογιστών, εργαλεία τόσο παρακολούθησης (Monitoring) όσο ελέγχου και διαχείρισης (Management) των

3 αντικειμένων ενός δικτύου. Η εφαρμογή πρόκειται να εγκατασταθεί και να χρησιμοποιηθεί στο Κέντρο Διαχείρισης Δικτύου του Τεχνολογικού Εκπαιδευτικού Ιδρύματος Καβάλας. Θα ήθελα στο σημείο αυτό, να ευχαριστήσω τον καθηγητή κ. Μαρδύρη Βασίλειο για τις γόνιμες συζητήσεις που είχα μαζί του, για τις σοφές και χρήσιμες συμβουλές του, καθώς επίσης για τις κατευθύνσεις και τους στόχους που µου υπέδειξε. 2

4 ΠΕΡΙΕΧΟΜΕΝΑ ΠΡΟΛΟΓΟΣ ΠΕΡΙΕΧΟΜΕΝΑ.3 ΚΕΦΑΛΑΙΟ 1 ΕΙΣΑΓΩΓΗ ΤΙ ΕΙΝΑΙ Η ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ SNMP TCL ΠΛΕΟΝΕΚΤΗΜΑΤΑ ΤΗΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Tcl Η ΙΣΤΟΡΙΑ ΤΗΣ TCL ΚΑΙ ΤΟΥ ΠΡΩΤΟΚΟΛΛΟΥ SNMP ΤΙ ΜΑΣ ΠΡΟΣΦΕΡΕΙ Η ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ ΤΙ ΧΡΕΙΑΖΕΤΑΙ ΣΕ ΜΙΑ ΕΦΑΡΜΟΓΗ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ ΣΤΟΧΟΙ ΤΗΣ ΔΙΑΧΕΙΡΙΣΗΣ...12 ΚΕΦΑΛΑΙΟ 2 ΜΕΘΟΔΟΙ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ ΔΙΑΧΕΙΡΙΣΗ ΣΦΑΛΜΑΤΩΝ (FAULT MANAGEMENT) ΔΙΑΧΕΙΡΙΣΗ ΑΠΟΔΟΣΗΣ (PERFORMANCE MANAGEMENT) ΔΙΑΧΕΙΡΙΣΗ ΛΟΓΑΡΙΑΣΜΩΝ(ACCOUNTING MANAGEMENT) ΔΙΑΧΕΙΡΙΣΗ ΑΣΦΑΛΕΙΑΣ (SECURITY MANAGEMENT) ΣΥΓΧΡΟΝΗ Vs ΑΣΥΓΧΡΟΝΗΣ ΔΙΑΧΕΙΡΙΣΗΣ (POLLING Vs NOTIFICATIONS) IN-BAND ΚΑΙ OUT-OF-BAND ΔΙΑΧΕΙΡΙΣΗ 15 ΚΕΦΑΛΑΙΟ 3 Η ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΗΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ ΣΤΑΘΜΟΣ ΔΙΑΧΕΊΡΙΣΗΣ ΔΙΚΤΥΟΥ (NMS) ΔΙΑΧΕΙΡΙΖΟΜΕΝΟΙ ΠΡΑΚΤΟΡΕΣ (Agents) ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ (ΜΙΒ) ΣΥΝΤΑΞΗ ΑΝΤΙΚΕΙΜΕΝΩΝ ΤΥΠΟΙ ΑΝΤΙΚΕΙΜΕΝΩΝ ΠΑΡΑΔΕΙΓΜΑ ΑΝΤΙΚΕΙΜΕΝΟΥ ΠΡΩΤΟΚΟΛΛΟ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ (ΝΜΡ) Η ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΟΥ ΠΡΩΤΟΚΟΛΛΟΥ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ

5 3.6 ΑΝΑΦΟΡΕΣ ΚΑΤ ΑΠΑΙΤΗΣΗ ΤΟΥ ΔΙΑΧΕΙΡΙΣΤΗ ΕΞΑΙΤΙΑΣ ΠΑΓΙΔΩΝ (Traps) ΕΝΔΙΑΜΕΣΟΙ Ή ΜΕΣΟΛΑΒΗΤΕΣ 28 ΚΕΦΑΛΑΙΟ 4 ΤΟ ΛΟΓΙΣΜΙΚΟ SCOTTY ΤΙ ΕΙΝΑΙ ΤΟ ΛΟΓΙΣΜΙΚΟ SCOTTY; ΕΓΚΑΤΑΣΤΑΣΗ SCOTTY 31 ΚΕΦΑΛΑΙΟ 5 ΕΝΕΡΓΟΠΟΙΗΣΗ SNMP ΣΕ CISCO SWITCHES CATALYST 1900/ ΕΝΕΡΓΟΠΟΙΗΣΗ SNMP ΑΠΟ ΤΟ WEB-INTERFACE ΤΗΣ ΣΥΣΚΕΥΗΣ ΕΝΕΡΓΟΠΟΙΗΣΗ SNMP ΜΕ ΤΗΝ ΧΡΗΣΗ ΚΟΝΣΟΛΑΣ ΕΝΕΡΓΟΠΟΙΗΣΗ SNMP ΣΕ CISCO ΔΡΟΜΟΛΟΓΗΤΗ (router) ΜΕ ΤΗΝ ΧΡΗΣΗ ΓΡΑΜΜΗΣ ΕΝΤΟΛΩΝ 41 ΚΕΦΑΛΑΙΟ 6 Η ΤΕΧΝΟΛΟΓΙΑ CGI ΕΙΣΑΓΩΓΗ ΣΤΗΝ Tcl ΤΑ ΒΑΣΙΚΑ ΕΝΟΣ Tcl script ΤΑ ΒΑΣΙΚΑ ΕΝΟΣ CGI script ΠΕΡΙΣΣΟΤΕΡΗ Tcl ΣΥΝΤΑΞΗ ΤΗΣ ΓΛΩΣΣΑΣ Tcl ΜΕΤΑΒΛΗΤΕΣ ΕΚΦΡΑΣΕΙΣ ΟΙ ΕΝΤΟΛΕΣ incr ΚΑΙ append ΛΙΣΤΕΣ Η ΒΑΣΙΚΗ ΔΟΜΗ ΤΩΝ ΚΑΤΑΛΟΓΩΝ ΚΑΙ Η ΕΝΤΟΛΗ lindex ΔΗΜΙΟΥΡΓΙΑ ΛΙΣΤΩΝ : concat, list ΚΑΙ llength ΤΡΟΠΟΠΟΙΗΣΗ ΛΙΣΤΩΝ : linsert, lreplace, lrange ΚΑΙ lappend ΑΝΑΖΗΤΗΣΗ ΣΕ ΛΙΣΤΕΣ : lsearch ΜΕΤΑΤΡΟΠΕΣ ΑΝΑΜΕΣΑ ΣΕ string ΚΑΙ ΣΕ ΛΙΣΤΕΣ : split ΚΑΙ join HTTP (HYPER TEXT TRANSFER PROTOCOL) HTML ΦΟΡΜΕΣ 62 4

6 6.7 ΜΕΘΟΔΟΙ 63 ΚΕΦΑΛΑΙΟ 7 ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ MySQL ΠΛΕΟΝΕΚΤΗΜΑΤΑ ΣΥΝΤΑΞΗ ΕΝΤΟΛΩΝ ΣΤΗΝ Mysql..67 ΚΕΦΑΛΑΙΟ 8 APACHE ΦΙΛΟΣΟΦΙΑ ΛΕΙΤΟΥΡΓΙΑΣ ΠΡΟΓΡΑΜΜΑΤΑ CGI SERVER-SIDE INCLUDES...73 ΚΕΦΑΛΑΙΟ 9 JAVASCRIPT ΟΡΙΣΜΟΣ ΣΥΝΑΡΤΗΣΕΩΝ ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ ΑΝΤΙΚΕΙΜΕΝΑ ΙΔΙΟΤΗΤΕΣ ΜΕΘΟΔΟΙ 78 ΚΕΦΑΛΑΙΟ 10 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΕΙΣΑΓΩΓΗ Η ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ imd_nms ΓΕΝΙΚΗ ΦΙΛΟΣΟΦΙΑ ΕΦΑΡΜΟΓΗΣ ΕΙΣΑΓΩΓΗ ΧΡΗΣΤΗ ΣΤΗΝ ΕΦΑΡΜΟΓΗ ΚΟΜΒΟΙ ΠΡΟΣΘΗΚΗ ΝΕΟΥ ΚΟΜΒΟΥ ΔΙΑΓΡΑΦΗ ΚΟΜΒΟΥ ΑΛΛΑΓΗ ΧΑΡΑΚΤΗΡΙΣΤΙΚΩΝ ΚΟΜΒΩΝ DAEMONS (ΔΑΙΜΟΝΕΣ) O ΔΑΙΜΟΝΑΣ daemon.tcl O ΔΑΙΜΟΝΑΣ black_lister.tcl O ΔΑΙΜΟΝΑΣ snoop.tcl Η ΕΝΤΟΛΗ SNOOP ΘΥΡΕΣ ΠΡΟΣΘΗΚΗ ΠΕΡΙΓΡΑΦΗΣ ΘΥΡΑΣ 96 5

7 ΔΙΑΓΡΑΦΗ ΘΥΡΑΣ ΔΙΑΓΡΑΦΗ ΟΛΩΝ ΤΩΝ ΘΥΡΩΝ ΤΡΟΠΟΠΟΙΗΣΗ ΠΕΡΙΓΡΑΦΗΣ ΘΥΡΑΣ ΧΡΗΣΤΕΣ ΔΙΑΓΡΑΦΗ ΧΡΗΣΤΗ ΔΙΑΓΡΑΦΗ ΟΛΩΝ ΤΩΝ ΧΡΗΣΤΩΝ ΠΡΟΒΟΛΗ ΣΤΟΙΧΕΙΩΝ ΚΟΜΒΩΝ ΑΝΑΖΗΤΗΣΗ.106 ΚΕΦΑΛΑΙΟ 11 ΠΕΡΙΓΡΑΦΗ ΤΗΣ ΕΦΑΡΜΟΓΗΣ ΕΙΣΟΔΟΣ ΣΤΗΝ ΕΦΑΡΜΟΓΗ ΚΕΝΤΡΙΚΟ ΜΕΝΟΥ (ΠΙΝΑΚΑΣ ΕΛΕΓΧΟΥ) ΔΙΑΧΕΙΡΙΣΗ ΚΟΜΒΩΝ ΠΡΟΣΘΗΚΗ ΝΕΟΥ ΚΟΜΒΟΥ ΔΙΑΓΡΑΦΗ ΚΌΜΒΟΥ ΤΡΟΠΟΠΟΙΗΣΗ ΣΤΟΙΧΕΙΩΝ ΚΟΜΒΟΥ ΑΡΧΕΙΟ ΚΑΤΑΓΡΑΦΗΣ(LOG FILE) ΚΟΜΒΟΥ ΜΑΥΡΗ ΛΙΣΤΑ (BLACK LIST) ΠΟΡΤΕΣ(ΘΥΡΕΣ) ΚΟΜΒΟΥ ΠΡΟΣΘΗΚΗ ΘΥΡΑΣ ΔΙΑΓΡΑΦΗ ΠΟΡΤΑΣ (ΘΥΡΑΣ) ΔΙΑΓΡΑΦΗ ΟΛΩΝ ΤΩΝ ΘΥΡΩΝ ΤΡΟΠΟΠΟΙΗΣΗ ΠΕΡΙΓΡΑΦΗΣ ΘΥΡΑΣ ΧΡΗΣΤΕΣ ΘΥΡΑΣ ΠΡΟΣΘΗΚΗ ΧΡΗΣΤΗ ΔΙΑΓΡΑΦΗ ΧΡΗΣΤΗ ΔΙΑΓΡΑΦΗ ΟΛΩΝ ΤΩΝ ΧΡΗΣΤΩΝ ΜΑΥΡΗ ΛΙΣΤΑ ΚΑΙ ΧΡΗΣΤΕΣ ΠΡΟΒΟΛΗ ΣΤΟΙΧΕΙΩΝ ΚΟΜΒΩΝ ΑΛΛΑΓΗ ΧΑΡΑΚΤΗΡΙΣΤΙΚΩΝ ΜΕ ΤΟ ΠΡΩΤΟΚΟΛΛΟ SNMP ΑΝΑΖΗΤΗΣΗ ΠΑΡΑΡΤΗΜΑ - ΤΑ OIDs ΠΟΥ ΧΡΗΣΙΜΟΠΟΙΉΘΗΚΑΝ.149 ΒΙΒΛΙΟΓΡΑΦΙΑ

8 ΚΕΦΑΛΑΙΟ 1 ΕΙΣΑΓΩΓΗ 1.1 ΤΙ ΕΙΝΑΙ Η ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ Με τη ραγδαία ανάπτυξη των ηλεκτρονικών υπολογιστών δημιουργήθηκε η ανάγκη για ανταλλαγή δεδομένων και πληροφοριών μεταξύ τους, δηλαδή για επικοινωνία Ένας νέος κλάδος άρχισε να αναπτύσσεται ταχύτατα, αυτός των τηλεπικοινωνιών. Πλέον βαδίζουν παράλληλα και δεν νοείται ο ένας χωρίς τον άλλον. Αυτό είχε σαν αποτέλεσμα τη δημιουργία δικτύων και στην συνέχεια την γιγάντωση του φαινομένου που αποκαλούμε σήμερα διαδίκτυο. Γεγονός, που όχι μόνο δυσκόλευσε την διαχείριση των δικτυακών συσκευών, αλλά την έκανε αδύνατη. Γι αυτό το λόγο, αναπτύχθηκαν κάποια πρωτόκολλα τα οποία σε συνδυασμό με ανάλογα λογισμικά μπορούν όχι μόνο να κάνουν αυτή την δουλειά, αλλά να την κάνουν αρκετά εύκολα και γρήγορα. Επομένως, στο ερώτημα, τι είναι διαχείριση δικτύου, μπορούμε να απαντήσουμε και να πούμε πως η διαχείριση δικτύου είναι ο απομακρυσμένος έλεγχος και η αναδιαμόρφωση των δικτυακών συσκευών. Ή πιο απλά η παρακολούθηση του δικτύου μέσω των συσκευών που το συνθέτουν, καθώς επίσης η σύνθεση βάσεων δεδομένων με το ιστορικό της δραστηριότητας του δικτύου και η δυνατότητα τοποθέτησης παγίδων (traps) και / ή συναγερμών (alarms) στις δικτυακές συσκευές για την εύκολη αυτοματοποιημένη και ασύγχρονη διαχείριση τους. 1.2 SNMP Με την τρομερή αύξηση των Η/Υ που είναι συνδεδεμένοι στο Internet και την ανάλογη αύξηση του αριθμού των υποδικτύων δημιουργήθηκε η ανάγκη της ανάπτυξης ενός αποδοτικού λογισμικού με δυνατότητες διαχείρισης. Το πρωτόκολλο SNMP (Simple Network Management Protocol ) αποτελεί επέκταση ενός άλλου παλαιότερου πρωτοκόλλου διαχείρισης δικτύου ονομαζόμενου SGMP (Simple Gateway Monitoring Protocol ), το οποίο είχε σχεδιασθεί για τον έλεγχο των πυλών και προορίζονταν να αντικατασταθεί από μια λύση βασισμένη στη αρχιτεκτονική CMIS/CMIP (Common Management Information Service/Protocol). Αυτή η μακροπρόθεσμη λύση, εντούτοις, δεν έλαβε ποτέ τη 7

9 διαδεδομένη αποδοχή που έλαβε το SNMP. To SNMP έγινε γρήγορα ευρέως διαθέσιμο σε συσκευές διαφόρων κατασκευαστών και υπερίσχυσε κάνοντας το SNMP το ποιο διαδεδομένο σε πρωτόκολλα διαχείρισης. Έτσι το 1988 παρουσιάστηκαν οι προδιαγραφές του και δεν άργησε να καθιερωθεί ως το κυρίαρχο πρωτόκολλο διαχείρισης δικτύων. Το SNMP είναι ένα απλό πρωτόκολλο διαχείρισης δικτύων που διευκρινίζει μια δομή για τη μορφοποίηση των μηνυμάτων και τη μετάβαση των πληροφοριών μεταξύ των συσκευών και των προγραμμάτων συλλογής δεδομένων για το δίκτυο. Το SNMP είναι ένα πολύ ευέλικτο πρωτόκολλο διαχείρισης δικτύων που μπορεί να χρησιμοποιηθεί για να διαχειριστεί ουσιαστικά οποιοδήποτε αντικείμενο. Ένα αντικείμενο αναφέρεται στο υλικό, το λογισμικό και σε διάφορα στοιχεία των συσκευών, όπως: κατάσταση συσκευής, σφάλματα, κίνηση καθώς και άλλων χαρακτηριστικών που αφορούν την συσκευή και το δίκτυο και θα τα αναλύσουμε στην συνέχεια. Ο καθορισμός ενός αντικειμένου καθορίζεται από τον κατασκευαστή του. Τα αντικείμενα είναι καταχωρημένα σε μια βάση δεδομένων, την MIB ( Management Information Base ) και η αναφορά στην MIB γίνεται με βάση τα OIDs (Object Identifier). Στην πραγματικότητα, μια MIB είναι ένας κατάλογος τοποθετήσεων διακοπτών, μετρητών υλικού, μεταβλητών, ή αρχείων που χρησιμοποιούνται από το Σύστημα Διαχείρισης Δικτύου για να καθορίσουν την τρέχουσα κατάσταση της κάθε συσκευής στο δίκτυο. Χρησιμοποιεί UDP (User Datagram Protocol) πακέτα για την ανταλλαγή πληροφοριών μεταξύ των συσκευών. H απλότητα που το διακρίνει είναι και ο λόγος για τον οποίο το συγκεκριμένο πρωτόκολλο έχει επικρατήσει και έχει καταφέρει μια διαδεδομένη αποδοχή, καταναλώνοντας μικρή υπολογιστική ισχύ και δικτυακούς πόρους. Το SNMP καταφέρνει και συγκεντρώνει τις πληροφορίες που χρειάζεται με ένα μικρό αριθμό απλών εντολών και αυτό ισχύει για όλες τις συσκευές του δικτύου (hubs, switches, routers κτλ). Αν και το SNMP διακρίθηκε για την απλότητα του, με το πέρασμα του χρόνου άρχισαν να φαίνονται και τα μειονεκτήματα του, τα οποία είχαν να κάνουν κυρίως με θέματα ασφάλειας. Έτσι το 1993 παρουσιάστηκε η δεύτερη έκδοση του (SNMPv2), η οποία ήταν σαφώς βελτιωμένη σε σχέση με την πρώτη έκδοση και αργότερα η τρίτη έκδοση (SNMPv3)[2], [6],[7]. 8

10 1.3 TCL Πρόκειται για μια scripting γλώσσα προγραμματισμού η οποία αναπτύχθηκε το 1980 από τον John Ousterhout ενώ ήταν καθηγητής στο Πανεπιστήμιο Berkley της California. Σήμερα ανήκει στο Group της Sunscript την οποία διευθύνει ο John Ousterhout και αποτελεί μέρος της εταιρία Sun Microsystems. Ο John και οι υπόλοιποι της Sunscript Group κατά καιρούς εξελίσσουν την Tcl για χρόνια τώρα και πρόσφατα κυκλοφόρησαν την έκδοση 8.5. Η Tcl είναι πάρα πολύ εύκολη στο να την μάθει και να την χρησιμοποιεί κάποιος, ένα πρόγραμμα Tcl είναι απλά μια δέσμη, ακολουθία από εντολές. Δεδομένου ότι είναι γραμμένη σε γλώσσα μη κατανοητή για τον Η/Υ, κάθε πρόγραμμα Tcl είναι απλά ένα ή περισσότερα αρχεία που περιέχουν εντολές οι οποίες εκτελούνται από έναν διερμηνευτή γραμμών εντολών (interpreter) της Tcl. Στα UNIX συστήματα η πρώτη γραμμή από ένα Tcl script προσδιορίζει με ποιόν διερμηνευτή γραμμών εντολών της Tcl θα τρέξει, στα Windows συστήματα μοναδικές επεκτάσεις αρχείων χρησιμοποιούνται για να προσδιορίσουν ποιος διερμηνευτή γραμμών εντολών της Tcl θα τρέξει. Η Tcl μπορεί να ενσωματωθεί σε άλλες γλώσσες προγραμματισμού ή να της ενσωματώσει γεγονός που την κάνει μια πολύ ευέλικτη και χρήσιμη γλώσσα προγραμματισμού. Το Sunscript Group της Sun Microsystems προσφέρει δύο βασικούς διερμηνευτές γραμμών εντολών της Tcl τον tclsh και τον wish. Εκδόσεις πλατφορμών των tclsh και wish υπάρχουν για κάθε γνωστό Λειτουργικό Σύστημα που υπάρχει. Ο διερμηνευτής γραμμών εντολών tclsh ξεκινάει ένα παράθυρο κονσόλας και εκτελεί βασικό σύνολο ενσωματωμένων εντολών της Tcl. Ένα παράδειγμα εντολής της Tcl είναι η παρακάτω εντολή puts η οποία εμφανίζει το κείμενο hello world. % puts hello world hello world 9

11 1.3.1 ΠΛΕΟΝΕΚΤΗΜΑΤΑ ΤΗΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Tcl Ανοικτού Κώδικα : H Tcl είναι ανοικτού κώδικα, που σημαίνει ότι ο καθένας μπορεί να την χρησιμοποιήσει χωρίς να απαιτείται να καταβάλει κάποιο χρηματικό ποσό. Ευελιξία : Η Tcl μπορεί να ενσωματωθεί σε κώδικα HTML έτσι ώστε να δημιουργηθούν δυναμικές ιστοσελίδες. Μπορεί να «τρέξει» σε οποιαδήποτε πλατφόρμα λογισμικού. Ευρεία χρήση : Μεγάλες εταιρίες όπως η Cisco, η AOL και η CNET αναπτύσσουν εμπορικές εφαρμογές χρησιμοποιώντας την Tcl. Ευκολία : Υπάρχει πληθώρα παραδειγμάτων τόσο στο διαδίκτυο όσο και σε έντυπη μορφή καθιστώντας την εκμάθηση της μια γρήγορη αλλά και ταυτόχρονα ασφαλή διαδικασία (δοκιμασμένη και αξιόπιστη γλώσσα προγραμματισμού). 1.4 Η ΙΣΤΟΡΙΑ ΤΗΣ TCL ΚΑΙ ΤΟΥ ΠΡΩΤΟΚΟΛΛΟΥ SNMP To 1992 o Poul-Henning Kamp έκανε διαθέσιμο στο διαδίκτυο ένα πακέτο επέκτασης (extension package) του πρωτοκόλλου SNMP για την Tcl το οποίο βασιζόταν στο CMU (Carnegie Mellon University) SNMP πηγαίο κώδικα και την έκδοση 6.4 της Tcl. Το 1993 οι Glenn Trewitt και Poul-Henning Kamp συνέθεσαν μια Tcl-SNMP εφαρμογή που την ονόμασαν tclsnmp2, η οποία υποστήριζε διαδικασίες για το SNMPv1 και το SNMPv2. Το 1994 ο Jurgen Schonwalder που δούλευε στο Τεχνικό Πανεπιστήμιο του Braunschweig της Γερμανίας κυκλοφόρησε τον Scotty, ακόμα και σήμερα ο Jurgen ασχολείται και εξελίσσει τον Scotty. Επίσης το 1994 η Marshall Rose και ο Keith McCloghrie κυκλοφορούν το βιβλίο «Πώς να διαχειριστείτε το δίκτυο σας χρησιμοποιώντας το πρωτόκολλο SNMP». Αυτό το βιβλίο ήταν βασικά ένας οδηγός για τους διαχειριστές δικτύων για το πώς να χρησιμοποιήσουν τα δεδομένα της MIB του SNMP χρησιμοποιώντας τις προεκτάσεις του SNMP με την Tcl. Ο διερμηνευτής 10

12 Tcl-SNMP της Marshall και του Keith ήταν βασισμένος στον ISODE SNMP. Δυστυχώς, οι μη γνώστες προγραμματισμού είχανε πολλές δυσκολίες στο να «σηκώσουν και να τρέξουν» τον διερμηνευτή αυτό. Περίπου την ίδια περίοδο ο Διεθνής Οργανισμός Έρευνας για το πρωτόκολλο SNMP αναπτύσσει και κυκλοφορεί τον TickleMan για UNIX. O TickleMan είναι ένας προ-ενσωματωμένος (pre-built) διερμηνευτής ο οποίος είναι πολύ εύκολος στην εγκατάσταση του. Αργότερα μετά από τέσσερα περίπου χρόνια, το 1997 ο ίδιος οργανισμός κυκλοφορεί τον TickleMan/Lite για τα NT, ο οποίος τρέχει σε Windows NT και Windows 95. Στην συνέχεια κυκλοφόρησαν αρκετά πακέτα κυρίως βασισμένα στον Scotty και τον TickleMan, φτάνοντας σήμερα στο επικρατέστερο τον Scotty περιέχοντας τις προεκτάσεις του SNMP που είναι μέρος ενός πακέτου που ονομάζεται Tnm. Η τελευταία του έκδοση είναι η έκδοση Tnm 3.0 που μπορεί να εγκατασταθεί και να τρέξει σε οποιαδήποτε πλατφόρμα[3]. 1.5 ΤΙ ΜΑΣ ΠΡΟΣΦΕΡΕΙ Η ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Η διαχείριση δικτύων μας δίνει αρκετές δυνατότητες, οι οποίες είναι χωρισμένες σε τρεις κατηγορίες την δυναμική, την αντιδραστική και την αλληλεπιδραστική διαχείριση δικτύων. Στην δυναμική διαχείριση δικτύων μας δίνεται η δυνατότητα της απομακρυσμένης παραμετροποίησης, δηλαδή της διαμόρφωσης των αντικειμένων του δικτύου μας από απόσταση. Επίσης, μας επιτρέπει να έχουμε μια άποψη για την κατανομή του δικτύου μας οποιαδήποτε στιγμή το θελήσουμε. Άλλο χαρακτηριστικό της δυναμικής διαχείρισης δικτύων είναι η αλλαγή της διαμόρφωσης του δικτύου μας. Στην αντιδραστική διαχείριση μπορεί το σύστημα να μας ειδοποιεί για τυχόν προβλήματα που προκύπτουν στο δίκτυο, αυτός είναι κυρίως και ο λόγος που ονομάζεται αντιδραστική, διότι σε κάθε σφάλμα που εμφανιστεί υπάρχει αντίδραση η οποία είναι η ενημέρωση μας για το πρόβλημα που υπάρχει. Μας βοηθάει να διαγνώσουμε τα προβλήματα που παρουσιάζονται. Αυτόματη διαμόρφωση του δικτύου σε περίπτωση λάθους. 11

13 Στην αλληλεπιδραστική διαχείριση, έχουμε αλληλεπιδραστική ανίχνευση των λαθών, δηλαδή ο διαχειριστής «ζητάει» κάποια στοιχεία από ένα ή περισσότερα αντικείμενα του δικτύου και με την βοήθεια της εφαρμογής εντοπίζει τα λάθη που υπάρχουν στο δίκτυο. 1.6 ΤΙ ΧΡΕΙΑΖΕΤΑΙ ΣΕ ΜΙΑ ΕΦΑΡΜΟΓΗ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ Μια εφαρμογή διαχείρισης δικτύου χρειάζεται δικτυακές συσκευές και κονσόλα διαχείρισης, λογισμικό διαχείρισης δικτύου, το κατάλληλα εκπαιδευόμενο προσωπικό και ένα πλάνο διαχείρισης δικτύου που θα καλύπτει τα αποτελέσματα που θέλουμε να έχουμε. 1.7 ΣΤΟΧΟΙ ΤΗΣ ΔΙΑΧΕΙΡΙΣΗΣ Αποτελεσματικότερη χρήση πόρων. Ελαχιστοποίηση χρόνου εκτός λειτουργίας, εντοπισμός και αντιμετώπιση σφαλμάτων, πριν ακόμα τα αισθανθούν οι χρήστες. Διαχείριση συνεχώς μεταβαλλόμενων επικοινωνιακών τεχνολογιών και υπηρεσιών, βέλτιστη αξιοποίηση δικτύου, ανάπτυξη υπηρεσιών προστιθέμενης αξίας. Μείωση κόστους λειτουργίας. 12

14 ΚΕΦΑΛΑΙΟ 2 ΜΕΘΟΔΟΙ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ 2.1 ΔΙΑΧΕΙΡΙΣΗ ΣΦΑΛΜΑΤΩΝ (FAULT MANAGEMENT) Διαχείριση Σφαλμάτων είναι η διαδικασία εντοπισμού προβλημάτων στο δίκτυο. Αποτελείται από τον προσδιορισμό του προβλήματος στο δίκτυο, την απομόνωση της αιτίας του προβλήματος, και την διόρθωση του. Είναι η σημαντικότερη από τις δραστηριότητες διαχείρισης, διότι με την διαχείριση σφαλμάτων αυξάνεται η αξιοπιστία του δικτύου δίνοντας στους διαχειριστές εργαλεία που βοηθούν στην γρήγορη εύρεση των λαθών και την επιλογή των διαδικασιών αποκατάστασής τους. Αυτό είναι σημαντικό επειδή πολλοί χρήστες στηρίζονται σε μεγάλο ποσοστό στο δίκτυο δεδομένων για να κάνουν τις εργασίες τους αποτελεσματικά όσο κάνουν και σε ένα τηλεφωνικό δίκτυο. Προσφέρει ποικίλα εργαλεία για να παρέχει τις απαραίτητες πληροφορίες για την επικρατούσα κατάσταση του δικτύου. Αυτά τα εργαλεία μπορούν να επισημάνουν ακριβώς πότε ένα πρόβλημα εμφανίζεται και μπορεί να αναμεταδώσει τις πληροφορίες αμέσως στο διαχειριστή. Η διαδικασία που ακολουθείται στην διαχείριση σφαλμάτων είναι αρχικά η ανακάλυψη του προβλήματος, στην συνέχεια η απομόνωση του και τέλος η διόρθωση του προβλήματος. Για την ανακάλυψη του προβλήματος θα πρέπει να γίνεται συλλογή πληροφοριών από το δίκτυο. Ένας τρόπος συλλογής πληροφοριών είναι η διαβίβαση από μια συσκευή δικτύου της πληροφορίας, προς το σύστημα διαχείρισης, όταν εμφανίζεται ένα πρόβλημα. Το πρόβλημα μπορεί να είναι επανεκκίνηση ενός υπολογιστή, αποτυχία μιας σύνδεσης ή η μη ανταπόκριση ενός υπολογιστή στην εκτέλεση εντολών του συστήματος. Ένα σύνολο εργαλείων από πολύ απλά μέχρι σύνθετα υπάρχουν για να διευκολύνουν τη διαχείριση ελαττωμάτων. Ένα απλό εργαλείο επισημαίνει την ύπαρξη ενός προβλήματος αλλά δεν προσδιορίζει την αιτία του. Ένα πιο σύνθετο εργαλείο εκμεταλλεύεται την ικανότητα της αποστολής των πληροφοριών από τους υπολογιστές και τις συσκευές του δικτύου, προς το σύστημα διαχείρισης, ενώ ένα σύνθετο εργαλείο πηγαίνει ένα βήμα περαιτέρω με τη διόρθωση του ελαττώματος [9]-[12]. 13

15 2.2 ΔΙΑΧΕΙΡΙΣΗ ΑΠΟΔΟΣΗΣ (PERFORMANCE MANAGEMENT) Με την διαχείριση απόδοσης εξασφαλίζεται ότι το δίκτυο δεδομένων παραμένει προσβάσιμο και έτσι οι χρήστες μπορούν να το χρησιμοποιήσουν αποτελεσματικά. Με αυτή τη μέθοδο ο διαχειριστής του δικτύου χρησιμοποιώντας ένα πρωτόκολλο διαχείρισης δικτύου (π.χ SNMP) μπορεί να προσδιορίσει την τρέχουσα κατάσταση του δικτύου έτσι ώστε να είναι σε θέση να παρέχει ένα καλό επίπεδο υπηρεσίας στους χρήστες. Η διαδικασία που ακολουθείται στην διαχείριση απόδοσης είναι αρχικά η παρακολούθηση των δικτυακών συσκευών, για την εμφάνιση της κατάστασης τόσο της κατάστασης τους όσο και των συνδέσεων, ενώ στην συνέχεια γίνεται έλεγχος για το αν η χρήση των συσκευών και των συνδέσεων είναι σε κανονικά επίπεδα ή όχι. Ένα σύνολο εργαλείων από πολύ απλά μέχρι σύνθετα υπάρχουν για να διευκολύνουν τη διαχείριση ελαττωμάτων. Ένα απλό εργαλείο παρέχει υπηρεσίες παρακολούθησης και γραφικής απεικόνισης της κατάστασης των δικτυακών συσκευών. Ένα ποιο σύνθετο εργαλείο αποθηκεύει τις πληροφορίες που προέρχονται από την διαχείριση της απόδοσης σε μια βάση δεδομένων και τις παρουσιάζει σε γραφικό περιβάλλον, ενώ ένα πολύπλοκο εργαλείο παρέχει το πλεονέκτημα της ανάλυσης όλων των δεδομένων [9]-[12] 2.3 ΔΙΑΧΕΙΡΙΣΗ ΛΟΓΑΡΙΑΣΜΩΝ(ACCOUNTING MANAGEMENT) Διαχείριση Λογαριασμών είναι η διαδικασία συλλογής των στατιστικών του δικτύου, όπως είναι ο χώρος στους σκληρούς δίσκους και η ταχύτητα επεξεργασίας των υπολογιστικών συστημάτων που αποτελούν το δίκτυο. Η διαδικασία που ακολουθείται στη διαχείριση λογαριασμών είναι αρχικά η συλλογή δεδομένων για την χρήση των πόρων του δικτύου και στην συνέχεια η επεξεργασία τους έτσι έτσι ώστε ο διαχειριστής του δικτύου να είναι σε θέση να λαμβάνει αποφάσεις για την κατανομή των πόρων του δικτύου 14

16 Ένα σύνολο εργαλείων από πολύ απλά μέχρι σύνθετα υπάρχουν για να διευκολύνουν τη διαχείριση λογαριασμών. Ένα απλό εργαλείο συλλέγει στοιχεία για την χρήση του δικτύου και δημιουργεί μια αναφορά. Ένα πιο σύνθετο εργαλείο είναι σε θέση να παρέχει στον διαχειριστή την δυνατότητα να αποφασίζει για κατανομή των πόρων στους χρήστες, ενώ ένα προηγμένο εργαλείο είναι σε θέση να προβλέψει την χρήση των πόρων του δικτύου από κάθε χρήστη [9]-[12]. 2.4 ΔΙΑΧΕΙΡΙΣΗ ΑΣΦΑΛΕΙΑΣ (SECURITY MANAGEMENT) Επιτρέπει στους διαχειριστές του δικτύου τον περιορισμό της πρόσβασης σε δικτυακές συσκευές με ευαίσθητες πληροφορίες και την ειδοποίησης τους σε περίπτωση αποπειραθείσας ή πραγματικής παραβιάσεις των δικτυακών συσκευών. Επίσης παρέχεται ένα αίσθημα ασφάλειας στους χρήστες του δικτύου διότι ανησυχούν λιγότερο για τις ευαίσθητες πληροφορίες που βρίσκονται αποθηκευμένες στους ηλεκτρονικούς τους υπολογιστές. Στη διαδικασία διαχείρισης ασφάλειας αρχικά γίνεται ο καθορισμός της ευαίσθητης πληροφορίας και στην συνέχεια γίνεται η εύρεση των σημείων πρόσβασης σε αυτές. Τέλος λαμβάνονται όλα τα απαραίτητα μέτρα για την ασφάλεια των σημείων πρόσβασης. Ένα σύνολο εργαλείων από πολύ απλά μέχρι σύνθετα υπάρχουν για να διευκολύνουν τη διαχείριση ασφάλειας. Ένα απλό εργαλείο μπορεί να παρουσιάζει όλα τα μέτρα ασφάλειας που υπάρχουν σε οποιαδήποτε δικτυακή συσκευή. Ένα ποιο σύνθετο εργαλείο ειδοποιεί τον διαχειριστή του δικτύου πότε ένας χρήστης έχει προσπαθήσει να έχει πρόσβαση σε ευαίσθητες πληροφορίες ενώ σε ένα σύνθετο εργαλείο ενεργοποιούνται όλα τα απαραίτητα μέτρα για να σταματήσει την αναρμόδια πρόσβαση στις ευαίσθητες πληροφορίες [9]-[12]. 15

17 2.5 ΣΥΓΧΡΟΝΗ Vs ΑΣΥΓΧΡΟΝΗΣ ΔΙΑΧΕΙΡΙΣΗΣ (POLLING Vs NOTIFICATIONS) Στην σύγχρονη διαχείριση το σύστημα διαχείρισης δικτύου ζητά περιοδικά, παραδείγματος χάριν κάθε δέκα λεπτά από τα αντικείμενα να του στείλουν πληροφορίες για την κατάσταση τους. Ενώ στην ασύγχρονη διαχείριση αν και όταν υπάρχει ανάγκη τα αντικείμενα ειδοποιούν το σύστημα διαχείρισης για κάποιο γεγονός, κατάσταση πόρτας, ελεύθερη μνήμη κτλ. που έχει ορίσει ο διαχειριστής (alarms, traps). Στην ερώτηση ποια από τις δύο μεθόδους είναι καλύτερη η απάντηση είναι και οι δύο. Χρησιμοποιούμε την κατάλληλη μέθοδο ανάλογα με το τι θέλουμε να ελέγχουμε και πόσο συχνά. Η σύγχρονη διαχείριση χρησιμοποιείται κυρίως για τη συλλογή στατιστικών στοιχείων και τον έλεγχο της συνδεσιμότητας. Η ασύγχρονη διαχείριση χρησιμοποιείται περισσότερο την παρακολούθηση των ανεμιστήρων μιας δικτυακής συσκευής, την θερμοκρασία λειτουργίας εντός ορίων ή την αλλαγή της κατάστασης ενός interface. 2.6 IN-BAND ΚΑΙ OUT-OF-BAND ΔΙΑΧΕΙΡΙΣΗ Στην in-band διαχείριση, η διαχείριση γίνεται μέσω του ίδιου του δικτύου, έχουμε έναν σταθμό διαχείρισης δικτύου ο οποίος επικοινωνεί απευθείας ή μέσω του δικτύου με τα αντικείμενα που διαχειρίζεται. Ιδιαίτερα χρήσιμο σε περιπτώσεις αλλαγής των ρυθμίσεων. 16

18 Στην Out-of-band διαχείριση, η διαχείριση του δικτύου γίνεται μέσω ενός άλλου δικτύου, όπου συνήθως υπάρχει σύνδεση μεταξύ των δύο δικτύων μέσω του τηλεφωνικού δικτύου και απαιτείται η χρήση modems και από τους δύο για να μπορούν να επικοινωνήσουν. Οι πληροφορίες των αντικειμένων καθυστερούν περισσότερο να φτάσουν στον σταθμό διαχείρισης δικτύου, διότι διασχίζουν κάποιο άλλο δίκτυο. 17

19 ΚΕΦΑΛΑΙΟ 3 Η ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΗΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ Το SNMP είναι βασισμένο στο μοντέλο διαχειριστή / πράκτορα που αποτελείται από: Σταθμό Διαχείρισης Δικτύου (Network Management Station -Manager) Διαχειριζόμενους Πράκτορες (Management Agents - Agent) Bάση Δεδομένων Διαχείρισης Πληροφοριών - (Μanagement Information Base) Πρωτόκολλο διαχείρισης - (Network Management Protocol) (σχ. 1). Διαχειριστής δικτύου Σύστημα Διαχείρισης Manager Πρωτόκολλο δικτύου Διαχειριζόμενο Στοιχείο Agent MIB Αντικείμενο υπό Διαχείριση MIB Σχήμα 1. Αρχιτεκτονική SNMP 3.1 ΣΤΑΘΜΟΣ ΔΙΑΧΕΊΡΙΣΗΣ ΔΙΚΤΥΟΥ (NMS) Ο Σταθμός Διαχείρισης Δικτύου παρέχει τη διεπαφή μεταξύ του διαχειριστή του δικτύου (του φυσικού προσώπου δηλαδή) και του συστήματος διαχείρισης. Ο Σταθμός Διαχείρισης Δικτύου είναι ο κεντρικός σταθμός από τον οποίο γίνεται και η διαχείριση. Μπορεί να είναι ένα μεμονωμένο σύστημα, αλλά μπορούν να υπάρχουν και περισσότερα από ένα τέτοια συστήματα για τον καταμερισμό των εργασιών σε ένα μεγάλο δίκτυο ή για εφεδρικούς λόγους. Τις θέσεις αυτών των σταθμών κατέχουν, συνήθως, ισχυροί σε δυνατότητες σταθμοί εργασίας, με αρκετή χωρητικότητα σε μνήμη. 18

20 Ο σταθμός διαχείρισης πρέπει να αποτελείται από: Ένα σύνολο εφαρμογών διαχείρισης για την ανάλυση δεδομένων και ανίχνευση σφαλμάτων / βλαβών, αφού τα ακατέργαστα δεδομένα δεν προσφέρουν καμιά ουσιαστική πληροφορία στον διαχειριστή για την κατάσταση και τη λειτουργικότητα του συστήματος. Ένα διαλογικό (συνήθως γραφικό) περιβάλλον για να επιβλέπει την κατάσταση του συστήματος αλλά και μεμονωμένων συσκευών, να μεταβάλλει τις παραμέτρους της κάθε συσκευής και να διαχειρίζεται καταστάσεις σφαλμάτων. Τη δυνατότητα εφαρμογής των απαιτήσεων του διαχειριστή σε πραγματική παρακολούθηση και έλεγχο των απομακρυσμένων στοιχείων του δικτύου. Μία βάση δεδομένων που θα είναι απόρροια όλων των ΜΙΒs των διαφόρων χαρακτηριστικών παραμέτρων των στοιχείων του δικτύου. Το SNMP μπορεί να υποστηρίξει τόσο κεντρική όσο και κατανεμημένη διαχείριση. Η δεύτερη περίπτωση της λειτουργίας του κατανεμημένου συστήματος παρουσιάζει ιδιαίτερο ενδιαφέρον για τη διαχείριση του δικτύου. Έτσι μερικά συστήματα λειτουργούν ταυτόχρονα τόσο στο ρόλο του διαχειριστή όσο και στο ρόλο του πράκτορα. Στη λειτουργία του σαν πράκτορας ένα τέτοιο σύστημα θα δέχεται εντολές από ένα ανώτερο σύστημα διαχείρισης. Κύρια δουλειά του κεντρικού σταθμού είναι να συλλέγει όλες τις πληροφορίες που έχουν συλλεχθεί από τις υπόλοιπες συσκευές του δικτύου και αφού τις επεξεργαστεί να τις παρουσιάζει. 3.2 ΔΙΑΧΕΙΡΙΖΟΜΕΝΟΙ ΠΡΑΚΤΟΡΕΣ (Agents) Οι πράκτορες παρέχουν τη διεπαφή μεταξύ του διαχειριστή και της φυσικής συσκευής η οποία είναι υπό διαχείριση. Με τον όρο Διαχειριζόμενοι Πράκτορες μπορούν να χαρακτηριστούν όλες οι συσκευές οι οποίες είναι συνδεδεμένες στο δίκτυο όπως π.χ. υπολογιστές, εκτυπωτές, επαναλήπτες (hubs), δρομολογητές (routers), μεταγωγείς (switches) κλπ. Αυτές οι συσκευές διαχειρίζονται από το σταθμό διαχείρισης δικτύου. Οι πράκτορες είναι εφοδιασμένοι με κατάλληλο λογισμικό. Σκοπός του κάθε πράκτορα είναι να αποκρίνεται σε διάφορες αιτήσεις του 19

21 σταθμού διαχείρισης, ενώ μπορεί να ενημερώνει ασύγχρονα το σταθμό διαχείρισης για διάφορα γεγονότα. 3.3 ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ (ΜΙΒ) Οι πόροι ενός δικτύου μπορούν να διαχειριστούν αν αναπαρασταθούν από αντικείμενα. Κάθε αντικείμενο είναι στην ουσία μια μεταβλητή που αναπαριστά ένα χαρακτηριστικό του διαχειριζόμενου πράκτορα. Η συλλογή των αντικειμένων αποτελεί τη βάση διαχείρισης πληροφορίας. Ο διαχειριστής και ο πράκτορας χρησιμοποιούν την βάση πληροφοριών διαχείρισης (MIB) και ένα σχετικά μικρό σύνολο εντολών για να ανταλλάξουν πληροφορίες. Η MIB είναι οργανωμένη σε μια δομή δέντρου με τις μεμονωμένες μεταβλητές, όπως την τοποθεσία, την περιγραφή και άλλα στοιχεία που αφορούν τα υπό διαχείριση αντικείμενα. Για την διάκριση της κάθε μεταβλητής στην MIB καθώς και στα μηνύματα SNMP που ανταλλάσσονται χρησιμοποιείται ένα μακρύ αριθμητικό σαν προσδιοριστικό του αντικειμένου που ονομάζεται Object Identifier ή αλλιώς OID. Κάθε στοιχείο του πρωτοκόλλου SNMP διαχειρίζεται συγκεκριμένα αντικείμενα, με το κάθε αντικείμενο να έχει συγκεκριμένα χαρακτηριστικά. Κάθε συνδυασμός αντικειμένου / χαρακτηριστικού έχει ένα μοναδικό προσδιοριστικό (το OID) το οποίο αποτελείται από αριθμούς χωρισμένους με τελείες (π.χ ). Αυτά τα προσδιοριστικά διαμορφώνουν ένα δέντρο όπως παρουσιάζεται στο σχήμα 2. Η MIB συσχετίζει κάθε OID με μια ετικέτα (π.χ «sysname») και διάφορες άλλες παραμέτρους σχετικές με το αντικείμενο. H MIB χρησιμεύει με αυτό τον τρόπο ως ένα λεξικό που χρησιμοποιείται για να αντιστοιχηθούν και να ερμηνευτούν τα SNMP μηνύματα. Το γεγονός ότι το κάθε αντικείμενο έχει μοναδικό όνομα μέσα στο δέντρο MIB μας επιτρέπει για παράδειγμα να χρησιμοποιούμε το όνομα ifoperstatus, αντί όλης της διαδρομής interfaces.iftable.ifentry.ifoperstatus. Άλλες µεταβλητές είναι read-only (µπορούµε µόνο να διαβάσουµε τις τιµές τους) και άλλες read-write (µπορούµε να διαβάσουµε και να θέσουµε τιµές σ αυτές). Όταν ένας διαχειριστής θελήσει να μάθει την τιμή από ένα ζευγάρι αντικειμένου / χαρακτηριστικού, όπως η κατάσταση ενός σημείου, του ονόματος του 20

22 συστήματος, ή τον χρόνο που το στοιχείο είναι ενεργό, θα δημιουργήσει ένα πακέτο GET που περιλαμβάνει το OID για κάθε ζευγάρι αντικειμένου/ χαρακτηριστικού που τον ενδιαφέρει ($s get , όπου $s είναι το SNMP session ή κανάλι που χρησιμοποιούμε για να συνδεθούμε με την συσκευή που θέλουμε να διαχειριστούμε). Το στοιχείο λαμβάνει το αίτημα και ψάχνει κάθε OID που του ζητήθηκε στην MIB. Εάν το OID βρεθεί, δημιουργείται ένα πακέτο απάντησης που περιλαμβάνει την τρέχουσα τιμή και στέλνεται ({ TimeTicks ). Εάν το OID δεν βρεθεί, στέλνεται απάντηση λάθους ΣΥΝΤΑΞΗ ΑΝΤΙΚΕΙΜΕΝΩΝ Σχήμα 2. Απεικόνιση MIB <όνομα> OBJECT-TYPE SYNTAX <τύπος αντικειμένου> MAX-ACCESS <"not-accessible" "accessible-for-notify" "read-only" "read-write" "read-create"> STATUS <"current" "deprecated" "obsolete"> DESCRIPTION <κείμενο> INDEX { DEFVAL { ::= {<θέση του αντικειμένου στον προηγούμενο κλάδο του δένδρου> 21

23 3.3.2 ΤΥΠΟΙ ΑΝΤΙΚΕΙΜΕΝΩΝ INTEGER (μπορεί να χρησιμοποιηθεί και για λίστα απαρίθμησης) Integer32 Unsigned32 Counter32 & Counter64 Gauge32 Timeticks (εκατοστά του δευτερολέπτου, όπως μετρούνται στο σύστημα) OCTET STRING OBJECT IDENTIFIER Opaque RowStatus DisplayString IpAddress PhysAddress ΠΑΡΑΔΕΙΓΜΑ ΑΝΤΙΚΕΙΜΕΝΟΥ OID sysuptime OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS current DESCRIPTION "The time (in hundredths of a second) since the network management portion of the system was last re-initialized." ::= {system 3 Επομένως, μπορούμε να πούμε πως η καρδιά του πρωτοκόλλου SNMP είναι μια τοπική Βάση Δεδομένων Διαχείρισης η οποία περιλαμβάνει ορισμούς για τις διαχειριζόμενες συσκευές, τους πράκτορες οι οποίοι είναι διαθέσιμοι καθώς και τις αιτήσεις για τις πληροφορίες τις οποίες αυτοί έχουν δεχθεί. Όλες οι πληροφορίες οι οποίες χρειάζονται για τη διαχείριση μιας συγκεκριμένης συσκευής είναι 22

24 αποθηκευμένες σε ένα αρχείο το οποίο είναι γνωστό ως «αρχείο Βάσης Διαχείρισης Πληροφορίας - MIB file». Αυτό το αρχείο είναι οργανωμένο ώστε να υπακούσει σε ένα γενικότερο πλαίσιο, το οποίο ονομάζεται Δομή των Πληροφοριών Διαχείρισης (Structure of Management Information SMI). Μπορεί ο κάθε κατασκευαστής να έχει την δικιά του MIB όλοι όμως οι agents υλοποιούν τη MIB II (RFC 1213). Το αρχείο αυτό κρατά την αντιστοιχία μεταξύ των object names και των object Ids. Βρίσκεται στο σταθμό διαχείρισης, ώστε να μετατρέπει τα δυσκολονόητα OIDs στα αντίστοιχα object names, ώστε να είναι το περιβάλλον πιο φιλικό προς το διαχειριστή. ### THIS FILE WAS GENERATED BY MIB2SCHEMA "org" "1.3" "dod" "1.3.6" "internet" " " "directory" " " "mgmt" " " "experimental" " " "private" " " "enterprises" " " "mib-2" " " "system" " " "interfaces" " " "at" " " "ip" " " "icmp" " " "tcp" " " "udp" " " "egp" " " "transmission" " " "snmp" " " "sysdescr" " " "sysobjectid" " " "sysuptime" " " "syscontact" " " "sysname" " " "syslocation" " " "sysservices" " " "ifnumber" " " "iftable" " " "ifentry" " " "ifindex" " " "ifdescr" " " "iftype" " " "ifmtu" " " "ifspeed" " " 23

25 3.4 ΠΡΩΤΟΚΟΛΛΟ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ (ΝΜΡ) Το πρωτόκολλο διαχείρισης δικτύου, είναι το πρωτόκολλο που αν συνδυαστεί ή χρησιμοποιηθεί από το κατάλληλο λογισμικό είναι αυτό που μας παρέχει πληροφορίες για το δίκτυο. Το πρωτόκολλο διαχείρισης δικτύου είναι αυτό που μας δίνει την δυνατότητα να διαχειριζόμαστε συσκευές διαφορετικού σκοπού (routers, switches,repeaters κτλ.) και διαφορετικών κατασκευαστών με έναν ομοιόμορφο τρόπο. Με λίγα λόγια μπορούμε να πούμε πως μας παρέχει ένα κοινό interface. Ο σταθμός εργασίας και οι πράκτορες είναι συνδεδεμένοι με το πρωτόκολλο διαχείρισης δικτύου. Το πρωτόκολλο που χρησιμοποιείται για τη διαχείριση δικτύων είναι το SNMP. Το πρωτόκολλο αυτό περιλαμβάνει τις εξής εντολές: GET: Με αυτή την εντολή ο διαχειριστής μπορεί να ανακτήσει μια τιμή ενός αντικειμένου, από έναν πράκτορα. Έτσι ανακτάται η τιμή των διάφορων μεταβλητών, οι οποίες περιγράφουν την κατάσταση της συγκεκριμένης συσκευής. GET - NEXT: Ο πράκτορας επιστρέφει την επόμενη τιμή MIB από αυτήν που του έχει ζητηθεί. GET RESPONSE: Ο πράκτορας επιστρέφει απαντήσεις στις εντολές GET, GET NEXT, SET. WALK: Επιστρέφονται όλα τα προσδιοριστικά του χαμηλότερου επιπέδου. SET: Ο διαχειριστής με αυτή την εντολή θέτει την τιμή σε μια μεταβλητή και έτσι καθορίζει μια χαρακτηριστική τιμή μιας διαχειριζόμενης συσκευής. TRAP: Αυτή η εντολή χρησιμοποιείται μόνο από τον πράκτορα και ενημερώνει το σταθμό διαχείρισης ασύγχρονα για την πραγματοποίηση ενός γεγονότος. Τις εντολές GET και GET-NEXT τις χρησιμοποιεί ο διαχειριστής για να ζητήσει πληροφορίες για μια συγκεκριμένη μεταβλητή. Ο πράκτορας, με το που θα 24

26 λάβει μια εντολή GET ή GET-NEXT, θα στείλει ένα μήνυμα GET-RESPONSE στον διαχειριστή είτε με τις πληροφορίες που του ζητήθηκαν είτε με μια ένδειξη λάθους. Η εντολή SET χρησιμοποιείται από τον διαχειριστή για να ζητήσει την αλλαγή μιας συγκεκριμένης μεταβλητής. Ο πράκτορας τότε θα απαντήσει με ένα μήνυμα GET-RESPONSE που δείχνει ότι η αλλαγή έχει γίνει ή μια ένδειξη λάθους. Το μήνυμα TRAP χρησιμοποιείται από τον πράκτορα για να ενημερώσει τον διαχειριστή για ένα σημαντικό γεγονός ή μια αλλαγή σε κάποιο χαρακτηριστικό του πράκτορα. Αυτό που παρατηρούμε είναι ότι η πλειοψηφία των εντολών (GET, GET- NEXT, SET, WALK) ξεκινάνε από τον διαχειριστή, η μετάδοση αυτών των εντολών λαμβάνει χώρα στην πόρτα 161. Επειδή το μήνυμα TRAP είναι το μόνο μήνυμα το οποίο ξεκινάει από τον πράκτορα, είναι το μήνυμα που χρησιμοποιείται από τα συστήματα DPS Remote Telemetry Units (RTU) για την αναφορά «συναγερμών»(σφαλμάτων ή αλλαγών). Ενώ οι παραπάνω εντολές που ξεκινάνε από τον διαχειριστή μεταφέρονται μέσω της πόρτας 161, το μήνυμα trap που ξεκινάει από τον πράκτορα μεταφέρεται μέσω της πόρτας 162. Με αυτόν το τρόπο ειδοποιείται ο διαχειριστής για ένα σημαντικό γεγονός μόλις αυτό συμβεί, αντί της αναμονής μέχρι να ζητήσει την πληροφορία. Λόγο της απλότητας του και με το πέρασμα του χρόνου η πρώτη έκδοση του SNMP (SNMPv1) παρουσίασε πολλά προβλήματα που είχαν να κάνουν με την 25

27 ασφάλεια. Έτσι, το 1993 παρουσιάζεται η δεύτερη έκδοση του, γνωστή ως SNMPv2, αναβαθμίστηκε σημαντικά ο μηχανισμός ασφάλειας του και αυτό έγινε με την εισαγωγή κρυπτογραφίας με χρήση DES. Επίσης προστέθηκαν και δύο νέοι τύποι μηνυμάτων, το inform το οποίο απαιτεί την επιβεβαίωση από το NMS και το getbulk. Ακόμα, προστέθηκαν ο μηχανισμός επιβεβαίωσης λήψης παγίδων (traps) και οι νέοι κωδικοί λάθους, nosuchname, badvalue και readonly. Στην συνέχεια και αφού το SNMP ήταν το ποιο διαδεδομένο πρωτόκολλο διαχείρισης κυκλοφόρησε η τρίτη του έκδοση, η SNMPv3. Σ αυτή την έκδοση δόθηκε μεγαλύτερη βαρύτητα στην ασφάλεια, αφού οι βελτιώσεις που είχαν γίνει στην προηγούμενη (SNMPv2) δεν αποδείχτηκαν αποτελεσματικές. Περιέχει ακόμα ποιο ενισχυμένη κρυπτογραφία, χρησιμοποιεί HMAC για πιστοποίηση ταυτότητας και συναρτήσεις HASH MD5 (128 bits) ή SHA-1 (160 bits). Ενσωμάτωσε πολλαπλά επίπεδα πρόσβασης για διαφορετικές ομάδες χρηστών, δηλαδή όρισε στην ουσία τα δικαιώματα views, το τι επιτρέπεται να δει ο καθένας εξαρτώμενος από τα δικαιώματα που είχε. Τέλος εισήγαγε και την χρονική διαχείριση ασφάλειας που περιέχει τα πιστοποιημένα ρολόγια, τον συγχρονισμό και τον έλεγχο χρονισμού στις απαντήσεις. 3.5 Η ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΟΥ ΠΡΩΤΟΚΟΛΛΟΥ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ Το SNMP λειτουργεί πάνω από το πρωτόκολλο UDP (User Datagram Protocol). Η διαδικασία διαχειριστή πετυχαίνει τη διαχείριση του δικτύου χρησιμοποιώντας το SNMP, που υλοποιείται πάνω από το UDP, IP και τα σχετικά πρωτόκολλα δικτύου (για παράδειγμα Ethernet, FDDI, X25 κλπ). Κάθε πράκτορας πρέπει επίσης να υλοποιήσει το SNMP, UDP, και ΙP. Επιπλέον, η διαδικασία πράκτορα μεταφράζει τα SNMP μηνύματα και ελέγχει την ΜΙΒ του πράκτορα. 26

28 Το σχήμα 3 δίνει μια πιο λεπτομερή εικόνα του SNMP. Από το σταθμό διαχείρισης εκδίδονται τέσσερις τύποι μηνυμάτων από τις εφαρμογές διαχείρισης: Get Request, GetNextRequest, SetRequest και Walk. Οι πρώτες δύο είναι παραλλαγές της λειτουργίας Get. Για όλα τα μηνύματα στέλνεται από τον πράκτορα επιβεβαίωση λήψης με τη μορφή μηνύματος GetResponse το οποίο στέλνεται στην εφαρμογή διαχείρισης. Επίσης ένας πράκτορας μπορεί να εκδώσει ένα μήνυμα παγίδα σε απόκριση κάποιου γεγονότος το οποίο επηρεάζει την ΜΙΒ και τους διαχειριζόμενους πόρους. Σχήμα 3 Πρωτόκολλο Διαχείρισης Δικτύου Επειδή το SNMP βασίζεται στο UDP το οποίο είναι χωρίς σύνδεση (connectionless) πρωτόκολλο έτσι και το SNMP είναι πρωτόκολλο χωρίς σύνδεση δηλαδή καμία τρέχουσα σύνδεση ανάμεσα στο σταθμό διαχείρισης και τους πράκτορες του δεν εγκαθίσταται. Αντίθετα, κάθε ανταλλαγή είναι και μια μεμονωμένη ενέργεια ανάμεσα στο σταθμό και τους πράκτορες του. 27

29 3.6 ΑΝΑΦΟΡΕΣ ΚΑΤ ΑΠΑΙΤΗΣΗ ΤΟΥ ΔΙΑΧΕΙΡΙΣΤΗ ΕΞΑΙΤΙΑΣ ΠΑΓΙΔΩΝ (Traps) Εάν ένας σταθμός διαχείρισης είναι υπεύθυνος για ένα μεγάλο αριθμό πρακτόρων και αν κάθε πράκτορας έχει πολλά αντικείμενα τότε δεν συμφέρει στο σταθμό διαχείρισης να ζητά περιοδικά αναφορές κατ απαίτηση από τους πράκτορες. Σε αντίθεση το SNMP και η συσχετιζόμενη ΜΙΒ είναι σχεδιασμένα έτσι ώστε να χρησιμοποιείται η τεχνική αναφορές κατ απαίτηση εξαιτίας παγίδων. Η τεχνική περιγράφεται ως εξής: Σε κάποιο αρχικό χρόνο και σε τακτά διαστήματα (πχ. μια φορά την ημέρα) ο σταθμός διαχείρισης μπορεί να ζητήσει από τους πράκτορες του μερικές σημαντικές πληροφορίες (πχ. χαρακτηριστικά διασύνδεσης) και ίσως κάποια στατιστικά στοιχεία (πχ. μέσος όρος πακέτων που στέλνονται και λαμβάνονται από κάθε κόμβο για δεδομένη χρονική περίοδο). Μετά από αυτήν την απαίτηση ο σταθμός διαχείρισης σιωπά και ο κάθε πράκτορας είναι υπεύθυνος να στείλει κάποια αναφορά όταν συμβεί κάποιο μη συνηθισμένο γεγονός (πχ. επανεκκίνηση πράκτορα, μια σύνδεση δεν απαντά κλπ). Αυτά τα γεγονότα στα SNMP μηνύματα ονομάζονται παγίδες (traps). Όταν συμβεί κάποιο γεγονός τότε ο σταθμός διαχείρισης εκτελεί κάποιες ενέργειες, ζητώντας αναφορές κατ απαίτηση από τον πράκτορα που έχει αναφέρει το γεγονός καθώς και από τους γειτονικούς του για να εντοπίσει το πρόβλημα και να αντλήσει χρήσιμες πληροφορίες. Οι αναφορές κατ απαίτηση εξαιτίας παγίδων μπορούν να βοηθήσουν στη μείωση της κυκλοφορίας διαχειριστικών πληροφοριών στο δίκτυο και να εξοικονομήσουν χρόνο επεξεργασίας στους πράκτορες. 3.7 ΕΝΔΙΑΜΕΣΟΙ Ή ΜΕΣΟΛΑΒΗΤΕΣ Η χρήση του SNMP απαιτεί ότι όλοι οι πράκτορες υποστηρίζουν κοινό πρωτόκολλο (UDP, IP). Αυτό περιορίζει την απευθείας διαχείριση συσκευών όπως είναι οι γέφυρες, τα modems κλπ. που δεν υποστηρίζουν κανένα τμήμα του TCP/IP. Επίσης μπορεί να υπάρχουν αρκετά συστήματα που δεν υποστηρίζουν TCP/IP και για τα οποία δεν κρίνεται σκόπιμο να επιβαρυνθούν με το SNMP, και την ΜΙΒ. Στη 28

30 περίπτωση στην οποία έχουμε τέτοιες συσκευές, χρησιμοποιούμε εκτός των παραπάνω απλών πρακτόρων και τους πιο σύνθετους που τους χαρακτηρίσαμε ως ενδιάμεσους ή μεσολαβητές. Οι πράκτορες αυτοί έχουν τα εξής πλεονεκτήματα: διαχειρίζονται διάφορες συσκευές χρησιμοποιώντας εικονικά οποιοδήποτε πρωτόκολλο. Οι ενδιάμεσοι πράκτορες επικοινωνούν με τον απομακρυσμένο σταθμό εργασίας. Σ αυτή την περίπτωση οι ενδιάμεσοι πράκτορες έχουν σαν σκοπό να μετατρέψουν το μήνυμα το οποίο μεταφέρεται σε εκείνο το πρωτόκολλο το οποίο καταλαβαίνουν οι υπό διαχείριση συσκευές. Ο ενδιάμεσος πράκτορας μπορεί να δώσει τη δυνατότητα ώστε το σύστημα να έχει πρόσβαση σε περισσότερες από μια συσκευές. Έτσι ο κεντρικός σταθμός μπορεί να επικοινωνήσει με έναν πράκτορα για να διαχειριστεί μέσω αυτού ένα σύνολο από συσκευές που ελέγχονται από τον παραπάνω πράκτορα. Έτσι στην περίπτωση που ο πράκτορας αυτός βρίσκεται σε διαφορετικό υποδίκτυο από τον κεντρικό σταθμό διαχείρισης μπορούμε να αναγνωρίσουμε τα πλεονεκτήματα που παρέχει μια τέτοια υποδομή. Ο ενδιάμεσος πράκτορας θα αναλάβει τη χαμηλού επιπέδου λειτουργία που έχει να κάνει με τη συλλογή δεδομένων από τις συσκευές τις οποίες αυτός μπορεί να διαχειριστεί. Έτσι μεταξύ των διαφόρων πρακτόρων των απομακρυσμένων υποδικτύων και του σταθμού διαχείρισης πραγματοποιείται η ελάχιστη δυνατή κυκλοφορία δεδομένων, ενώ ο κεντρικός σταθμός κατά κάποιο τρόπο αποφεύγει την άμεση επικοινωνία με όλα τα στοιχεία του δικτύου. Αυτή η δομή του δικτύου είναι πολύ διαδεδομένη γιατί παρέχει μια πιο γρήγορη απάντηση σε αποτυχίες του δικτύου ή απρόσμενα γεγονότα, αλλά πρέπει να αναφερθεί ότι περιορίζονται σε τοπική αριστοποίηση ενώ γενικά είναι πιο πολύπλοκη στην ανάπτυξη και διατήρηση του συστήματος του δικτύου. Το παρακάτω διάγραμμα δίνει τον τύπο της αρχιτεκτονικής του πρωτοκόλλου με τη χρήση ενδιάμεσου ή μεσολαβητή: 29

31 30

32 ΚΕΦΑΛΑΙΟ 4 ΤΟ ΛΟΓΙΣΜΙΚΟ SCOTTY 4.1 ΤΙ ΕΙΝΑΙ ΤΟ ΛΟΓΙΣΜΙΚΟ SCOTTY; Ο Scotty είναι μια επέκταση για την γλώσσα προγραμματισμού Tcl (tcl extension) που παρέχει πρόσβαση στα διάφορα πρωτόκολλα δικτύων TCP/IP. Ανήκει στην κατηγορία του ελεύθερου λογισμικού ανοιχτού κώδικα (open-source), μπορεί να μεταγλωττιστεί και να τρέξει σ όλες τις πλατφόρμες Unix και Windows, το μόνο που χρειάζεται είναι ένας μεταγλωττιστής (compiler) της C, η Tcl/Tk και τα συνηθισμένα utilities (make, sed) για να μεταγλωττίσουμε και να εγκαταστήσουμε τον Scotty. Περιέχει ένα GNU (GNU General Public Licence του Free Software Foundation) autoconf configure script το οποίο απλοποιεί τις διαδικασίες της μεταγλώττισης (compilation) και της εγκατάστασης. Ο πηγαίος κώδικας του βρίσκεται στην ιστοσελίδα Ο Scotty περιλαμβάνει δύο χαρακτηριστικά, το πρώτο είναι η επέκταση της Tcl το Tnm, με το οποία μπορούμε να έχουμε πρόσβαση στις πηγές πληροφοριών της διαχείρισης δικτύων και το δεύτερο το Tkined, που είναι μας παρέχει γραφική απεικόνιση (GUI) δικτύων και μπορεί να χρησιμοποιηθεί σ ένα σύστημα διαχείρισης δικτύων. Οι διεπαφές πρωτοκόλλου (protocol interfaces) μας επιτρέπουν να ανακτήσουμε τις πληροφορίες που απαιτούνται για να «γράψουμε» απλά αλλά ισχυρά scripts διαχείρισης δικτύων σε Tcl. Ο Scotty περιλαμβάνει τη δική του λίστα για το πρωτόκολλο SNMP, έναν αναλυτή SNMP MIB, καθώς επίσης έναν αναλυτή GDMO MIB και μια διεπαφή στο πρωτόκολλο CMIP η οποία ονομάζεται OSIMIS. Μας δίνει την δυνατότητα επίσης να επικοινωνήσουμε με την υπηρεσία ονομασίας περιοχών (DNS), να στείλουμε ICMP πακέτα, να χρησιμοποιήσουμε τις γενικευμένες υπηρεσίες του TCP/UDP, να στέλνουμε και να εξυπηρετούμε αιτήματα HTTP και άλλα πολλά.[13][14] 4.2 ΕΓΚΑΤΑΣΤΑΣΗ SCOTTY Θέλουμε να εγκαταστήσουμε τον scotty και τα πακέτα του στον server(solaris 10) για να μπορούμε να χρησιμοποιήσουμε το πρωτόκολλο SNMP με την Tcl. Κατεβάζουμε την τελευταία έκδοση του Scotty, εμείς χρησιμοποιούμε το αρχείο 31

33 scotty tar.gz, το οποίο περιέχει τον scotty και τα πακέτα του Tnm που βρίσκονται στην έκδοση 3.0.0, το κατεβάσαμε από την διεύθυνση αναφέραμε παραπάνω (μπορείτε να χρησιμοποιήσετε το αρχείο που βρίσκετε στο cd της εργασίας). Αφού το κατεβάσουμε και πριν προχωρήσουμε στην εγκατάσταση θα πρέπει να ελέγξουμε αν έχουμε ή όχι την Tcl (Tcl shell) εγκατεστημένη και αν ναι ποια έκδοση της. Επομένως ανοίγουμε μια κονσόλα και γράφουμε: tclsh αν εμφανιστεί στην επόμενη γραμμή το σηματάκι % τότε σημαίνει πως έχουμε ήδη εγκατεστημένη την Tcl στο σύστημα μας (βλ. εικόνα 1). Στην συνέχεια πρέπει να δούμε ποια έκδοση της Tcl είναι εγκατεστημένη στο σύστημα μας, δίνουμε την εντολή info tclversion. Όπως προκύπτει από την εικόνα 2 η έκδοση της Tcl είναι η 8.4. Αφού ελέγξαμε ότι έχουμε την Tcl 8.4 εγκατεστημένη στο σύστημα μας θα πρέπει να προβούμε σε κάποιες αλλαγές στον κώδικα του πακέτου πριν την μεταγλώττιση και την εγκατάσταση του, διότι το συγκεκριμένο πακέτο για την εγκατάσταση απαιτεί την Tcl 8.2, επειδή όμως έχουμε ήδη την 8.4 κάναμε κάποιες αλλαγές στον κώδικα έτσι ώστε να «ξεγελάσουμε» την εφαρμογή και να εγκατασταθεί επιτυχώς με την 8.4. Στην συνέχεια γράφουμε exit για να επιστρέψουμε στο bash shell (ή όποιο shell χρησιμοποιούμε ksh κ.τ.λ). «Ξέζιπάρουμε» το αρχείο scotty tar.gz (βλ. εικόνα 3). Έχοντας έτσι τον φάκελο scotty , πηγαίνουμε στην διαδρομή /scotty /tnm/generic (cd /scotty /tnm/generic) και με έναν editor(vim, kate, gedit ή άλλο) ανοίγουμε το αρχείο tnmint.h και βρίσκουμε το συγκεκριμένο κομμάτι 32

34 κώδικα (Σε περίπτωση που έχουμε εγκατεστημένη την έκδοση 8.2 της Tcl δεν χρειάζεται να προβούμε στις παρακάτω αλλαγές στον κώδικα) #define TnmGetTime TclpGetTime #define TnmCreateDirectory TclpCreateDirectory #if TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION == 8 && TCL_RELEASE_SERIAL > 2 #define TnmStat TclStat #else #define TnmStat stat #endif και το αντικαθιστούμε με #define TnmGetTime TclpGetTime #if TCL_MAJOR_VERSION < 8 TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION < 4 #define TnmCreateDirectory TclpCreateDirectory #endif #if TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION == 8 && TCL_RELEASE_SERIAL > 2 #define TnmStat TclStat #else #define TnmStat stat #endif σώζουμε το αρχείο και το κλείνουμε. Ενώ βρισκόμαστε στην ίδια διαδρομή ανοίγουμε το αρχείο tnmutil.c και βρίσκουμε το συγκεκριμένο κομμάτι κώδικα #include "tnmint.h" #include "tnmport.h" και συμπληρώνουμε από κάτω τον παρακάτω κώδικα 33

35 #if TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION >= 4 TCL_MAJOR_VERSION > 8 int TnmCreateDirectory(char *path) { Tcl_Obj *o; int res; o = Tcl_NewStringObj(path, -1); Tcl_IncrRefCount(o); res = Tcl_FSCreateDirectory(o); Tcl_DecrRefCount(o); return res; #endif Τις παραπάνω αλλαγές τις κάνουμε διότι στον server μας έχουμε ήδη εγκατεστημένη την Tcl και η συγκεκριμένη έκδοση του scotty για να εγκατασταθεί στο σύστημα μας ελέγχει αν υπάρχει εγκατεστημένη Tcl μέχρι την έκδοση 8.2, αλλιώς δεν μπορούμε να προχωρήσουμε στην εγκατάσταση του Scotty[1]. Με τις παραπάνω αλλαγές όμως λέμε στην εγκατάσταση να χρησιμοποιήσει οποιαδήποτε έκδοση της Tcl είναι εγκατεστημένη στο σύστημα μας και όχι μέχρι την 8.2 που είχε ορισμένη. Τώρα είμαστε έτοιμοι να ξεκινήσουμε την εγκατάσταση. Θα πρέπει να φτιάξουμε το configuration file πρώτα, γράφουμε: -bash-3.00$./configure with-tcl=/usr with-tk=/usr prefix=/usr όπου with-tcl=/usr, --with-tk=/usr βάζουμε την διαδρομή που είναι η Tcl/Tk και οι βιβλιοθήκες τους αντίστοιχα εγκατεστημένες στο σύστημα μας (διαδρομή που βρίσκονται τα αρχεία tclconfig.sh και tkconfig.sh, αν για κάποιον λόγο λείπουν αυτά τα αρχεία τότε θα χρειαστεί και εγκατάσταση του πακέτου tcl8.4-devel). Όπου prefix=/usr είναι η διαδρομή που θέλουμε να εγκαταστήσουμε το πακέτο (συνιστούμε την /usr). Αφού τελειώσουμε με το configuration file δίνουμε την εντολή -bash-3.00$ make 34

36 αν εκτελεστεί η make χωρίς κάποιο σφάλμα τότε μπορούμε να προχωρήσουμε την εγκατάσταση, σε αντίθετη περίπτωση ελέγχουμε αν οι διαδρομές που δώσαμε στο configure είναι οι σωστές. Στην συνέχεια πρέπει να γίνουμε root (superuser, su, sudo) δίνουμε τον κωδικό του superuser και τρέχουμε την εντολή: -bash-3.00$ make install Αν δεν μας επιστραφεί κάποιο σφάλμα τότε έχουμε εγκαταστήσει τον scotty και τα πακέτα του με επιτυχία, αλλιώς θα πρέπει να ξεκινήσουμε την διαδικασία από την αρχή και να δούμε που έχουμε κάνει λάθος. Αφού τελειώσουμε και την make install μας ενημερώνει πως υπάρχουν ακόμα δύο πακέτα για εγκατάσταση τα nmicpmd και nmtrapd για να τα εγκαταστήσουμε γράφουμε: -bash-3.00$ make sinstall Για να σιγουρευτούμε ότι όλα πήγαν καλά έχουμε εγκαταστήσει με επιτυχία την εφαρμογή γράφουμε -bash-3.00$ tclsh % package require Tnm και αν μας επιστρέψει τότε σημαίνει ότι έχουμε εγκαταστήσει επιτυχώς τον scotty. Αν μας επιστρέψει can't find package Tnm τότε δεν κάναμε επιτυχημένα την εγκατάσταση και θα πρέπει να προσπαθήσουμε πάλι. 35

37 ΚΕΦΑΛΑΙΟ 5 ΕΝΕΡΓΟΠΟΙΗΣΗ SNMP ΣΕ CISCO SWITCHES CATALYST 1900/2820 Αφού ολοκληρωθεί η εγκατάσταση του λογισμικού Scotty, για να είναι δυνατή η διαχείριση των δικτυακών συσκευών πρέπει να ενεργοποιηθεί το πρωτόκολλο SNMP σε αυτές, στην περίπτωση που είναι απενεργοποιημένο. Το πρωτόκολλο SNMP δεν είναι ενεργοποιημένο από τη Cisco κατά την αγορά, επομένως θα πρέπει να το ενεργοποιήσουμε εμείς. Αυτό μπορούμε να το καταφέρουμε με διάφορους τρόπους είτε από το web-interface (αν διαθέτει) της συσκευής είτε με την χρήση κονσόλας με σύνδεση telnet, ssh από την γραμμή εντολών πληκτρολογώντας τις κατάλληλες εντολές. 5.1 ΕΝΕΡΓΟΠΟΙΗΣΗ SNMP ΑΠΟ ΤΟ WEB-INTERFACE ΤΗΣ ΣΥΣΚΕΥΗΣ Ανοίγουμε έναν φυλλομετρητή (browser) και στην μπάρα διεύθυνσης (address bar) πληκτρολογούμε την IP διεύθυνση της συσκευής π.χ , αφού πληκτρολογήσουμε τον κωδικό και μπούμε στο web-interface της συσκευής, από τις επιλογές πάνω επιλέγουμε System και στην συνέχεια SNMP Configuration, τότε θα εμφανιστεί η παρακάτω σελίδα 36

38 «τσεκάρουμε» την επιλογή Enable SNMP αν δεν είναι ήδη τσεκαρισμένη, στην συνέχεια πάμε στο σημείο System Options που εισάγουμε κάποιες πληροφορίες σχετικές με την συσκευή μας όπως όνομα συσκευής, τοποθεσία, επικοινωνία. Αφού συμπληρώσουμε αυτές τις πληροφορίες πάμε στο σημείο που λέει Community Strings. Όπου παρατηρούμε πως υπάρχουν δύο τύποι communities, το community RW (write) που σαν default έχει την τιμή private και το community RO (read) που σαν default έχει την τιμή public. Τα communities είναι μια μορφή password που επιτρέπει μια από τρεις δυνατότητες πρόσβασης στον agent. 1. Μόνο ανάγνωση 2. Ανάγνωση και γράψιμο 3. Λήψη ασύγχρονων ειδοποιήσεων (traps) Ταυτόχρονα ένας χρήστης δίνοντας ένα community name μπορεί να έχει πρόσβαση και σε διαφορετικό View, δηλαδή σε διαφορετικά υποδένδρα της MIB, σύμφωνα με το τι έχει ορίσει ο διαχειριστής στον agent. Το community write περιέχει το community read, αλλά για λόγους ασφάλειας πρέπει πάντα να δηλώνουμε διαφορετικό community write από αυτό του community read. Για να αλλάξουμε τις προκαθορισμένες τιμές των communities πάμε στο κουτί που λέει Current Settings κάνουμε κλικ στο private RW και πατάμε το κουμπί Remove, παρατηρούμε πως από το κουτί Current Settings το Private RW έχει διαγραφεί, για να διαγράψουμε και το community read επαναλαμβάνουμε την ίδια διαδικασία. Για να προσθέσουμε το καινούριο community μεταφερόμαστε στο New Community String επιλέγουμε το RO για να ορίσουμε το καινούριο community read ή RW για το καινούριο community write πληκτρολογούμε ένα καινούριο community που εμείς θέλουμε και πατάμε το κουμπί << Add <<, βλέπουμε πως οι πληροφορίες που μόλις καταχωρήσαμε παρουσιάζονται στο Current Strings.[15] 37

39 5.2 ΕΝΕΡΓΟΠΟΙΗΣΗ SNMP ΜΕ ΤΗΝ ΧΡΗΣΗ ΚΟΝΣΟΛΑΣ Ανοίγουμε ένα command shell (κέλυφος εντολών) αν το λειτουργικό μας σύστημα είναι Unix-like ή ένα command prompt αν χρησιμοποιούμε Windows και κάνουμε σύνδεση telnet με την συσκευή, δηλαδή γράφουμε telnet <IP_ADDRESS_ΣΥΣΚΕΥΗΣ> ή telnet <ΟΝΟΜΑ_ΣΥΣΚΕΥΗΣ> αν έχουμε DNS Server στο δίκτυο μας και υπάρχει καταχωρημένη η αντιστοιχία IP ΟΝΟΜΑ_ΣΥΣΚΕΥΗΣ σ αυτόν ή αν είναι καταχωρημένη αυτή η αντιστοιχία σε κάποιον άλλον DNS Server που βρίσκετε εκτός του δικτύου μας π.χ. DNS της ΟΤΕΝΕΤ. Αφού υπάρχει η συγκεκριμένη συσκευή που θέλουμε να συνδεθούμε και μπορούμε να συνδεθούμε με telnet τότε μας εμφανίζει μια οθόνη με πληροφορίες της συσκευής και μας ζητάει τον κωδικό για να «μπούμε» στην συσκευή. Αν δώσουμε τον σωστό κωδικό τότε μας βγάζει στην οθόνη του κεντρικού μενού περιμένοντας να δώσουμε την επιλογή μας, μπορούμε να πλοηγηθούμε στο μενού ή στα υπομενού πατώντας το πλήκτρο που αντιστοιχεί σε κάθε επιλογή. 38

40 Για να ενεργοποιήσουμε το SNMP πατάμε το πλήκτρο Ν που αντιστοιχεί στην επιλογή Network Management στην συνέχεια μας εμφανίζει το υπομενού της επιλογής Network Management και επιλέγουμε S SNMP Management και βλέπουμε τα περιεχόμενα του, με τις κατάλληλες επιλογές μπορούμε να δώσουμε ή να αλλάξουμε τιμές στα communities. 39

41 για να επιστρέψουμε στο αρχικό μενού πατάμε το πλήκτρο X όσες φορές χρειαστεί και αφού βρισκόμαστε στο αρχικό μενού και θέλουμε να βγούμε εντελώς από το Management Console πατάμε πάλι το X 40

42 ερώτηση επιβεβαίωσης, γράφουμε Y ή YES και αν πατήσουμε enter τότε επιστρέφουμε στην αρχική μας κατάσταση, στο shell ή στο command prompt. 5.3 ΕΝΕΡΓΟΠΟΙΗΣΗ SNMP ΣΕ CISCO ΔΡΟΜΟΛΟΓΗΤΗ (router) ΜΕ ΤΗΝ ΧΡΗΣΗ ΓΡΑΜΜΗΣ ΕΝΤΟΛΩΝ Όταν μπούμε στον δρομολογητή και την γραμμή εντολών του τότε αυτό που βλέπουμε στην οθόνη μας είναι router# γράφουμε τις παρακάτω εντολές για την ενεργοποίηση του SNMP router#configure terminal για να μπούμε στο configure του router, και εμφανίζεται router (config)# ένα config μέσα σε παρένθεση δίπλα στο router που μας δείχνει ότι βρισκόμαστε στο configure. Γράφουμε router (config)#snmp-server community <string_community_read> RO για να δώσουμε τιμή στο community read. router (config)#snmp-server community <string_community_write> RW για να δώσουμε τιμή στο community write. router (config)#snmp-server host Managers config snmp για να δέχεται SNMP αιτήματα από τον host με IP με community write Managers, δηλαδή του δίνω δικαιώματα να μπορεί να γράψει ή να κάνει set στα στοιχεία της MIB. Για να βγούμε από το configure γράφουμε router (config)#exit και αφού έχουμε βγει, έχουμε επιστρέψει στην αρχική θέση της γραμμής εντολών που είναι router#. [16] Στην περίπτωση που διαθέτετε συσκευές άλλων κατασκευαστών η διαδικασία είναι παρόμοια αλλά καλύτερα είναι να ελέγξετε τον συνοδευτικό οδηγό της συσκευής ή να επισκεφθείτε την ιστοσελίδα του για την διαδικασία ενεργοποίησης του πρωτοκόλλου SNMP. 41

43 Η διαδικασία αλλαγής των communities είναι η ίδια με αυτή της απόδοσης μόνο που σε αυτή την περίπτωση γράφουμε το καινούριο community name το οποίο αντικαθιστά την παλιά τιμή του. Οι παραπάνω ρυθμίσεις μπορούν να προηγηθούν της εγκατάστασης του Scotty ή να είναι ήδη έτοιμες χωρίς να χρειαστεί να προβούμε σε καμία κίνηση εμείς. Πολλές είναι οι ρυθμίσεις του SNMP που μπορούν να γίνουν. Οι παραπάνω είναι αρκετές για να λειτουργήσει η εφαρμογή μας. Θα μπορούσαμε για μεγαλύτερη ασφάλεια να δημιουργήσουμε μία access list και να την αντιστοιχίσουμε με το community Managers, έτσι ώστε μόνο οι υπολογιστές οι οποίοι είναι καταχωρημένοι στην access list αυτή να έχουν δικαίωμα να υποβάλουν SNMP ερωτήματα. Φυσικά ο υπολογιστής στον οποίο εκτελείται η εφαρμογή θα πρέπει να έχει ΙΡ διεύθυνση η οποία ανήκει στη λίστα. 42

44 ΚΕΦΑΛΑΙΟ 6 Η ΤΕΧΝΟΛΟΓΙΑ CGI Ο όρος CGI (Common Gateway Interface), αποδίδεται στα ελληνικά με τον όρο Κοινή Διασύνδεση Πύλης και είναι η μέθοδος με την οποία ένας εξυπηρετητής ιστοσελίδων (web server) μπορεί να λάβει ή να στείλει δεδομένα σε προγράμματα και μέσω αυτών σε βάσεις δεδομένων ή αρχεία και στη συνέχεια να τα παρουσιάσει μέσω του παγκόσμιου ιστού. Πιο απλά, το CGI είναι ο προγραμματισμός για το web. Ένα CGI πρόγραμμα μπορεί να γραφεί σ οποιαδήποτε γλώσσα προγραμματισμού, οι πιο δημοφιλείς και αυτές που χρησιμοποιούνται ευρέως σήμερα είναι η PHP, η Perl, και η Tcl. Αν θέλουμε να προσθέσουμε στις ιστοσελίδες μας έναν μετρητή (counter), μια φόρμα (form) απ όπου θα μπορούν οι χρήστες να στέλνουν μηνύματα ( s) ή να κάνουν μια παραγγελία και γενικά όταν θέλουμε το περιεχόμενο των ιστοσελίδων μας να είναι δυναμικό τότε θα τότε θα πρέπει να φτιάξουμε CGI προγράμματα. Το CGI μάς δίνει τη δυνατότητα να τα κάνουμε όλα αυτά και πολλά περισσότερα, όπως διάβασμα και γράψιμο δεδομένων από και προς αρχεία, αναζήτηση δεδομένων σ ένα αρχείο, δημιουργία φορμών, χρήση server-side includes (SSI), cookies κ.τ.λ. 6.1 ΕΙΣΑΓΩΓΗ ΣΤΗΝ Tcl Η Tcl είναι μια γλώσσα διερμήνευσης (interpreted language), που σημαίνει ότι δεν χρειάζεται να μεταγλωττίσουμε (compile) τα scripts μας, απλά τα γράφουμε και τα εκτελούμε εμείς ή ο web server. Ένα script αποτελείται από απλό κείμενο (text code). Ο διερμηνευτής της Tcl ο tclsh είναι αυτός που κάνει όλη την δουλειά. Μπορούμε να γράψουμε προγράμματα Tcl στον Η/Υ μας, σ έναν επεξεργαστή κειμένου ή στο Unix shell και στην συνέχεια να τα ανεβάσουμε (upload) στον server ή να γράψουμε προγράμματα στον server και να τα αποθηκεύσουμε εκεί. Αφού ανεβάσουμε το script στον εξυπηρετητή θα πρέπει να σιγουρευτούμε πως το έχουμε τοποθετήσει στον φάκελο που έχουμε ορίσει για τα cgi προγράμματα μας (/export/home/odmpats/public_html/cgi-bin) πριν εκτελέσουμε το αρχείο που φτιάξαμε θα πρέπει πρώτα να αλλάξουμε και τα δικαιώματα (permissions), έτσι ώστε να γίνει εκτελέσιμο από το σύστημα. Στο Unix χρησιμοποιούμε την εντολή chmod 43

45 755 filename. Η προηγούμενη εντολή ορίζει τα δικαιώματα του αρχείου, ώστε να μπορούμε να διαβάσουμε, να γράψουμε και να εκτελελούν το αρχείο όλοι οι άλλοι χρήστες (ανάμεσά τους και ο web server), να μπορούν να το διαβάσουν και να το εκτελέσουν. Δηλαδή τα αρχεία πρέπει να διαβάζονται και να εκτελούνται απ όλους και να γράφονται μόνο από εμάς, τον ιδιοκτήτη (owner). Πρέπει να έχουμε υπόψιν μας ότι τα scripts της Tcl, οι εντολές του Unix και τα ονόματα αρχείων διακρίνουν τα πεζά από τα κεφαλαία γράμματα (case-sensitive). Αυτό σημαίνει ότι στο Unix, το tcl δεν είναι το ίδιο με το TCL. 6.2 ΤΑ ΒΑΣΙΚΑ ΕΝΟΣ Tcl script Αν τα προγράμματα που γράφουμε θα τα τρέχουμε σε Unix τότε θα πρέπει να γράφουμε μια εντολή στην πρώτη γραμμή του κάθε script, η οποία εντολή ενημερώνει τον εξυπηρετητή ότι πρόκειται για ένα script της Tcl και του γνωστοποιεί τη διαδρομή που βρίσκετε ο διερμηνευτής που θα τρέξει το πρόγραμμα που φτιάξαμε. Η εντολή αυτή είναι η : #!/usr/local/bin/tclsh ή #!/usr/local/activetcl/bin/tclsh ενώ στα Windows η εντολή #!/tcl/bin/tclsh.exe Αν πάλι δεν είμαστε σίγουροι για την διαδρομή που βρίσκετε ο διερμηνευτής τότε γράφουμε σ ένα Unix shell την εντολή which tclsh και αυτό που θα μας επιστρέψει θα είναι η διαδρομή που βρίσκετε ο διερμηνευτής μας και είναι αυτή που πρέπει να γράψουμε στην πρώτη γραμμή του script. Αφού βρούμε τον διερμηνευτή τότε είμαστε έτοιμοι να τρέξουμε το πρώτο μας απλό script το οποίο θα μας εμφανίσει ένα μήνυμα που θα μας καλωσορίζει στην Tcl. Ανοίγουμε έναν text editor και γράφουμε: 44

46 #!/usr/local/activetcl/bin/tclsh puts Καλωσορίσατε στην Tcl Αποθηκεύουμε το αρχείο μας με το όνομα hello.tcl και στο Unix shell αφού πρώτα σιγουρευτούμε ότι είμαστε στην ίδια διαδρομή που το αποθηκεύσαμε (ls για να δούμε περιεχόμενα φακέλου, σαν την dir στα Windows) το αρχείο πληκτρολογούμε chmod 775 hello.tcl αναφέραμε παραπάνω τι κάνει η εντολή. Για να το τρέξουμε γράφουμε./hello.tcl που θα μας εμφανίσει το μήνυμα Καλωσορίσατε στην Tcl. [25],[26] 6.3 ΤΑ ΒΑΣΙΚΑ ΕΝΟΣ CGI script Είδαμε πως μπορούμε να γράψουμε ένα απλό πρόγραμμα σε Tcl, αυτό όμως που μας ενδιαφέρει είναι να γράψουμε CGI scripts, χαρακτηριστικό των CGI scripts είναι ότι δημιουργούνε ιστοσελίδες. Αν θέλουμε να γράψουμε ένα CGI πρόγραμμα που πρόκειται να δημιουργήσει μια HTML σελίδα, τότε πρέπει να συμπεριλάβουμε την επόμενη εντολή κάπου στο script, πριν εκτυπώσουμε οτιδήποτε άλλο (πριν από το πρώτο puts, προτείνουμε η εντολή να γράφετε πάντα κάτω από την δήλωση του διερμηνευτή), puts "Content-type: text/html\n\n" η συγκεκριμένη εντολή είναι ένα content header που ενημερώνει τον φυλλομετρητή για το τι είδους δεδομένα πρόκειται να λάβει. Αν δεν την συμπεριλάβουμε ή αν εκτυπώσουμε κάτι πριν εκτυπώσουμε αυτό το header, θα λάβουμε ένα μήνυμα λάθους "Internal Server Error" όταν προσπαθήσουμε να αποκτήσουμε πρόσβαση στο CGI. Αν έχουμε καταλάβει πλήρως τα παραπάνω τότε είμαστε σε θέση να γράψουμε το πρώτο μας CGI πρόγραμμα, που θα εμφανίζει μια ιστοσελίδα. #!/usr/local/bin/tclsh # puts "Content-type: text/html\n\n" puts <html><head><title> puts Hello puts </title></head> puts <body> 45

47 puts <h2> puts Το πρώτο μου CGI πρόγραμμα» puts </h2></body></html> Το γράφουμε και το αποθηκεύουμε σαν hello1.tcl στον φάκελο που μπορούμε να εκτελέσουμε τα cgi (cgi-bin), δίνουμε δικαιώματα και στην συνέχεια ανοίγουμε έναν φυλλομετρητή και γράφουμε την πλήρη διαδρομή που βρίσκεται το script μας, δηλαδή π.χ κα θα μας εμφανίσει 6.4 ΠΕΡΙΣΣΟΤΕΡΗ Tcl ΣΥΝΤΑΞΗ ΤΗΣ ΓΛΩΣΣΑΣ Tcl Για παράδειγμα αν δοθεί η εντολή : expr 2+2 η TCL δίνει το αποτέλεσμα 4. Η παραπάνω εφαρμογή είναι μια από τις πιο απλές εφαρμογές στην TCL. Η πρώτη λέξη σε μια εντολή TCL είναι το όνομά της εντολής και ακολουθούν τα διάφορα ορίσματα. Κάθε εντολή TCL επιστρέφει ένα αποτέλεσμα. Στο παραπάνω παράδειγμα την τιμή της έκφρασης. Συνήθως σε κάθε γραμμή γράφετε μια εντολή αλλά υπάρχει και η δυνατότητα σε μια γραμμή να βρίσκονται περισσότερες από μια εντολές αν 46

48 χωριστούν με " ; ". Εκτός από τις βασικές πράξεις με την expr υπάρχουν και άλλες δυνατότητες όπως φαίνεται στα παρακάτω παραδείγματα : expr 14.1*6 expr (3 > 4) (6 <= 7) Το Tk (toolkit) παρέχει ένα ιδιαίτερα ενδιαφέρον σύνολο εντολών που χρησιμοποιούνται μαζί με τα προγραμματιστικά εργαλεία της TCL. Για την δημιουργία Tk εφαρμογών χρησιμοποιείται μια εφαρμογή που ονομάζεται wish, η οποία είναι παρόμοια με το κέλυφος της TCL αλλά περιέχει επιπλέον και τις εντολές που ορίστηκαν για το Tk button.b -text "Hello, world!" -command exit pack.b Για παράδειγμα αν πληκτρολογηθεί ή παραπάνω εντολή θα δημιουργηθεί ένα κουμπί (button) το οποίο γράφει "Hello, world!" και όταν πατηθεί ενεργοποιείται η εντολή exit και κλείνει η εφαρμογή. Οι λέξεις button, pack είναι εντολές Tk. Οι εντολές TCL και Tk έχουν ακριβώς την ίδια δομή. Η εντολή pack είναι υπεύθυνη για την εμφάνιση του button με το όνομα.b σε αυτή την περίπτωση. Η σύνταξη της Tcl αποτελείται περίπου από μερικούς κανόνες που καθορίζουν πώς αναλύονται οι εντολές. Η σύνταξη της Tcl είναι η ίδια για κάθε εντολή. Ένα πρόγραμμα Tcl αποτελείται από μια ή περισσότερες εντολές. Οι εντολές χωρίζονται από τις αλλαγές γραμμής ή τα ελληνικά ερωτηματικά. Παραδείγματος χάριν ο παρακάτω κώδικας : set a 24 set b 15 47

49 είναι ένα πρόγραμμα με δύο εντολές που χωρίζονται από έναν χαρακτήρα αλλαγής γραμμής. Το ίδιο πρόγραμμα θα μπορούσε να γραφτεί σε μια γραμμή χρησιμοποιώντας για διαχωριστή το ελληνικό ερωτηματικό set a 24; set b 15 Κάθε εντολή αποτελείται από μια ή περισσότερες λέξεις, όπου η πρώτη λέξη είναι το όνομα μιας εντολής και οι πρόσθετες λέξεις είναι ορίσματα της εντολής. Οι λέξεις χωρίζονται από τα κενά διαστήματα. Κάθε μία από τις εντολές στα παραπάνω παραδείγματα έχει τρεις λέξεις. Μπορεί να υπάρχει οποιοσδήποτε αριθμός λέξεων σε μια εντολή ΜΕΤΑΒΛΗΤΕΣ Για να αποδοθεί στη μεταβλητή a η τιμή της κατά τον υπολογισμό μιας έκφρασης που την περιέχει χρησιμοποιείται μπροστά από αυτήν το σύμβολο $. Επίσης η TCL επιτρέπει την αποθήκευση τιμών σε μεταβλητές και τη χρήση τους στις διάφορες εντολές. Για παράδειγμα η εντολή: set a 44 δίνει στην μεταβλητή a την τιμή 44 και με τη βοήθεια της expr δίνοντας την εντολή: expr $a*4 παίρνουμε το αποτέλεσμα 176 H TCL επίσης επιτρέπει σε μια μεταβλητή να πάρει την τιμή μιας έκφρασης όπως φαίνεται στο παρακάτω παράδειγμα. set a 44 set b [expr $a*4] Η μεταβλητή b παίρνει την τιμή της έκφρασης expr $a*4 και ισούται με

50 Μια απλή μεταβλητή της Tcl αποτελείται από δύο μέρη: ένα όνομα και μια τιμή. Τόσο το όνομα όσο και η τιμή μπορούν να είναι αυθαίρετα string. Παραδείγματος χάριν, είναι δυνατό να ονομαστεί μια μεταβλητή xyz!#22. Στην πράξη τα ονόματα μεταβλητών αρχίζουν συνήθως με ένα γράμμα και αποτελούνται από έναν συνδυασμό γραμμάτων, ψηφίων, και χαρακτήρων. Οι μεταβλητές μπορούν να δημιουργηθούν, να διαβαστούν, και να τροποποιηθούν με καθορισμένη εντολή, η οποία παίρνει ένα ή δύο ορίσματα. Το πρώτο όρισμα είναι το όνομα της μεταβλητής και το δεύτερο, εάν υπάρχει, είναι μια νέα τιμή για τη μεταβλητή: set a {Eggs: $2.18/dozen Eggs: $2.18/dozen set a Η πρώτη εντολή δημιουργεί μια νέα μεταβλητή a και την θέτει ίση με Eggs: $2.18/dozen. Το αποτέλεσμα της εντολής είναι η τιμή της μεταβλητής. Η δεύτερη εντολή έχει ένα όρισμα a. Με αυτήν την μορφή επιστρέφει απλά την τρέχουσα τιμή της μεταβλητής. Η τρίτη εντολή αλλάζει την τιμή του a σε 44 και επιστρέφει την νέα τιμή. Οι μεταβλητές της Tcl μπορούν να χρησιμοποιηθούν για να αντιπροσωπεύσουν πολλά πράγματα, όπως ακέραιους αριθμούς, αριθμούς κινητής υποδιαστολής, ονόματα, κατάλογους, τα οποία αποθηκεύονται πάντα ως string. Αυτή η χρήση μιας ενιαίας αντιπροσώπευσης για όλες τις τιμές επιτρέπει στις διαφορετικές τιμές να χειρίζονται με τον ίδιο τρόπο και να επικοινωνούν εύκολα. Οι μεταβλητές της Tcl δημιουργούνται αυτόματα όταν ορίζονται οι τιμές τους. Δεν υπάρχουν τύποι μεταβλητών οπότε δε χρειάζεται να ορίζονται πρώτα όπως συμβαίνει σε άλλες διαδικαστικές γλώσσες ΕΚΦΡΑΣΕΙΣ Οι εκφράσεις συνδυάζουν τις τιμές με τους τελεστές για να παράγουν νέες τιμές. Παραδείγματος χάριν, η έκφραση 4+2 περιέχει δύο τελεστέους, 4 και 2, και ένα 49

51 τελεστή +. Πολλές εντολές της Tcl αναμένουν ένα ή περισσότερα από τα ορίσματά τους να είναι εκφράσεις. Η απλούστερη εντολή είναι η expr, η οποία υπολογίζει το αποτέλεσμα της πράξης που ορίζουν τα ορίσματά της. Για παράδειγμα : expr {(2+4) * 3.6 Ένα άλλο παράδειγμα είναι η εντολή if, η οποία αφού αξιολογεί το πρώτο της όρισμα χρησιμοποιεί το αποτέλεσμα για να αποφασίσει αν πρέπει να πραγματοποιηθεί το δεύτερο όρισμά της : if $x<2 then {set x ΟΙ ΕΝΤΟΛΕΣ incr ΚΑΙ append Οι εντολές incr και append παρέχουν απλούς τρόπους αλλαγής της τιμής μιας μεταβλητής. Η incr παίρνει δύο ορίσματα, τα οποία είναι το όνομα μιας μεταβλητής και ένας ακέραιος αριθμός, ο οποίος προστίθεται στην τιμή της μεταβλητής. Για παράδειγμα : set x 4 incr x 2 Ο αριθμός μπορεί να έχει είτε θετική είτε αρνητική τιμή. Μπορεί επίσης να παραλειφθεί, οπότε σε αυτή την περίπτωση θεωρείται ο αριθμός 1 : set x 4 incr x Η αρχική τιμή της μεταβλητής και ο αριθμός που προστίθεται πρέπει να είναι ακέραιοι αριθμοί σε δεκαδικό, οκταδικό ή δεκαεξαδικό σύστημα. Η εντολή append προσθέτει κάποιο κείμενο στο τέλος μιας μεταβλητής. Παίρνει δύο ορίσματα, τα οποία είναι το όνομα της μεταβλητής και το νέο κείμενο που θα προστεθεί. Επισυνάπτει το νέο κείμενο στη μεταβλητή και επιστρέφει τη νέα τιμή της μεταβλητής. Για παράδειγμα : 50

52 set x hello append x Kavala ΛΙΣΤΕΣ Οι λίστες χρησιμοποιούνται στην Tcl για να διαχειριστούν τις συλλογές των πραγμάτων, όπως όλοι οι χρήστες σε ένα group ή όλα τα αρχεία σε έναν κατάλογο ή όλες τις επιλογές για ένα widget. Μια λίστα είναι μια διατεταγμένη συλλογή στοιχείων όπου κάθε στοιχείο μπορεί να έχει τιμή ένα οποιοδήποτε string, όπως ένα αριθμό, ένα όνομα ατόμου, το όνομα ενός παραθύρου ή μια λέξη μιας εντολής Tcl. Οι λίστες αντιπροσωπεύονται ως strings με μια ιδιαίτερη δομή. Στην συνέχεια περιγράφεται η δομή των λιστών και παρουσιάζονται δώδεκα βασικές εντολές για το χειρισμό των λιστών. Οι εντολές αυτές εκτελούν διαδικασίες όπως τη δημιουργία λιστών, την εισαγωγή και την εξαγωγή στοιχείων, και την έρευνα για συγκεκριμένα στοιχεία. Μια περίληψη αυτών των εντολών φαίνεται στον παρακάτω πίνακα : Concat list?list...? Ενώνει πολλαπλές λίστες σε μία ενιαία (κάθε στοιχείο κάθε λίστας γίνεται ένα στοιχείο της τελικής λίστας ) και επιστρέφει την νέα λίστα. join list?joinstring? Συνδέει τα στοιχεία μιας λίστας με το joinstring ως διαχωριστή και επιστρέφει το αποτέλεσμα. lappend varname value?value...? Αντιστοιχίζει κάθε τιμή στην μεταβλητή varname ως ένα στοιχείο της λίστας και επιστρέφει τη νέα τιμή της μεταβλητής. Δημιουργεί τη μεταβλητή εάν δεν υπάρχει ήδη. lindex list index Επιστρέφει το στοιχείο της λίστας με δείκτη index. 51

53 linsert list index value?value...? Επιστρέφει μια νέα λίστα που διαμορφώνεται τοποθετώντας όλα τα ορίσματα τιμών ως στοιχεία λίστας πριν από το στοιχείο με τον δείκτη της λίστας. list value?value...? Επιστρέφει μια λίστα της οποίας τα στοιχεία είναι τα ορίσματα των τιμών. llength list Επιστρέφει των αριθμό των στοιχείων μιας λίστας. lrange list first last Επιστρέφει έναν κατάλογο που αποτελείται από στοιχεία από την αρχή ως το τέλος του καταλόγου. lreplace list first last?value value...? Επιστρέφει μια νέα λίστα που διαμορφώνεται με την αντικατάσταση των στοιχείων από την αρχή ως το τέλος της λίστας με κανένα ή περισσότερα νέα στοιχεία, κάθε ένα από τα οποία διαμορφώνεται από ένα όρισμα τιμής. lsearch?-exact??-glob??-regexp? list pattern Επιστρέφει τον δείκτη του πρώτου στοιχείου της λίστας ή 1 αν δεν υπάρχει. lsort?-ascii??-integer??-real??-command command? \?-increasing??-decreasing? list Επιστρέφει μια νέα λίστα που σχηματίζεται από την ταξινόμηση των στοιχείων μιας λίστας. split string?splitchars? Επιστρέφει μια λίστα που διαμορφώνεται χωρίζοντας τα string σε στιγμές του SplitChars και μετατρέπει τους χαρακτήρες ανάμεσα σε αυτές τις στιγμές σε στοιχεία λίστας. 52

54 6.4.6 Η ΒΑΣΙΚΗ ΔΟΜΗ ΤΩΝ ΚΑΤΑΛΟΓΩΝ ΚΑΙ Η ΕΝΤΟΛΗ lindex Mε την απλούστερη μορφή της μια λίστα είναι ένα string που περιέχει οποιοδήποτε αριθμό στοιχείων που χωρίζονται από κενά ή tabs. Για παράδείγμα το string Giannis Anna Maria Dimitris είναι μια λίστα με τέσσερα στοιχεία. Μπορεί να υπάρξει οποιοσδήποτε αριθμός στοιχείων σε μια λίστα, και κάθε στοιχείο μπορεί να είναι ένα αυθαίρετο string. Η εντολή lindex εξάγει ένα στοιχείο από μια λίστα : lindex { Giannis Anna Maria Dimitris 1 Η lindex παίρνει δύο ορίσματα, μια λίστα και έναν δείκτη, και επιστρέφει το επιλεγμένο στοιχείο της λίστας. O δείκτης 0 αντιστοιχεί στο πρώτο στοιχείο της λίστας, ο 1 αντιστοιχεί στο δεύτερο στοιχείο και ούτω καθεξής. Εάν ο δείκτης είναι έξω από το εύρος της λίστας επιστρέφεται ένα κενό string. Όταν μια λίστα εισάγεται σε μια εντολή Tcl η λίστα εσωκλείεται συνήθως σε άγκιστρα, όπως στο παραπάνω παράδειγμα. Τα άγκιστρα δεν είναι μέρος της λίστας, αλλά απαιτούνται στη γραμμή εντολής για να περάσουν ολόκληρη τη λίστα στην εντολή ως μεμονωμένη λέξη. Όταν οι λίστες αποθηκεύονται στις μεταβλητές ή εκτυπώνονται, δεν υπάρχουν άγκιστρα γύρω τους : set x { Giannis Anna Maria Dimitris Τα άγκιστρα και τα backslashes μέσα στα στοιχεία λιστών αντιμετωπίζονται από τις εντολές λιστών με τον ίδιο τρόπο που ο parser της εντολής Tcl τα μεταχειρίζεται στις λέξεις. Αυτό σημαίνει ότι σε άγκιστρα εσωκλείετε ένα στοιχείο λίστας εάν περιέχει διαστήματα, και χρησιμοποιούνται backslashes για ειδικούς χαρακτήρες όπως αγκύλες στα στοιχεία καταλόγων. Τα άγκιστρα χρησιμοποιούνται συχνά για να τοποθετούν λίστες μέσα σε λίστες, όπως στο ακόλουθο παράδειγμα : lindex { a b { c d e f 2 53

55 Σε αυτή την περίπτωση το στοιχείο 2 της λίστας είναι από μόνο του μια λίστα με τρία στοιχεία. Δεν υπάρχει κανένα όριο στο πόσο βαθιά οι λίστες μπορούν να τοποθετηθούν ΔΗΜΙΟΥΡΓΙΑ ΛΙΣΤΩΝ : concat, list ΚΑΙ llength Η Tcl παρέχει δύο εντολές που συνδυάζουν τα strings για να παράγουν λίστες: concat και list. Κάθε μια από αυτές τις εντολές δέχεται έναν αυθαίρετο αριθμό ορισμάτων, και κάθε μια παράγει μια λίστα σαν αποτέλεσμα. Εντούτοις, διαφέρουν στον τρόπο με τον οποίο συνδυάζουν τα ορίσματά τους. Η εντολή concat παίρνει μια ή περισσότερες λίστες ως ορίσματα και ενώνει όλα τα στοιχεία των λιστών ορισμάτων σε μια ενιαία μεγάλη λίστα: concat { a b c { d e f { g h i a b c d e f g h i Η concat αναμένει από τα ορίσματά της να έχουν τη σωστή δομή λιστών, εάν τα ορίσματα δεν είναι καλοσχηματισμένες λίστες τότε το αποτέλεσμα μπορεί να μην είναι επίσης μια καλοσχηματισμένη λίστα. Στην πραγματικότητα, αυτό που κάνει η concat είναι να συνδέει τα string ορισμάτων της σε ένα μεγάλο string τοποθετώντας κενά ανάμεσα στα ορίσματα. Το ίδιο αποτέλεσμα με την concat μπορεί να επιτευχθεί χρησιμοποιώντας διπλά εισαγωγικά: set x {a b c set y {d e set z [concat $x $y] set z "$x $y" Η εντολή λίστας list ενώνει τα ορίσματα της έτσι ώστε κάθε όρισμα να γίνεται ένα ευδιάκριτο στοιχείο της λίστας που προκύπτει : list {a b c {d e f {g h i 54

56 Σε αυτήν την περίπτωση, η λίστα που προκύπτει περιλαμβάνει μόνο τέσσερα στοιχεία. Η εντολή list παράγει πάντα έναν κατάλογο με την κατάλληλη δομή, ανεξάρτητα από τη δομή των ορισμάτων της (προσθέτει άγκιστρα ή backslashes όπως απαιτούνται). Η εντολή lindex μπορεί πάντα να χρησιμοποιηθεί για να εξαγάγει τα αρχικά στοιχεία μιας λίστας που δημιουργήθηκε με την εντολή list. Τα ορίσματα για την list δεν χρειάζεται να είναι καλοσχηματισμένες λίστες. Η εντολή llength επιστρέφει τον αριθμό στοιχείων σε μια λίστα : llength {{a b c {d e f {g h i llength a llength { Όπως παρουσιάζεται στα παραδείγματα, ένα απλό string όπως το a είναι μια λίστα με ένα στοιχείο και ένα κενό string είναι μια λίστα με μηδέν στοιχεία ΤΡΟΠΟΠΟΙΗΣΗ ΛΙΣΤΩΝ : linsert, lreplace, lrange ΚΑΙ lappend Η εντολή linsert δημιουργεί μια νέα λίστα προσθέτοντας ένα ή περισσότερα στοιχεία σε μια ήδη υπάρχουσα λίστα : set x {a b {c d e a b {c d e linsert $x 2 X Y Z a b X Y Z {c d e linsert $x 0 {X Y Z {X Y Z a b {c d e Η linsert παίρνει τρία ή περισσότερα ορίσματα. Το πρώτο είναι μια λίστα, το δεύτερο είναι ένας δείκτης σε ένα στοιχείο αυτής της λίστας και το τρίτο και τα επιπλέον ορίσματα είναι τα νέα στοιχεία που προστίθενται στη λίστα. Η επιστροφή από την εντολή linsert είναι μια λίστα που δημιουργείται τοποθετώντας τα νέα στοιχεία ακριβώς πριν από το στοιχείο που υποδεικνύεται από τον δείκτη. Αν ο 55

57 δείκτης είναι το 0 τότε τα νέα στοιχεία τοποθετούνται στην αρχή της λίστας, αν είναι το 1 τότε τα νέα στοιχεία τοποθετούνται αμέσως μετά από το πρώτο στοιχείο της αρχικής λίστας και ούτω καθεξής. Αν ο δείκτης είναι μεγαλύτερος ή ίσος με τον αριθμό των στοιχείων τότε τα νέα στοιχεία τοποθετούνται στο τέλος της αρχικής λίστας. Η εντολή lreplace διαγράφει στοιχεία από μια λίστα και προαιρετικά προσθέτει νέα στοιχεία στη θέση τους. Παίρνει τρία ή περισσότερα ορίσματα. Το πρώτο όρισμα είναι μια λίστα και τα δεύτερα και τρίτα ορίσματα δίνουν τους δείκτες των πρώτων και τελευταίων στοιχείων που διαγράφονται. Εάν μόνο τρία ορίσματα καθορίζονται τότε το αποτέλεσμα είναι μια νέα λίστα που παράγεται με τη διαγραφή της δεδομένης σειράς των στοιχείων από την αρχική λίστα: lreplace {a b {c d e 2 3 a b Αν καθορίζονται επιπλέον ορίσματα για την εντολή lreplace όπως στο παρακάτω παράδειγμα τότε αυτά τοποθετούνται στη λίστα στην θέση των στοιχείων που διαγράφηκαν : lreplace {a b {c d e 1 2 {W X Y Z a {W X Y Z e Η εντολή lrange εξάγει μια σειρά των στοιχείων από μια λίστα. Παίρνει ως ορίσματα μια λίστα και δύο δείκτες και επιστρέφει μια νέα λίστα που αποτελείται από τη σειρά των στοιχείων που βρίσκονται μεταξύ των δύο δεικτών : set x {a b {c d e a b {c d e lrange $x 1 3 b {c d e lrange $x 0 1 a b 56

58 Η εντολή lappend παρέχει έναν αποδοτικό τρόπο να προσαρτηθούν νέα στοιχεία σε μια λίστα που αποθηκεύεται σε μια μεταβλητή. Παίρνει ως ορίσματα το όνομα μιας μεταβλητής και κάθε αριθμό πρόσθετων ορισμάτων. Κάθε ένα από τα πρόσθετα ορίσματα προστίθεται στην τιμή της μεταβλητής ως ένα νέο στοιχείο λίστας και η lappend επιστρέφει τη νέα τιμή της μεταβλητής set x {a b {c d e a b {c d e lappend x XX {YY ZZ a b {c d e XX {YY ZZ set x a b {c d e XX {YY ZZ ΑΝΑΖΗΤΗΣΗ ΣΕ ΛΙΣΤΕΣ : lsearch Η εντολή lsearch ψάχνει σε μια λίστα για ένα στοιχείο με μια συγκεκριμένη τιμή. Παίρνει δύο ορίσματα, το πρώτο από τα οποία είναι μια λίστα και το δεύτερο είναι ένα δείγμα : set x { Giannis Anna Maria Dimitris lsearch $x Maria 2 lsearch $x Philipas -1 Η lsearch επιστρέφει το δείκτη του πρώτου στοιχείου στη λίστα που ταιριάζει με το δείγμα ή -1 εάν δεν υπήρξε κανένα στοιχείο που να ταιριάζει ΜΕΤΑΤΡΟΠΕΣ ΑΝΑΜΕΣΑ ΣΕ string ΚΑΙ ΣΕ ΛΙΣΤΕΣ : split ΚΑΙ join Η εντολή split χωρίζει ένα string σε συστατικά κομμάτια έτσι ώστε να μπορούν να επεξεργαστούν τα κομμάτια ανεξάρτητα. Για παράδειγμα, έστω ότι μια 57

59 μεταβλητή περιέχει ένα όνομα αρχείου UNIX με συστατικά που χωρίζονται από κάθετους. Η μετατροπή σε έναν κατάλογο με ένα στοιχείο για κάθε συστατικό γίνεται ως εξής : set x a/b/c set y /usr/include/sys/types.h split $x / a b c split $y / { usr include sys types.h Το πρώτο όρισμα στην split είναι το string που χωρίζεται και το δεύτερο όρισμα περιέχει έναν ή περισσότερους χαρακτήρες διάσπασης. Η split εντοπίζει όλες τις περιπτώσεις οποιουδήποτε από τους χαρακτήρες διάσπασης στο string. Δημιουργεί έπειτα μια λίστα της οποίας τα στοιχεία αποτελούνται από τα substrings μεταξύ των χαρακτήρων διάσπασης. Οι άκρες των strings αντιμετωπίζονται επίσης ως χωρισμένοι χαρακτήρες. Εάν υπάρχουν διαδοχικοί χαρακτήρες διάσπασης ή αν το string αρχίζει ή τελειώνει με έναν χαρακτήρα διάσπασης όπως στο δεύτερο παράδειγμα, τότε τα κενά στοιχεία παράγονται στη λίστα που προκύπτει. Οι ίδιοι χαρακτήρες διάσπασης απορρίπτονται. Αρκετοί χαρακτήρες διάσπασης μπορούν να καθοριστούν, όπως στο ακόλουθο παράδειγμα: split xabzabhi ab Εάν ένα κενό string ορίζεται για χαρακτήρας διάσπασης τότε κάθε χαρακτήρας του string μετατρέπεται σε ένα χωριστό στοιχείο λίστας: split {a b c { Η εντολή join είναι περίπου το αντίστροφο της split. Συνδέει τα στοιχεία λιστών μαζί με ένα δεδομένο string μεταξύ τους : join {{ usr include sys types.h / /usr/include/sys/types.h 58

60 set x { expr [join $x +] 22 Η join παίρνει δύο ορίσματα: μια λίστα και ένα string σύνδεσης. Εξάγει όλα τα στοιχεία από τη λίστα και τα συνδέει μαζί με το string σύνδεσης μεταξύ κάθε ζεύγους στοιχείων. Το string σύνδεσης μπορεί να περιέχει οποιοδήποτε αριθμό χαρακτήρων, συμπεριλαμβανομένου και του κενού. Στο πρώτο παράδειγμα επάνω ένα όνομα αρχείου παράγεται με την ένωση των στοιχείων λίστας με /. Στο δεύτερο παράδειγμα μια έκφραση Tcl παράγεται με την ένωση των στοιχείων λίστας με +". Μια από τις πιο κοινές χρήσεις της split και της join είναι για την διαχείριση ονομάτων αρχείων όπως παρουσιάζονται παραπάνω. Μια άλλη κοινή χρήση είναι για την διάσπαση κειμένου σε γραμμές με τη χρησιμοποίηση της αλλαγής γραμμής ως χαρακτήρα διάσπασης.[17] 6.5 HTTP (HYPER TEXT TRANSFER PROTOCOL) Το HTTP είναι το πρωτόκολλο, που δημιουργήθηκε για να εξυπηρετήσει τις ανάγκες του Παγκόσμιου Ιστού (World Wide Web, ή WWW) και βασίζεται στο μοντέλο Client-Server. Είναι γρήγορο και ελαφρύ, ειδικό για την μεταφορά hypertext και hypermedia. Τεχνικά το HTTP είναι ένα πρωτόκολλο telnet. Το port που χρησιμοποιείται συνήθως είναι το 80, αν και αυτό είναι κάτι το οποίο μπορεί να αλλαχθεί εύκολα από το configuration αρχείο του Apache ή οποιουδήποτε άλλου Web Server. Μια τυπική συναλλαγή μεταξύ Client και Server με το HTTP έχει ως εξής: Σύνδεση (Connection). Η εγκατάσταση της σύνδεσης από τον Client προς τον Server. Αίτηση (Request). Η εκπομπή από τον Client μιας αίτησης προς τον Server. Απόκριση (Response). Η εκπομπή από τον Server της απάντησης για τον Client. 59

61 Περάτωση (Close). Κλείσιμο της σύνδεσης από τα δύο μέλη. Οι δύο βασικές ενέργειες στο προηγούμενο παράδειγμα είναι η αίτηση του Client και η απόκριση του Server και είναι αυτές που ορίζουν το πρωτόκολλο. Η αίτηση περιέχει στην πρώτη γραμμή την μέθοδο (method) η οποία θα εφαρμοστεί στο αντικείμενο που ζητείται, την διεύθυνση του αντικειμένου όπως ορίζεται από το URL, και την έκδοση του πρωτοκόλλου που χρησιμοποιείται, ακολουθούμενη από πρόσθετες πληροφορίες κωδικοποιημένες όπως ορίζει το RFC822 για τις επικεφαλίδες. Ακολουθεί όταν χρειάζεται το τμήμα δεδομένων. Ένα απλό παράδειγμα μιας τέτοιας αίτησης φαίνεται παρακάτω: GET /hypertext/welcome.html HTTP/1.0 Οι σημαντικότερες μέθοδοι που μπορούν να εφαρμοστούν είναι: η GET, η οποία χρησιμοποιείται για την ανάκτηση κάποιου αντικειμένου. Αν το αντικείμενο είναι εκτελέσιμο πρόγραμμα τότε η έξοδος αυτού του προγράμματος επιστρέφεται στον Client. Χρησιμοποιείται και για αναζητήσεις. Η POST, η μέθοδος αυτή αποθηκεύει τα δεδομένα που βρίσκονται στο τμήμα σώματος (body section) της αίτησης κάτω από το παρεχόμενο URL. Και οι υπόλοιπες, που δεν χρησιμοποιούνται σχεδόν καθόλου, HEAD, CHECKIN, CHECKOUT, SHOWMETHOD, PUT, DELETE, LINK, UNLINK, TEXTSEARCH, SPACEJUMP. Ακόμα και για αυτές τις ενέργειες πάνω στα αντικείμενα που τις υποστηρίζουν χρησιμοποιούνται κυρίως οι δύο βασικές, GET και POST. Για παράδειγμα η αίτηση σε ένα αντικείμενο που υποστηρίζει TEXTSEARCH είναι: GET /indexes/botany/?annual+plants HTTP/1.0 και επιτρέπει την αναζήτηση των λέξεων annual και plants στο συγκεκριμένο αντικείμενο. Σε ένα αντικείμενο που υποστηρίζει SPACEJUMP η παρακάτω αίτηση διαλέγει ένα σημείο σε έναν χάρτη: GET /maps/uk/dorset/winspit/ HTTP/1.0 60

62 Η μέθοδος POST μπορεί να χρησιμοποιηθεί για να σχολιασθούν υπάρχοντα έγγραφα, να σταλούν άρθρα σε ένα newsgroup ή μια mailing list, ή να προστεθεί ένα αρχείο σε ένα directory. Πέρα από τα παραπάνω κατά την διάρκεια της αίτησης γίνεται και η διαπραγμάτευση (negotiation) των ικανοτήτων του Client, αν δέχεται για παράδειγμα εικόνες ή ήχο. Έτσι ο Server γνωρίζει αν υπάρχει νόημα να στείλει τέτοιου είδους αντικείμενα. Για αυτή τη διαπραγμάτευση χρησιμοποιούνται οι τιμές "Content-Type metainformation values" όπως αυτές ορίζονται στο πρότυπο MIME (RFC1521). Αν για παράδειγμα ο Client δέχεται απλό κείμενο και hypertext κείμενο θα έστελνε: ACCEPT: text/plain; text/html Η απόκριση του Server ξεκινά πάντα με μια γραμμή κατάστασης (status line) που έχει την σύνταξη: < http version> < status code> < reason line> όπου http version είναι η έκδοση του πρωτοκόλλου που χρησιμοποιεί ο Server, όπου status code είναι ένας τριψήφιος αριθμός που κωδικοποιεί το αποτέλεσμα της προσπάθειας του Server να ικανοποιήσει την αίτηση και reason line είναι μια εξήγηση του προηγούμενου κώδικα. Οι κώδικες κατάστασης που επιστρέφει ο Server είναι: SUCCESS OK 200 CREATED 201 ACCEPTED 202 PARTIAL INFORMATION 203 ERROR BAD REQUEST 400 UNAUTHORIZED 401 PAYMENT REQUIRED 402 FORBIDDEN 403 NOT FOUND 404 INTERNAL ERROR 500 NOT IMPLEMENTED 501 REDIRECTION MOVED

63 FOUND 302 METHOD 303 Μετά την γραμμή κατάστασης ακολουθούν προαιρετικά επικεφαλίδες με πληροφορίες σχετικά με τα δεδομένα που ακολουθούν στο κυρίως σώμα της απόκρισης του Server. Παραδείγματος χάριν υπάρχει η επικεφαλίδα ALLOW που ορίζει ποιες μέθοδοι είναι έγκυρες για το συγκεκριμένο αντικείμενο, η CONTENT- TYPE που ορίζει σύμφωνα με το πρότυπο MIME τον τύπο του αντικειμένου κ.α. Οι επόμενες εκδόσεις του HTTP θα ασχοληθούν κυρίως με θέματα ταχύτητας του πρωτοκόλλου και με την γνησιότητα των στοιχείων του χρήστη (user authentication) για να επιτρέψουν και άλλες εφαρμογές του WWW που είναι ευαίσθητες σε θέματα ασφάλειας, μια και η σημερινή έκδοση του HTTP δεν τις υποστηρίζει. [18] 6.6 HTML ΦΟΡΜΕΣ Οι φόρμες HTML (HTML forms) είναι ο βασικός μηχανισμός με τον οποίο οι χρήστες στέλνουν δεδομένα στον εξυπηρετητή. Μία φόρμα περιέχει διάφορα στοιχεία ελέγχου (controls) με τα οποία συλλέγει δεδομένα που εισάγει ένας χρήστης. Ένα στοιχείο συνήθως έχει ένα όνομα και μία τιμή (name και value). Το όνομα το καθορίζει ο συγγραφέας της φόρμας ενώ η τιμή δίνεται συνήθως από τον χρήστη. Το σύνολο της φόρμας συνδέεται με μία ενέργεια (action) που θα εκτελεστεί όταν ο χρήστης την υποβάλλει στον εξυπηρετητή (συνήθως πατώντας ένα κουμπί ή κάνοντας ένα κλικ). Με την υποβολή της φόρμας τα ονόματα και οι τιμές των στοιχείων αποστέλλονται στον εξυπηρετητή. Τα δεδομένα μπορούν να αποσταλούν είτε με τη μέθοδο GET, είτε με τη μέθοδο POST. Ο εξυπηρετητής παραλαμβάνει τα δεδομένα και τα στέλνει στο πρόγραμμα που έχει συνδεθεί με την ενέργεια της φόρμας. Παραδείγματα απλών φορμών με τις μεθόδους POST και GET. <html> <head> <title>μια απλή φόρμα με την μέθοδο POST</title> </head> <body> <center> 62

64 <h1>μια απλή φόρμα με την μέθοδο POST</h1> </center> <form action="something.tcl" method="post"> <center> <p>όνομα: <input type="text" name="firstname" value="οδυσσέας"/></p> <p>επώνυμο: <input type="text" name="lastname" value="μπάτσιος"/></p> <input type="submit" value="τεστ"> </center> </form> </body> </html> <html> <head> <title>μια απλή φόρμα με την μέθοδο GET</title> </head> <body> <center> <h1>μια απλή φόρμα με την μέθοδο GET</h1> </center> <form action="something.tcl" method="get"> <center> <p>όνομα: <input type="text" name="firstname" value="οδυσσέας"/></p> <p>επώνυμο: <input type="text" name="lastname" value="μπάτσιος"/></p> <input type="submit" value="τεστ"> </center> </form> </body> </html> 6.7 ΜΕΘΟΔΟΙ Όταν ένας χρήστης εισάγει τις πληροφορίες του σε μια φόρμα και πατάει το κουμπί υποβολής (submit button), υπάρχουν δύο τρόποι που οι πληροφορίες μπορούν να σταλούν από τον φυλλομετρητή στον κεντρικό υπολογιστή: μέσα στο URL, ή μέσα στο σώμα του αιτήματος HTTP. Για να επιλέξουμε ποια μέθοδο αποστολής θα χρησιμοποιήσουμε πρέπει να έχουμε στο νου μας τα εξής: Αν τα δεδομένα που θέλουμε να περάσουμε είναι λίγα και μας ενδιαφέρει η ταχύτητα, χρησιμοποιούμε την μέθοδο GET. Αν τα δεδομένα είναι πολλά ή μακροσκελή, χρησιμοποιούμε την μέθοδο POST. 63

65 Αν μας ενδιαφέρει η ασφάλεια, χρησιμοποιούμε POST. Ο λόγος είναι ότι τα δεδομένα που αποστέλλονται με τη μέθοδο GET αποτελούν εύκολο στόχο για προγράμματα που διαβάζουν δεδομένα που διακινούνται σε ένα δίκτυο (network sniffers). Επίσης, τα δεδομένα που εισάγουμε θα εμφανίζονται στον browser μας, στην μπάρα διεύθυνσης, πράγμα ριψοκίνδυνο αν βρισκόμαστε σε δημόσιο χώρο γιατί τα στοιχεία μας θα είναι ορατά από τρίτους. Με τη μέθοδο GET ο πελάτης παίρνει το URL της φόρμας, προσθέτει ένα χαρακτήρα? και το ζευγάρι ονόματος / αξίας (name / value) ενός αντικειμένου και το στέλνει στον εξυπηρετητή. Αν η φόρμα έχει παραμέτρους Name1, Name2,..., NameN στις οποίες έχουν δοθεί τιμές Value1, Value2,..., ValueN, το string των δεδομένων έχει τη μορφή Name1=Value1&Name2=Value2&NameN=ValueN. Για παράδειγμα στην παραπάνω φόρμα που χρησιμοποιεί την μέθοδο GET το URL που θα σταλεί στον εξυπηρετητή θα είναι: σιος Δυστυχώς, το μήκος ενός URL είναι περιορισμένο, έτσι αυτή η μέθοδος δουλεύει μόνο εάν υπάρχει συγκεκριμένος αριθμός παραμέτρων ή αν τα δεδομένα που περιέχονται σε μια παράμετρο δεν είναι πολλά. Επίσης τα ζεύγη των ονομάτων / αξιών που περνούν στο URL είναι ορατά στην μπάρα διεύθυνσης (address bar) του φυλλομετρητή, που δεν είναι και το καλύτερο σημείο για να φαίνεται ένας κωδικός ή και το όνομα ενός χρήστη. Η άλλη μέθοδος είναι η POST, με την οποία ο πελάτης πρώτα επικοινωνεί με τον εξυπηρετητή και στη συνέχεια του στέλνει ξεχωριστά τα δεδομένα μέσα στο σώμα του HTTP αιτήματος. Η συγκεκριμένη μέθοδος δεν επιβάλλει κανέναν περιορισμό μεγέθους ή αριθμού των παραμέτρων που στέλνει η φόρμα. Επίσης είναι ασφαλέστερη σε σχέση με την μέθοδο GET, διότι τα δεδομένα που στέλνει η φόρμα δεν φαίνονται. Περιληπτικά για την μέθοδο GET μπορούμε να πούμε: 64

66 1. Η υποβολή της φόρμας μπορεί να προστεθεί σε ένα URL, σαν έναν υπερσύνδεσμο που μπορεί να είναι ένα ερώτημα σε ένα URL. 2. Μπορούμε να έχουμε πρόσβαση στα CGI προγράμματα απευθείας με ένα ερώτημα χωρίς να χρειάζεται να χρησιμοποιούμε φόρμες. 3. Περιλαμβάνει όλα τα αντικείμενα της φόρμας στο URL, 4. Είναι ακριβώς το ίδιο όπως όταν κατεβάζουμε αρχεία από τον φυλλομετρητή. 5. Δεν χρησιμοποιούμε την GET εάν θέλουμε να καταγράψουμε το κάθε αίτημα. 6. Χρησιμοποιείται για να πάρουμε ένα αρχείο ή οποιονδήποτε άλλο πόρο. Ενώ για την POST: 1. Το μήκος του ερωτήματος μπορεί να είναι απεριόριστο (αντίθετα με την GET). 2. Χρησιμοποιείται για να στείλει μεγάλο αριθμό δεδομένων για επεξεργασία στον εξυπηρετητή. 3. Μπορούμε να στείλουμε ολόκληρα αρχεία. 4. Τα στοιχεία της φόρμας επισυνάπτονται στο τέλος του ερωτήματος, γεγονός που την κάνει πιο ασφαλή μέθοδο. 5. Δεν είναι τόσο γρήγορη και τόσο εύκολη όπως η GET, αλλά είναι πιο ευπροσάρμοστη. Αν και, η POST και η GET είναι αυτές που χρησιμοποιούνται περισσότερο όπως έχουμε ήδη αναφέρει εντούτοις υπάρχουν και άλλες μέθοδοι. Η μέθοδος HEAD είναι ίδια με την μέθοδο GET εκτός του ότι ο εξυπηρετητής δεν στέλνει μήνυμα στο σώμα της απάντησης. Οι META πληροφορίες που περιέχονται στις HTTP επικεφαλίδες σε απάντηση σ ένα αίτημα HEAD θα πρέπει να είναι ίδιες με τις πληροφορίες που στέλνονται σ ένα GET αίτημα. Αυτή η μέθοδος 65

67 μπορεί να χρησιμοποιηθεί για την λήψη META πληροφοριών για το αντικείμενο που υπονοείται από το αίτημα χωρίς τη μεταφορά του ίδιο σώματος του αντικειμένου. Χρησιμοποιείται κυρίως για τη δοκιμή της ισχύς, της δυνατότητας πρόσβασης και των πρόσφατων τροποποιήσεων των hypertext συνδέσμων. Η μέθοδος DELETE ζητά από τον εξυπηρετητή να διαγράψει τον πόρο που προσδιορίζεται από το URL αίτημα. Αυτή η μέθοδος μπορεί να παραβιαστεί με την ανθρώπινη παρέμβαση (ή άλλα μέσα). Ο πελάτης (client) δεν μπορεί να εγγυηθεί ότι η διαδικασία έχει διενεργηθεί, ακόμα κι αν ο κώδικας κατάστασης που επιστρέφεται από τον εξυπηρετητή δείχνει ότι η διαδικασία έχει ολοκληρωθεί επιτυχώς. Εντούτοις, ο εξυπηρετητής δεν πρέπει να δείξει ότι η διαδικασία ολοκληρώθηκε με επιτυχία, εκτός αν στο χρόνο που δίνεται η απάντηση σκοπεύει να διαγράψει τον πόρο ή να τον μετακινήσει προς μια απρόσιτη τοποθεσία. Η επιτυχής απάντηση είναι η 200 (OK) εάν η απάντηση περιλαμβάνει ένα αντικείμενο που περιγράφει την κατάσταση, 202 (αποδεκτή) εάν η κατάσταση δεν έχει εκδοθεί ακόμα, ή 204 (κανένα περιεχόμενο) εάν η κατάσταση έχει οριστεί αλλά η απάντηση δεν περιλαμβάνει ένα αντικείμενο. Η μέθοδος LINK εγκαθιστά μια ή περισσότερες σχέσεις συνδέσεων μεταξύ του υπάρχοντος πόρου που προσδιορίζεται από το αίτημα URL και άλλων υπαρχόντων πόρων. Η διαφορά μεταξύ της LINK και των άλλων μεθόδων που επιτρέπουν στις συνδέσεις να εγκαθίστανται μεταξύ των πόρων είναι ότι η μέθοδος LINK δεν επιτρέπει σε οποιοδήποτε οντότητα-σώμα (Entity-Body) να σταλεί στο αίτημα και δεν έχει σαν αποτέλεσμα τη δημιουργία νέων πόρων. Η μέθοδος UNLINK αφαιρεί μια ή περισσότερες σχέσεις συνδέσεων μεταξύ του υπάρχοντος πόρου που προσδιορίζεται από το αίτημα URL και άλλων υπαρχόντων πόρων. Αυτές οι σχέσεις μπορεί να είχαν εγκατασταθεί χρησιμοποιώντας τη μέθοδο LINK ή οποιαδήποτε άλλη μέθοδο που υποστηρίζει την επικεφαλίδα συνδέσεων (link header). Η αφαίρεση μιας σύνδεσης με έναν πόρο δεν σημαίνει ότι ο πόρος παύει να υπάρχει ή γίνεται απρόσιτος για τις μελλοντικές αναφορές. Η μέθοδος CONNECT χρησιμοποιείται με ένα proxy το οποίο μπορεί δυναμικά να αλλάξει και να γίνει tunnel (π.χ, SSL tunneling). 66

68 ΚΕΦΑΛΑΙΟ 7 ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ MySQL Η MySQL, είναι η δημοφιλέστερη βάση δεδομένων και ανήκει στην κατηγορία του ελεύθερου λογισμικού ανοιχτού κώδικα, η εταιρία η οποία την υλοποίησε, την υποστηρίζει και συνεχίζει να την αναπτύσσει είναι η MySQL AB.[19] 7.1 ΠΛΕΟΝΕΚΤΗΜΑΤΑ Η MySQL είναι σχεσιακή βάση δεδομένων, δηλαδή τα δεδομένα της αποθηκεύονται σε ξεχωριστούς πίνακες και όχι σε έναν μεγάλο πίνακα. Το γεγονός αυτό παρέχει ταχύτητα και ευελιξία στην διαχείριση των δεδομένων. Οι πίνακες είναι συνδεδεμένοι με τέτοιο τρόπο έτσι ώστε να είναι δυνατός ο συνδυασμός πληροφοριών από διαφορετικούς πίνακες κατά την διάρκεια ενός ερωτήματος προς την βάση. Η MySQL είναι αξιόπιστη και εύκολη στην χρήση. Είναι σχεδιασμένη να διαχειρίζεται μεγάλες βάσεις δεδομένων πολύ γρήγορα και έχει με επιτυχία χρησιμοποιηθεί σε πολύπλοκες εμπορικές εφαρμογές για πολλά χρόνια. Είναι πολύ εύκολο ένας χρήστης να βρει παραδείγματα χρήσης της MySQL στο διαδίκτυο και να μάθει γρήγορα τον τρόπο σύνταξης αλλά και τις λεπτομέρειες της. 7.2 ΣΥΝΤΑΞΗ ΕΝΤΟΛΩΝ ΣΤΗΝ Mysql Για την επικοινωνία του προγράμματος με την mysql απαιτείται η φόρτωση του αρχείου fbsql. Το αρχείο fbsql δημιουργήθηκε από τον Peter Campbell για λογαριασμό της εταιρίας FastBase Development Company Ltd. Είναι μια επέκταση (extension) της Tcl, παρέχει πρόσβαση στους εξυπηρετητές βάσεων δεδομένων που τρέχουν την Mysql χρησιμοποιώντας απλές εντολές της Tcl. Το αρχείο fbsql μπορούμε να το κατεβάσουμε δωρεάν από την ιστοσελίδα της FastBase. Φορτώνουμε το αρχείο fbsql: 67

69 load fbsql Η σύνδεση με την βάση δεδομένων γίνεται με την εντολή : sql connect mysql_server_ip username password Μετά την σύνδεση με την mysql πρέπει να γίνει η επιλογή της βάσης που θα χρησιμοποιηθεί : sql use database_name Η επιλογή του στοιχείου element από τον πίνακα table_name της βάσης δεδομένων γίνεται με την εντολή : sql select element from table_name Η διαγραφή από τον πίνακα table_name της βάσης δεδομένων, της εγγραφής, που περιέχει το δεδομένο element στην στήλη column_name με γίνεται με την εντολή : sql delete from table_name where column_name = element Η ανανέωση του πεδίου column_nameμε την τιμή value1 του πίνακα table_name της βάσης δεδομένων, γίνεται με την εντολή : sql "update table_name set column_name = 'value1' where column_name2 = 'value2' " Η επιλογή της τρέχουσας ημερομηνίας γίνεται με την εντολή : sql select curdate() Η επιλογή του συνολικού αριθμού των εγγραφών που υπάρχουν στον πίνακα table_name της βάσης δεδομένων γίνεται με την εντολή : sql "select count(*) from table_name" 68

70 ΚΕΦΑΛΑΙΟ 8 APACHE Ο εξυπηρετητής Apache HTTP είναι ένας εξυπηρετητής ιστοσελίδων (webserver) ο οποίος μπορεί να τρέξει σε Unix-like συστήματα, Microsoft Windows, Novell NetWare, Mac OS X κτλ. Ο Apache είναι γνωστός, γιατί έπαιξε σημαντικό ρόλο στην ανάπτυξη του World Wide Web. Όταν κυκλοφόρησε για πρώτη φορά, ήταν η μόνη βιώσιμη λύση λογισμικού ανοιχτού κώδικα εναλλακτική αυτής του εξυπηρετητή της Netscape Communications Corporation (γνωστού σήμερα σαν Sun Java System Web Server). Από τον Απρίλιο του 1996 ο Apache είναι ο δημοφιλέστερος HTTP εξυπηρετητής, τον Φεβρουάριο του 2007 ο Apache εξυπηρετούσε το 58% όλων των ιστοσελίδων του παγκόσμιου ιστού. Ο Apache αναπτύχθηκε από το Apache Group, πρόκειται για μια ομάδα εθελοντών από όλο τον κόσμο, οι οποίοι χρησιμοποιούν το διαδίκτυο για να επικοινωνούν μεταξύ τους. Ο Apache ανήκει στην κατηγορία του ελεύθερου λογισμικού ανοιχτού κώδικα, αυτό είχε σαν αποτέλεσμα να αναπτυχθεί και να φτάσει να αποτελεί ένα σταθερό, αξιόπιστο και ευέλικτο σε ρυθμίσεις λογισμικό. Ο Apache χρησιμοποιείται για να «σερβίρει» από τις πιο απλές στατικές σελίδες που μπορούν να διατεθούν από έναν κοινό προσωπικό υπολογιστή (PC), έως και πολύ μεγάλους και διάσημους διαδικτυακούς τόπους που εξυπηρετούν εκατομμύρια επισκέπτες με δυναμικές σελίδες. Επίσης, επειδή μπορεί να λειτουργήσει χωρίς πρόβλημα και στο πιο χαμηλών δυνατοτήτων σύγχρονο ηλεκτρονικό υπολογιστή, με μηδενικό κόστος, μπορεί να θεωρηθεί ως πρώτη επιλογή για εκπαιδευτικούς σκοπούς. Πολλές εφαρμογές βασισμένες στον παγκόσμιο ιστό σχεδιάζονται με βάση το περιβάλλον και τα χαρακτηριστικά γνωρίσματα που παρέχει ο Apache. Ο Apache αποτελεί τμήμα του δημοφιλούς LAMP web server, είναι στην ουσία ένα πακέτο εφαρμογών που παράλληλα με τον Apache περιλαμβάνει Linux, Mysql και PHP / Perl / Python. Μπορεί να χρησιμοποιηθεί και να παρέχει διάφορες άλλες υπηρεσίες με ασφάλεια και αξιοπιστία, όπως για παράδειγμα να παίξει τον ρόλο του εξυπηρετητή αρχείων, δηλαδή να μπορεί να μοιράσει τα αρχεία ενός ηλεκτρονικού υπολογιστή μέσω του διαδικτύου. Οι προγραμματιστές που αναπτύσσουν εφαρμογές βασισμένες 69

71 στην υπηρεσία του παγκόσμιου ιστού, χρησιμοποιούν τον Apache τοπικά για να μπορούν να δοκιμάζουν και να τεστάρουν τις εφαρμογές τους. Ο Apache μπορεί να ρυθμιστεί από το κύριο αρχείο ρυθμίσεων του (configuration file), αυτό το αρχείο είναι το http.conf. Μπορούμε να ενεργοποιήσουμε μια λειτουργία του αν απλά αφαιρέσουμε την # από την αρχή της γραμμής. Υποστηρίζει διάφορες γλώσσες προγραμματισμού όπως η perl, python, Tcl, και PHP. Άλλο βασικό χαρακτηριστικό του είναι το Virtual Hosting που επιτρέπει σε μια εγκατεστημένη έκδοση του Apache να εξυπηρετεί ταυτόχρονα πολλούς διαφορετικούς πραγματικούς ιστοχώρους, για παράδειγμα αν έχουμε ένα μηχάνημα με εγκατεστημένο τον Apache τότε αυτό ταυτόχρονα αφού προβούμε στις κατάλληλες ρυθμίσεις θα μπορούσε να εξυπηρετήσει το το και ούτω καθεξής.[20] 8.1 ΦΙΛΟΣΟΦΙΑ ΛΕΙΤΟΥΡΓΙΑΣ Η βασική λειτουργία ενός εξυπηρετητή ιστοσελίδων, είναι στην ουσία, η μετάφραση του URL, που πληκτρολογεί ο χρήστης σ έναν φυλλομετρητή (web browser), σε αντίστοιχο πόρο, ο οποίος αποστέλλεται μέσω διαδικτύου πίσω στον χρήστη που τον ζήτησε. Ο αιτούμενος, μέσω του URL, πόρος τυπικά εμπίπτει στις ακόλουθες δύο περιπτώσεις: Κάποιο αρχείο, οπότε ο εξυπηρετητής ψάχνει το συγκεκριμένο αρχείο και μόλις βρεθεί αποστέλλεται στο πρόγραμμα περιήγησης του χρήστη που το ζήτησε (στατικές σελίδες). Κάποιο πρόγραμμα. Στην περίπτωση αυτή, το πρόγραμμα εκτελείται και επιστρέφονται τα αποτελέσματα στο πρόγραμμα περιήγησης του χρήστη που το ζήτησε (δυναμικές σελίδες). 70

72 Τις παραπάνω δύο βασικές υπηρεσίες, εξυπηρετεί ο Apache. Το εκτελέσιμο πρόγραμμα του Apache σε περιβάλλον Linux είναι το httpd και τυπικά εκτελείται ως δαίμονας. Σε κατάσταση αναμονής, ο Apache το μόνο που κάνει είναι να παρακολουθεί τη διεύθυνση IP και θύρα που προσδιορίζεται στο αρχείο ρυθμίσεων httpd.conf. Όταν εμφανιστεί κάποια αίτηση, ο Apache αναλύει τις επικεφαλίδες (headers), εφαρμόζει τους κανόνες που υπάρχουν και έχουν οριστεί στο httpd.conf και αναλόγως προβαίνει στην κατάλληλη ενέργεια. Για τη λειτουργία του ο Apache, χρησιμοποιεί μια εξ ορισμού δομή αρχείων, η οποία κατά βάση, περιλαμβάνει τους ακόλουθους καταλόγους (directories): Conf. Περιέχει αρχεία ρυθμίσεων, εκ των οποίων το σημαντικότερο είναι το httpd.conf. htdocs. Περιέχει τα αρχεία τύπου HTML, τα οποία «σερβίρονται» στους χρήστες του διαδικτυακού τόπου. Ο κατάλογος αυτός και οι υποκατάλογοί του εκτίθενται σε όλο το κοινό του Διαδικτύου και κατά συνέπεια δεν θα πρέπει να περιέχουν τίποτε άλλο εκτός από δεδομένα προς δημοσίευση. Log. Περιέχει τα αρχεία καταγραφής (access.log και error.log). cgi-bin. Περιέχει προγράμματα για χρήση από το κοινό και επομένως δεν πρέπει να βρίσκεται μέσα ή κάτω από τον κατάλογο htdocs για να μην είναι ορατά από όλους. 8.2 ΠΡΟΓΡΑΜΜΑΤΑ CGI Τα CGI είναι προγράμματα, τα οποία εκτελούνται από τον εξυπηρετητή ιστοσελίδων και προσφέρουν στους πελάτες (clients) σελίδες με δυναμικό περιεχόμενο. Όταν χρησιμοποιούμε προγράμματα CGI τότε θα πρέπει να προσέξουμε και να τα «ασφαλίσουμε» όσο γίνεται καλύτερα. Αν δεν χρησιμοποιούνται τέτοιου είδους προγράμματα συνίσταται να απενεργοποιηθεί η αντίστοιχη δυνατότητα. Η εκτέλεση CGI προγραμμάτων απ οποιοδήποτε κατάλογο αποτελεί πρόβλημα ασφάλειας επειδή αν κατά λάθος ένα αρχείο με επέκταση.html αποθηκευτεί με επέκταση.cgi, ο εξυπηρετητής ιστοσελίδων θα το εκτελέσει. 71

73 Συνίσταται η συγκέντρωση όλων των προγραμμάτων CGI σ έναν κατάλογο, συνήθως στον /cgi-bin/ και πιο συγκεκριμένα /public_html/cgi-bin/. Επιπλέον δεν πρέπει να παραμένουν προηγούμενες εκδόσεις προγραμμάτων CGI ακόμα και με διαφορετική επέκταση όπως.bak,.old, cgi~. Αυτά τα αρχεία, παρόλο που άλλαξε η επέκταση τους, εξακολουθούν να μπορούν να εκτελεστούν. Προς αποφυγή του προβλήματος μπορεί να χρησιμοποιηθεί ο ακόλουθος περιορισμός στο αρχείο ρυθμίσεων httpd.conf: <Files ~ \.(bak old cgi~) $ > Order allow, deny Deny from all </Files> Όταν υπάρχουν προγράμματα CGI θα πρέπει να προβλέπονται σε αυτά αυστηροί έλεγχοι για κάθε είσοδο στοιχείων από το χρήστη ώστε να αποφεύγονται επιθέσεις τύπου buffer overflow. Επίσης θα πρέπει να ελέγχονται οι μετα-χαρακτήρες (meta characters), όπως ; [ ] { &, οι οποίοι εκτελούν κάποιες ειδικές εργασίες στα unix based λειτουργικά συστήματα. Για παράδειγμα, αν σε ένα πρόγραμμα CGI εκτελείται η εντολή: System ( wc -c $file ) ; και εισάγει ο χρήστης την τιμή a.dat; rm -rf / στην μεταβλητή $file, όταν θα του ζητηθεί από το πρόγραμμα, τότε θα εκτελεστεί η εντολή: wc -c a.dat; rm -rf / η οποία μπορεί να προκαλέσει μεγάλη ζημιά στον εξυπηρετητή. 72

74 8.3 SERVER-SIDE INCLUDES Οι Server-Side Includes (SSI) είναι εντολές που ενσωματώνονται σε ένα έγγραφο HTML και επεξεργάζονται από τον εξυπηρετητή πριν το έγγραφο αποσταλεί στον πελάτη που το ζήτησε. Χρησιμοποιούνται για να συμπεριλάβουν ένα άλλο έγγραφο στο αρχικό ή να εκτελέσουν ένα πρόγραμμα. Για παράδειγμα, σε ένα αρχείο που περιέχει κώδικα HTML η εντολή: <!--#exec cmd= date +%x -- > θα εμφανίσει: 11/06/2005 Χωρίς τα κατάλληλα μέτρα ασφαλείας, τα SSI μπορούν να χρησιμοποιηθούν ώστε να κληθούν από ένα αρχείο HTML θέτοντας κατ αυτόν τον τρόπο σε κίνδυνο τον εξυπηρετητή. Εάν οι εντολές SSI δεν χρησιμοποιούνται τότε συνιστάται να απενεργοποιηθούν. 73

75 ΚΕΦΑΛΑΙΟ 9 JAVASCRIPT Η JavaScript είναι μια νέα γλώσσα προγραμματισμού η οποία έχει σαν σκοπό την παραγωγή δυναμικού περιεχομένου σε ιστοσελίδες, αναπτύσσεται από την Netscape Communications Corporation. Με την JavaScript μπορείς εύκολα να αναπτύξεις μια interactive σελίδα (μια σελίδα δηλαδή που αλληλεπιδρά στον εαυτό της). Έχει τις ρίζες της στην ECMAscript της οποίας ουσιαστικά αποτελεί επέκταση με μερικές πρόσθετες δυνατότητες. Όπως και η PHP, η Javascript έχει βασιστεί όσον αφορά τον τρόπο σύνταξης του κώδικά της στη γλώσσα προγραμματισμού C, με την οποία παρουσιάζει πολλές ομοιότητες. Όμως ενώ η PHP είναι μια server side γλώσσα προγραμματισμού, η Javascript είναι client side. Αυτό σημαίνει ότι η επεξεργασία του κώδικα Javascript και η παραγωγή του τελικού περιεχομένου HTML δεν πραγματοποιείται στον server, αλλά στο πρόγραμμα περιήγησης (browser) των επισκεπτών. Αυτή η διαφορά έχει πλεονεκτήματα και μειονεκτήματα για καθεμιά από τις δύο γλώσσες. Συγκεκριμένα, η Javascript δεν έχει καμία απαίτηση από πλευράς δυνατοτήτων του server για να εκτελεστεί (επεξεργαστική ισχύ, συμβατό λογισμικό διακομιστή), αλλά βασίζεται στις δυνατότητες του browser των επισκεπτών. Επίσης, μπορεί να ενσωματωθεί σε στατικές σελίδες HTML. Παρόλα αυτά, οι δυνατότητές της είναι σημαντικά μικρότερες από αυτές της PHP, Perl, Tcl και δεν παρέχει συνδεσιμότητα με βάσεις δεδομένων και άλλα προγράμματα. Η Javascript δεν θα πρέπει να συγχέεται με τη Java, που είναι διαφορετική γλώσσα προγραμματισμού και με διαφορετικές εφαρμογές. Ο κώδικας Javascript μιας σελίδας περικλείεται από τα HTML tags <script language= JavaScript > και </script>. Την απεικόνιση κειμένου αναλαμβάνει η εντολή document.write(). Για παράδειγμα, ο ακόλουθος κώδικας Javascript: <script language= Javascript > document.write('hello world!'); </script> 74

76 Θα εμφανίσει στο πρόγραμμα περιήγησης το κείμενο: Hello world! Η ετικέτα LANGUAGE είναι προαιρετική αλλά ενδείκνυται η χρήση της. Επίσης ο χρήστης μπορεί να καθορίσει το κομμάτι του κώδικα που θα εκτελεστεί μόνο από φυλλομετρητές που υποστηρίζουν μια συγκεκριμένη έκδοση της JavaScript. Για παράδειγμα: <script language="javascript1.2">. Μια άλλη παράμετρος της ετικέτας SCRIPT είναι η SRC, η οποία μπορεί να χρησιμοποιηθεί για να συμπεριλάβει ένα εξωτερικό αρχείο που περιέχει εντολές JavaScript κώδικα εκτός από κώδικα που είναι ενσωματωμένος στο κείμενο HTML: <script language="javascript" src="global.js"> </script> Το εξωτερικό αρχείο είναι ένα απλό αρχείο κειμένου το οποίο περιέχει κώδικα σε JavaScript, και του οποίου το όνομα έχει κατάληξη ".js" Αν ο κώδικας Javascript περιέχει περισσότερες από μία εντολές, αυτές θα πρέπει να διαχωριστούν μεταξύ τους με το χαρακτήρα του ελληνικού ερωτηματικού ';'. Η χρήση του χαρακτήρα αυτού για την τελευταία εντολή δεν είναι απαραίτητη. Η διαχώριση των εντολών στους νεότερους φυλλομετρητές (browsers) δεν είναι απαραίτητη. Άλλες βασικές εντολές είναι το window.alert("document") που εμφανίζει ένα παράθυρο με ένα μήνυμα στο χρήστη. To window.prompt("document") που ζητάει από το χρήστη να συμπληρώσει ένα κομμάτι μιας αίτησης απευθείας και τα δεδομένα να χρησιμοποιηθούν σαν κείμενo χρησιμοποιώντας το σαν μεταβλητή : <script language= Javascript > var FIRSTvariable = window.prompt("please FILL IN YOUR NAME") document.write("your name is " + FIRSTvariable + ".") </script> 75

77 9.1 ΟΡΙΣΜΟΣ ΣΥΝΑΡΤΗΣΕΩΝ Ο ορισμός συνάρτησης είναι μια πρόταση που περιγράφει τη συνάρτηση το όνομα, τα ορίσματά που δέχεται προς είσοδο και τις εντολές που εκτελεί. Το function είναι δεσμευμένη λέξη και σημαίνει ότι πρόκειται για συνάρτηση, όπου funcname είναι το όνομα της συνάρτησης, ενώ arguments είναι τα ορίσματα που παίρνει η συνάρτηση για να εκτελέσει μια διαδικασία και να μας επιστρέψει ένα αποτέλεσμα, όπου statements είναι το σώμα της συνάρτησης. function funcname(argument1,argument2,etc) { statements; Τα ορίσματα μιας συνάρτησης είναι προαιρετικά και στην περίπτωση αυτή χρησιμοποιούνται μόνο οι παρενθέσεις χωρίς να περιλαμβάνουν μέσα τίποτε, π.χ. funcname(). Αν καθοριστούν ορίσματα, τότε αυτά θα είναι μεταβλητές μέσα στο σώμα της συνάρτησης oι αρχικές τιμές των οποίων θα είναι οι τιμές που περάστηκαν κατά τη κλήση της συνάρτησης. Η καλύτερη πρακτική ορισμού μιας συνάρτησης είναι ανάμεσα στην ετικέτα HEAD του κειμένου. Και ο λόγος είναι το ότι η ετικέτα HEAD φορτώνεται πρώτα, πριν από όλα τα υπόλοιπα στοιχεία της σελίδα και αυτό εγγυάται ότι η συνάρτηση θα φορτωθεί πριν ο χρήστης προλάβει να κάνει κάτι. Εναλλακτικά κάποιοι προγραμματιστές τοποθετούν όλες τις συναρτήσεις τους σε ένα ξεχωριστό αρχείο και μετά την περιλαμβάνουν μέσα στη σελίδα χρησιμοποιώντας την παράμετρο SRC της ετικέτας SCRIPT. Το βασικό είναι να έχει οριστεί η συνάρτηση πριν εκτελεστεί κάποιο κομμάτι κώδικά της. Για παράδειγμα, ορισμός μιας συνάρτησης που επιστρέφει το όρισμά της σε μια ιστοσελίδα αλλά αφού πρώτα τα κάνει bold και blinking: function boldblink(message){ document.write("<blink><strong>"+message+"</blink></strong>"); 76

78 9.2 ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Η κλήση μιας συνάρτησης γίνεται με την παράθεση του ονόματός της ακολουθούμενο από τη λίστα των ορισμάτων της μέσα σε παρενθέσεις: clearpage(); boldblink("τεχνολογίες Διαδικτύου!"); Οι συναρτήσεις οι οποίες επιστρέφουν αποτέλεσμα πρέπει να καλεστούν μέσα από κάποια έκφραση: total=raisep(2,8); if (raisep(tax,2)<100)... γεγονότος. Πολύ συχνά οι συναρτήσεις της JavaScript καλούνται από κάποιον handler 9.3 ΑΝΤΙΚΕΙΜΕΝΑ Ένα αντικείμενο είναι ένα σύνολο από δεδομένα, μια συλλογή από ιδιότητες και μεθόδους. Για παράδειγμα έστω ότι υπάρχει ένα αντικείμενο που ονομάζεται car. Το αντικείμενο αυτό έστω ότι έχει διάφορες ιδιότητες όπως: make, model, year, και color. Επίσης μπορούμε να πούμε ότι έχει τις ακόλουθες μεθόδους: go(), stop(), και reverse(). Παρόλο που το αντικείμενο car είναι φανταστικό μπορούμε να δούμε ότι έχει πολλά κοινά με την πραγματική θεώρηση των αντικειμένων του πραγματικού κόσμου. Με τη JavaScript μπορούμε να δημιουργήσουμε αντικείμενα που μας βολεύουν για την αποθήκευση των δεδομένων. Επίσης κάθε χρήστης χρησιμοποιεί πολλά προϋπάρχοντα αντικείμενα ("built-in" objects) τα οποία επιτρέπουν στο χρήστη να προσπελαύνει και να διαχειρίζεται μια σελίδα του παγκόσμιου ιστού καθώς και το φυλλομετρητή που την εμφανίζει και πως την εμφανίζει. Αυτό το 77

79 σύνολο των προϋπαρχόντων αντικειμένων είναι γνωστό με το όνομα "Document Object Model" ή σε συντομία DOM. 9.4 ΙΔΙΟΤΗΤΕΣ Η πρόσβαση στην ιδιότητα ενός αντικειμένου γίνεται με απλή παράθεση του ονόματός της πάνω στο αντικείμενο: objectname.propertyname. Το όνομα του αντικειμένου (object name) και της ιδιότητας (property name) είναι case sensitive. Επειδή η ιδιότητα είναι ουσιαστικά μια μεταβλητή μπορούμε να δημιουργήσουμε μια νέα ιδιότητα αναθέτοντά της μια τιμή. Ας θεωρήσουμε ότι το αντικείμενο carobj υπάρχει ήδη, τότε μπορούμε να του δώσουμε ιδιότητες ως εξής: carobj.make="toyota"; carobj.model="corolla"; carobj.year=1999; document.write(carobj.year); 9.5 ΜΕΘΟΔΟΙ Σε αντίθεση με την περίπτωση ενός κλασικού πίνακα δεδομένων ένα αντικείμενο μπορεί να περιλαμβάνει συναρτήσεις οι οποίες είναι γνωστές ως μέθοδοι και αποτελούν μέρος του αντικειμένου. Η κλήση μιας μεθόδου γίνεται με τη χρήση της ακόλουθης σύνταξης: objectname.methodname(). Στην περίπτωση που πρέπει να περαστούν κάποια ορίσματα τότε αυτά παρατίθενται στις παρενθέσεις όπως ακριβώς και στη κλήση συναρτήσεων. Για παράδειγμα το αντικείμενο παραθύρου (window) έχει την μέθοδο close(), η οποία κλείνει το καθοριζόμενο παράθυρο από το φυλλομετρητή:[21] window.close(); 78

80 ΚΕΦΑΛΑΙΟ 10 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ 10.1 ΕΙΣΑΓΩΓΗ Στα πλαίσια της συγκεκριμένης πτυχιακής εργασίας σχεδιάστηκε και υλοποιήθηκε ένα αυτοματοποιημένο δυναμικό σύστημα διαχείρισης δικτύου, το οποίο πρόκειται να εγκατασταθεί και να χρησιμοποιηθεί στο Κέντρο Διαχείρισης Δικτύου του Τεχνολογικού Εκπαιδευτικού Ιδρύματος Καβάλας. Το συγκεκριμένο σύστημα απευθύνετε σε διαχειριστές δικτύων και όχι σ απλούς χρήστες, οι λόγοι είναι προφανείς, απαιτούνται κάποιες εξειδικευμένες γνώσεις και τεχνογνωσία που κατέχουν οι διαχειριστές δικτύων. Το σύστημα παρέχει στον διαχειριστή ενός δικτύου υπολογιστών, εργαλεία τόσο παρακολούθησης (Monitoring) όσο ελέγχου και διαχείρισης (Management) των αντικειμένων ενός δικτύου. Επίσης περιλαμβάνει διαδραστικό (interactive) γραφικό περιβάλλον χρήστη (Graphical User Interface, (GUI)). Το περιβάλλον επίσης υποστηρίζει την αλληλεπίδραση με το χρήστη κατά την διάρκεια των διαδικασιών διαχείρισης του δικτύου. Το περιβάλλον χρήσης είναι βασισμένο στην υπηρεσία του παγκόσμιου ιστού γεγονός που το κάνει ευέλικτο, προσβάσιμο από οπουδήποτε και δυναμικό. Μπορεί να χρησιμοποιηθεί ανεξάρτητα από την πλατφόρμα λογισμικού και έχει αναπτυχθεί έτσι ώστε να δουλεύει ανεξάρτητα από το πρόγραμμα περιήγησης (web-browser) που χρησιμοποιεί ο χρήστης. Για την υλοποίηση του προγράμματος χρησιμοποιήθηκαν η γλώσσα προγραμματισμού Tcl, Javascript, μερικές εντολές του Unix shell, βάση δεδομένων Mysql, περιγραφική γλώσσα HTML καθώς επίσης κάποια εργαλεία όπως ο Scotty και η fbsql. Για τις ανάγκες της εφαρμογής δημιουργήσαμε μια βάση δεδομένων, την imd_nms. Στην βάση δεδομένων αποθηκεύονται πληροφορίες που αφορούν τους κόμβους ενός δικτύου, τις θύρες των κόμβων, τους χρήστες που βρίσκονται πάνω στις θύρες, καταγραφή όλων των χρηστών, καταγραφή μη εξουσιοδοτημένων χρηστών και καταγραφή IP διευθύνσεων του δικτύου. Επιπλέον αξίζει να σημειωθεί ότι είναι δυνατή η ανάκτηση και η τροποποίηση των πληροφοριών αυτών από τους χρήστες της εφαρμογής. Τέλος, η εφαρμογή επικοινωνεί με το δίκτυο υπολογιστών για την διαχείριση των πόρων των αντικειμένων που το αποτελούν, ενώ αντλεί πληροφορίες από τα 79

81 αντικείμενα του δικτύου και από το δίκτυο για την επεξεργασία των πληροφοριών αυτών και εμφάνιση στον χρήστη σε πραγματικό χρόνο της κατάστασης του Η ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ imd_nms Field Field Id IP MAC Switch_Name Port_Name Start comps Type Id int(10)unsigned Pc_Name char(30) IP char(15) MAC char(14) Id_node int(10) Port_Name char(35) Phone_Number char(10) Location char(35) black_list int(1) default 0 Field Id IP MAC Switch_Name Port_Name Finish comps_log Type int(10)unsigned char(15) char(14) char(35) char(20) Timestamp(14) not null default "current_timestamp()" comps_log1 Type int(10)unsigned char(15) char(14) char(35) char(20) char(13) NOT NULL DEFAULT "0000:00:00:00" Field nodes Id Node_Name IP Community_read Community_write ports Field Id_node Port_Name Port_Description Field Field Id IP MAC Id Port_Name Id_node IP MAC Time Type int(10)unsigned char(35) char(15) char(15) char(15) trunk Type int(10) char(35) char(35) Type int(10)unsigned char(15) char(14) black_list Type int(10)unsigned char(20) int(10) char(15) char(14) Timestamp(14) not null default "current_timestamp()" 80

82 10.3 ΓΕΝΙΚΗ ΦΙΛΟΣΟΦΙΑ ΕΦΑΡΜΟΓΗΣ Διαχειριστής Εφαρμογή Βάση Δεδομένων Χρήστες της εφαρμογής Ο διαχειριστής εισάγει τους χρήστες στην βάση δεδομένων, στην συνέχεια οι χρήστες μπορούν να εισέλθουν στην εφαρμογή. Η εφαρμογή επικοινωνεί με το δίκτυο (λαμβάνει και στέλνει, όπως προκύπτει και από το σχεδιάγραμμα) και αποθηκεύει στην βάση δεδομένων κάποια στοιχεία για να τα επεξεργαστεί ή να τα εμφανίσει αργότερα στους χρήστες, κάποια άλλα στοιχεία τα εμφανίζει κατευθείαν. Αυτό που πρέπει να τονίσουμε είναι πως καθώς πλοηγούμαστε από την μια σελίδα στην άλλη ταυτόχρονα με την αλλαγή της σελίδας, μεταφέρονται και κάποια δεδομένα από σελίδα σε σελίδα. Αυτό το καταφέραμε χρησιμοποιώντας έναν συνδυασμό φορμών με Javascript. Τις πληροφορίες τις κρύβουμε με το html tag <input type= hidden value=$value name=test>, όπου $value είναι η πληροφορία που 81

83 θέλουμε να περάσουμε στην επόμενη σελίδα και όπου test το όνομα της μεταβλητής που θα περιέχει την πληροφορία αυτή. Για την καλύτερη, αποτελεσματικότερη και ευκολότερη χρήση της εφαρμογής, στην ανάπτυξη του περιβάλλοντος χρήσης χρησιμοποιήθηκαν εικόνες οι οποίες παίζουν τον ρόλο κουμπιού (submit button), αυτό το καταφέραμε με την βοήθεια της Javascript, όπου σαν σύνδεσμο δίνουμε την εντολή: javascript:document.back.submit() όπου back είναι το όνομα της φόρμας. Η άλλη τεχνική που χρησιμοποιούμε είναι η: onclick="javascript:aform5.submit()" που στην ουσία είναι ακριβώς το ίδιο με το προηγούμενο με την μόνη διαφορά ότι δεν είναι ορατό ότι πρόκειται για σύνδεσμο, γι αυτόν τον λόγο χρησιμοποιήσαμε και την: onmouseover="this.style.cursor='pointer'" δηλαδή ο κέρσορας μας από βελάκι πηγαίνοντας πάνω στο αντικείμενο που έχει αυτές τις ιδιότητες γίνεται ένα χεράκι που σημαίνει ότι πρόκειται για σύνδεσμο, έτσι ώστε να γίνεται αντιληπτό από τον χρήστη. Επίσης, χρησιμοποιούμε έναν συνδυασμό εντολών: onmouseover="this.style.textdecoration='underline'" style="text-decoration:none" onmouseout="this.style.textdecoration='none'" για να υπογραμμίσουμε το κείμενο που υπάρχει όταν πηγαίνουμε τον κέρσορα πάνω σ αυτό. 82

84 Ακόμα, θα πρέπει να προσέξουμε πως για κάθε σύνδεσμο που υπάρχει, όταν πηγαίνουμε τον κέρσορά πάνω του εμφανίζεται ένα μήνυμα το οποίο μας εξηγεί τι ακριβώς κάνει. Το συγκεκριμένο είναι μια ιδιότητα της HTML, η title, η οποία χρησιμοποιείται κυρίως για τις συντμήσεις (π.χ. Τ.Ε.Ι., Α.Ε.Ι). Σ αυτό το σημείο θα πρέπει να τονίσουμε πως οι συγκεκριμένες ιδιότητες είναι συμβατές με όλους τους γνωστούς φυλλομετρητές και δεν παρουσιάζεται καμία ασυμβατότητα με αποτέλεσμα να μπορούν οι χρήστες να «τρέχουν» την εφαρμογή το ίδιο αποτελεσματικά ανεξάρτητα από το λειτουργικό σύστημα και τον φυλλομετρητή που διαθέτουν ΕΙΣΑΓΩΓΗ ΧΡΗΣΤΗ ΣΤΗΝ ΕΦΑΡΜΟΓΗ Για μπορέσει κάποιος να έχει πρόσβαση στην εφαρμογή, θα πρέπει πρώτα να αποκτήσει ένα όνομα χρήστη (username) και έναν κωδικό χρήστη (password), τα στοιχεία αυτά αποθηκεύονται σε μια βάση δεδομένων, την mysql και η ταυτοποίηση του χρήστη γίνεται με βάση τα στοιχεία που υπάρχουν στην βάση αυτή. Την εφαρμογή μπορούν να την χρησιμοποιούν ταυτόχρονα πολλοί χρήστες, αρκεί να έχουν πρόσβαση και τα κατάλληλα δικαιώματα. Δεν αρκεί όμως μόνο το όνομα χρήστη και ο κωδικός του, θα πρέπει από τον διαχειριστή της βάσης δεδομένων να του έχουν αποδοθεί όλα τα read, write, delete κτλ. δικαιώματα στην βάση imd_nms και τους πίνακες της έτσι ώστε να μπορεί να εκμεταλλευτεί όλες τις δυνατότητες που του προσφέρει η εφαρμογή. Σε περίπτωση που δεν αποδοθούν σε κάποιον όλα τα δικαιώματα στην βάση imd_nms και τους πίνακες της τότε οι δυνατότητες του χρήστη ναι μεν περιορίζονται, αλλά μετατρέπεται η εφαρμογή σε ένα εργαλείο εκπαιδευτικού σκοπού που μπορεί να βοηθήσει στην εκπαιδευτική διαδικασία. Αυτό είναι όμως κάτι το οποίο πριν γίνει χρειάζεται προσεκτική ανάλυση και μελέτη από πλευράς διαχειριστή της βάσης για να μην μείνει καμία «τρύπα» ανοιχτή και προκαλέσει πρόβλημα είτε στο δίκτυο είτε 83

85 σε αντικείμενα του δικτύου ακόμα και σοβαρά προβλήματα λειτουργίας της εφαρμογής. Για να εισέλθει ο χρήστης στην εφαρμογή, θα πρέπει να δώσει όνομα και κωδικό χρήστη, η διαδικασία πιστοποίησης των στοιχείων του χρήστη που ακολουθεί η εφαρμογή έχει ως εξής: προσπαθεί μ αυτά τα στοιχεία να συνδεθεί με την βάση δεδομένων. Δηλαδή, χρησιμοποιεί την εντολή «sql connect localhost $username $password» ή πιο σωστά την «catch { sql connect localhost $username $password msg», όπου $username και $password είναι το όνομα και ο κωδικός χρήστη αντίστοιχα, που εισάγει ο χρήστης. Αν τα στοιχεία είναι σωστά και πραγματοποιηθεί η σύνδεση τότε το περιεχόμενο της μεταβλητή msg, δεν θα περιέχει τίποτα, θα είναι κενή ( ) και ο χρήστης θα έχει εισέλθει στην εφαρμογή. Αλλιώς, αν δηλαδή το όνομα ή / και ο κωδικός χρήστη είναι λάθος ή υπάρχει άλλο πρόβλημα (ο mysql server να είναι κάτω) τότε το περιεχόμενο της μεταβλητής θα είναι διαφορετικό από το κενό ( ) και θα εμφανίζεται η ίδια σελίδα η οποία θα λέει πως ο κωδικός ή το όνομα χρήστη είναι λάθος και θα προτρέπει τον χρήστη να πληκτρολογήσει νέα στοιχεία. Η συγκεκριμένη διαδικασία θα επαναλαμβάνεται μέχρι να δώσει ο χρήστης έγκυρα στοιχεία ΠΡΟΣΘΗΚΗ ΝΕΟΥ ΚΟΜΒΟΥ Στην διαδικασία προσθήκης νέου κόμβου η εφαρμογή συνδέεται με την συσκευή με τα στοιχεία που έδωσε ο χρήστης για να στείλει SNMP μηνύματα, αν η σύνδεση πραγματοποιηθεί τότε προχωράμε στον έλεγχο ορθότητας των δεδομένων που έδωσε ο χρήστης. Για να καταχωρήσουμε έναν κόμβο ο χρήστης πρέπει να δώσει το όνομα του κόμβου, την IP του κόμβου, η οποία θα πρέπει να αντιστοιχεί στο όνομα του κόμβου (διαπιστώνεται με την nslookup). Το community read και write θα πρέπει να είναι τα πραγματικά γιατί δεν θα μπορούμε να συνδεθούμε με την συσκευή. Με την εντολή «exec nslookup όνομα_κόμβου», η οποία εντολή υπάρχει τόσο στα Unix like όσο και στα Windows λειτουργικά συστήματα, παίρνουμε την IP του ονόματος που δώσαμε (domain name), ελέγχουμε αν η IP διεύθυνση που πληκτρολόγησε ο χρήστης είναι ίδια με αυτή που μας επιστρέφει η εντολή, αν συμβαίνει αυτό τότε προχωράμε και ελέγχουμε τα υπόλοιπα στοιχεία. Η παραπάνω 84

86 εντολή μπορεί επίσης να εκτελέσει ακριβώς αντίθετα, δηλαδή αντί για όνομα να δώσουμε IP διεύθυνση και να μας επιστρέψει όνομα (domain name). Για να δούμε ότι η σύνδεση SNMP με την συσκευή είναι επιτυχείς θα ζητήσουμε πληροφορίες από την συσκευή, έτσι θα μπορέσουμε να καταλάβουμε αν το Community Read είναι σωστό, επομένως ζητάμε από την συσκευή να μας δώσει το όνομα της, χρησιμοποιούμε την εντολή $s get ή $s get sysname.0. Αν μας επιστραφεί το όνομα της συσκευής το μόνο που μένει μετά να ελέγξουμε είναι αν το Community Write είναι σωστό. Ξεκινάμε ένα καινούριο SNMP session και στο community δίνουμε την τιμή του Community Write, αν η σύνδεση είναι επιτυχείς τότε με την εντολή get παίρνουμε την τιμή της επικοινωνίας και την εκχωρούμε στην μεταβλητή li, στην συνέχεια με την εντολή $f set [list [list "$li" ] ] εντολή δίνουμε την ίδια τιμή που πριν πήραμε στο OID syscontact.0 αν δεν μας επιστραφεί κάποιο μήνυμα σφάλματος τότε και το Community Write είναι σωστό. Αν όλα τα στοιχεία τηρούνε τα κριτήρια, δηλαδή το όνομα του κόμβου δεν υπερβαίνει τους 35 χαρακτήρες και υπάρχει στο δίκτυο, η IP διεύθυνση τηρεί τους γνωστούς κανόνες και είναι αντίστοιχη με το domain name που δίνουμε, τα communities read και write είναι αυτά που έχει η συσκευή και επίσης λόγω βάσης δεδομένων δεν υπερβαίνουν τους 15 χαρακτήρες, αυτό φαίνεται και στον πίνακα nodes που ακολουθεί. Field Πίνακας nodes nodes Id Node_Name IP Community_read Community_write Type int(10)unsigned char(35) char(15) char(15) char(15) Τα στοιχεία που καταχωρούμε για τους κόμβους, καταχωρούνται στον πίνακα nodes, όπου Id είναι το Id του κόμβου, Νode_Νame το όνομα του κόμβου, IP η IP διεύθυνση του κόμβου, Community_read και Community_write. Επίσης αυτό που πρέπει να τονίσουμε είναι πως δεν μπορούμε να καταχωρήσουμε τα ίδια στοιχεία με έναν κόμβο που είναι ήδη καταχωρημένος. 85

87 ΔΙΑΓΡΑΦΗ ΚΟΜΒΟΥ Όταν διαγράφουμε έναν κόμβο τότε ταυτόχρονα διαγράφονται και οι πόρτες, οι χρήστες που έχουμε καταχωρήσει, το αρχείο καταγραφής του και η μαύρη λίστα του. Ο λόγος είναι πως αυτές οι πληροφορίες παύουν να μας ενδιαφέρουν με την διαγραφή του κόμβου και δεσμεύουν άδικα χώρο στην βάση δεδομένων. Όταν πατάμε την επιβεβαίωση της διαγραφής ενός κόμβου τότε οι εντολές της Mysql που εκτελούνται είναι: set clg [sql "select Node_Name from nodes where Id='$node';"] set m [ sql "delete from nodes where Id='$node';"] set m [ sql "delete from ports where Id_node='$node';"] set n [ sql "delete from comps where Id_node='$node';"] set blkl [sql "delete from black_list where Id_node='$node';"] set colog [sql "delete from comps_log where Switch_Name='$clg';"] set colog [sql "delete from comps_log1 where Switch_Name='$clg';"] Πριν σβήσουμε τον κόμβο, καταχωρούμε το όνομα του σε μια μεταβλητή, την clg, το οποίο θα μας χρειαστεί για τους πίνακες comps_log και comps_log1. Στην συνέχεια σβήνουμε από τον πίνακα nodes τον κόμβο που έχει Id=$node. To $node είναι το Id του κόμβου το οποίο το μεταφέρουμε από την σελίδα προβολής των κόμβων. Όταν ο χρήστης πατάει πάνω στην διαγραφή τότε με την βοήθεια της Javascript, τρέχει το onclick="javascript:document.getelementbyid('k').value=34" που σημαίνει πως πάνε στο σημείο όπου σαν id έχει το k και στο value δώσε την τιμή 34, που είναι το Id του συγκεκριμένου κόμβου. Αν ο χρήστης πατούσε σ άλλον κόμβο, παραδείγματος χάριν στον ακριβώς από πάνω τότε σαν value (τιμή) ο κόμβος θα έχει το Id του κόμβο. Στην συνέχεια σβήνουμε από τον πίνακα ports τις πόρτες που σαν Id_node έχουν το Id του κόμβου, το ίδιο κάνουμε και για την μαύρη λίστα. Από τους πίνακες comps_log και comps_log1 σβήνουμε τις εγγραφές που σαν όνομα κόμβου έχουν το όνομα κόμβου ίδιο μ αυτό που καταχωρήσαμε προηγουμένως στην μεταβλητή clg. Δηλαδή, για παράδειγμα αν σβήσουμε τον κόμβο node-3 ο οποίος έχει σαν Id το 28(από τον πίνακα nodes), τότε από τους πίνακες ports, comps, black_list θα διαγραφούν όλα τα στοιχεία εκείνα όπου στο πεδίο Id_node έχουν την τιμή 28, ενώ 86

88 τα στοιχεία από τους πίνακες comps_log, comps_log1 θα διαγραφούν όπου το Switch_Name είναι node ΑΛΛΑΓΗ ΧΑΡΑΚΤΗΡΙΣΤΙΚΩΝ ΚΟΜΒΩΝ Η διαδικασία αλλαγής χαρακτηριστικών κόμβων, είναι ακριβώς η ίδια διαδικασία με αυτή της προσθήκης νέου κόμβου. Το μόνο που θα λέγαμε ότι αλλάζει είναι η εντολή της Mysql, που αντί να κάνουμε insert, δηλαδή καταχώρηση καινούριας εγγραφής, κάνουμε update, δηλαδή αλλαγή, ενημέρωση κάποιων ή όλων των τιμών της συγκεκριμένης εγγραφής του κόμβου που υπάρχει ήδη στον πίνακα nodes DAEMONS (ΔΑΙΜΟΝΕΣ) Για να συμπληρώνονται με στοιχεία το αρχείο καταγραφής (log file) η μαύρη λίστα (black list) και η δεξαμενή με τα ζεύγη IP MAC διευθύνσεων, θα πρέπει να υπάρχουν κάποια προγράμματα τα οποία να τρέχουν συνεχώς και να ελέγχουν αν κάποιος πρέπει να καταχωρηθεί στο αρχείο καταγραφής ή / και στην μαύρη λίστα, όπως επίσης να βάζει όσες IP και MAC βρίσκει στο δίκτυο σε μια δεξαμενή για να τις χρησιμοποιήσουμε στο μέλλον. Τέτοιου είδους προγράμματα ονομάζονται DAEMONS, δηλαδή δαίμονες. Είναι γνωστά και η χρήση τους είναι διαδεδομένη στα Unix like λειτουργικά συστήματα Έχουν κατά καιρούς αποδοθεί διάφοροι ορισμοί. Τα daemons είναι ειδικά μικρά προγράμματα τα οποία εκτελούν συγκεκριμένες εργασίες. Ένα daemon μπορεί να τρέχει συνεχώς παρακολουθώντας το σύστημα ή να ξυπνάει όταν πρέπει να εκτελεστεί μια εργασία. Ένα τέτοιο παράδειγμα είναι το πρόγραμμα παράδοσης ηλεκτρονικού ταχυδρομείου, όταν ένα μήνυμα δεν μπορεί να παραδοθεί τότε λαμβάνουμε ένα μήνυμα από το mailer daemon. [22] Άλλος ορισμός αναφέρει, ότι τα daemons είναι διαδικασίες οι οποίες είναι σχετικές με το σύστημα και τρέχουν κυρίως στο background (στο πίσω μέρος, δηλαδή έχει την έννοια του ότι δεν είναι ορατές από τον χρήστη) με τα δικαιώματα 87

89 του root και τις υπηρεσίες αιτημάτων από άλλες διαδικασίες. Χαρακτηριστικό τους είναι ότι τα ονόματα τους συνήθως τελειώνουν με το γράμμα "d", παραδείγματος χάριν syslogd, είναι το daemon που χειρίζεται το αρχείο καταγραφής του συστήματος. [23] Στα λειτουργικά συστήματα Microsoft Windows αυτά τα προγράμματα ονομάζονται services (υπηρεσίες) και εκτελούν λειτουργίες αντίστοιχες με αυτές των daemons. Στα λειτουργικά συστήματα Mac OS, παρόμοια προγράμματα είναι γνωστά ως extensions (προεκτάσεις). Για τις ανάγκες της εφαρμογής χρειάστηκε να αναπτύξουμε και εμείς τέτοια προγράμματα, τρία στο σύνολο το daemon.tcl, το black_lister.tcl και το snoop.tcl και τα τρία αυτά προγράμματα βρίσκονται στον φάκελο /export/home/odmpats/public_html/cgi-bin O ΔΑΙΜΟΝΑΣ daemon.tcl Όπως προαναφέραμε, αυτά τα προγράμματα τρέχουν συνεχώς, τον συγκεκριμένο δαίμονα τον έχουμε ορίσει να τρέχει κάθε δέκα λεπτά. Η δουλειά του είναι να καταγράφει την IP, MAC, όνομα κόμβου, θύρα κόμβου, ημερομηνία ώρα πραγματοποίησης της σύνδεσης, ώρα διακοπής της σύνδεσης, στην ουσία είναι υπεύθυνος για το αρχείο καταγραφής του κάθε κόμβου. Χρησιμοποιούμε την εντολή της Tcl την source όνομα_αρχείου και έτσι περιέχεται και το αρχείο mysql_connect_change.tcl το οποίο βρίσκετε στην διαδρομή /export/home/odmpats/public_html/cgi-bin και περιέχει πληροφορίες χρήστη για την σύνδεση του με την βάση δεδομένων (sql connect localhost odmpats xxxxx), τα συγκεκριμένα στοιχεία τα έχουμε σ ένα αρχείο το οποίο το χρησιμοποιούμε σε όλα τα daemons. Χρησιμοποιούμε την συγκεκριμένη τεχνική, γιατί στην περίπτωση που χρειαστεί να αλλάξουμε όνομα χρήστη και κωδικό χρήστη να μην χρειάζεται να πάμε και στα τρία προγράμματα να αλλάξουμε τα στοιχεία αυτά, γιατί αλλάζοντας το mysql_connect_change.tcl τότε οι αλλαγές εφαρμόζονται και στα υπόλοιπα, αφού το περιεχόμενο αυτού του αρχείου περιέχεται στα αρχεία αυτά. Από την βάση δεδομένων παίρνουμε όλους τους κόμβους που είναι καταχωρημένοι στο σύστημα, στην συνέχεια ανοίγουμε ένα SNMP session με τον router του δικτύου μας, επειδή και ο router όμως είναι ένα αντικείμενο δικτύου το 88

90 οποίο μπορεί να αλλάξει διεύθυνση ή community read οποιαδήποτε στιγμή και εδώ χρησιμοποιούμε την source, δηλαδή έχουμε ένα αρχείο το οποίο περιέχει στοιχεία του router για να πραγματοποιήσουμε σύνδεση SNMP, το αρχείο ονομάζεται router_change.tcl και βρίσκεται και αυτό στην διαδρομή /export/home/odmpats/public_html/cgi-bin το περιεχόμενο του είναι μία γραμμή: catch {set router [Tnm::snmp generator -address cisco-kavala -community noc] msg111 τα στοιχεία που μπορούμε να αλλάξουμε όπως μπορούμε να δούμε από την πάνω γραμμή είναι το cisco-kavala, που είναι το domain του router, στην θέση του μπορούμε να γράψουμε και την IP του router. Όπου noc είναι το community read. Ενώ έχουμε συνδεθεί με το router, θα πάρουμε τον arp table του router μέσω SNMP, δηλαδή τον πίνακα που περιέχει ζεύγη IP MAC διευθύνσεων. Στην συνέχεια για κάθε καταχωρημένο κόμβο ανοίγουμε SNMP session και μέσω SNMP παίρνουμε τις MAC διευθύνσεις που ακούνε (listening) σε κάθε θύρα του κόμβου. Επειδή, οι συσκευές επικοινωνούν στο επίπεδο 2 (Layer 2 Switches, Cisco Catalyst 1900 και 2820) μπορούμε να δούμε μόνο την MAC διεύθυνση του χρήστη που επικοινωνεί ή ακούει στην θύρα του κόμβου, αυτός είναι και ο λόγος που θέλουμε τον arp table από τον router, επειδή οι routers είναι συσκευές οι οποίες δουλεύουν ένα επίπεδο πιο πάνω από τα Switches, στο επίπεδο 3 (Layer 3), μας δίνεται η δυνατότητα να μπορούμε να δούμε τις IP διευθύνσεις των χρηστών που επικοινωνούν με τον router. Επομένως, έστω ότι μια MAC ακούει σε μια θύρα ενός κόμβου, βλέπουμε την MAC και στην συνέχεια ενώ έχουμε τα στοιχεία από τον arp του router ψάχνουμε την MAC, αν την βρούμε (που σημαίνει πως ο χρήστης επικοινώνησε με τον router ή μέσω του router με κάποιον άλλο) τότε μπορούμε να ξέρουμε και την IP διεύθυνση του. Αλλιώς, ψάχνουμε στον πίνακα trunk της βάσης δεδομένων, που έχει καταχωρημένα ζεύγη IP MAC και αν πάλι δεν βρούμε IP τότε στην στήλη IP του πίνακα comps_log και comps_log1 δεν καταχωρούμε τίποτα, την συγκεκριμένη διαδικασία την χρησιμοποιούμε σχεδόν σ όλα τα προγράμματα μας, γιατί πληροφορίες όπως IP και MAC θεωρούνται σημαντικές. Επομένως, μέχρι στιγμής οι πληροφορίες που έχουμε είναι ο κόμβος, η θύρα, η MAC που ακούει στην θύρα και ίσως η IP (αν την έχουμε βρει), με βάση αυτά τα στοιχεία ελέγχουμε αν υπάρχει καταχωρημένη κάποια εγγραφή στον πίνακα comps_log, αν υπάρχει τότε ανανεώνουμε την ώρα και την ημερομηνία με αυτή του 89

91 τελευταίου ελέγχου και πάμε στην επόμενη MAC ή θύρα και ελέγχουμε ξανά, αν όμως δεν υπάρχει τότε καταχωρούμε στον πίνακα comps_log την IP (αν την έχουμε βρει), την MAC, το όνομα του κόμβου, το όνομα της θύρας, και την ημερομηνία και ώρα που καταγράφουμε τα στοιχεία αυτά, επίσης στον πίνακα comps_log1 καταχωρούμε IP, MAC, κόμβο, θύρα και 0000:00:00:00 στο πεδίο Finish που περιέχει πληροφορίες για το πότε διακόπηκε η σύνδεση του συγκεκριμένου χρήστη. Αν ο χρήστης με τα συγκεκριμένα στοιχεία δεν ακούσει ή επικοινωνήσει με την θύρα του κόμβου μέσα στο χρονικό διάστημα μιας ώρας από την ώρα που τον καταγράψαμε τότε σημαίνει πως έχει κλείσει τον Η/Υ του ή δεν επικοινωνεί με τον συγκεκριμένο κόμβο και θύρα τότε γεμίζουμε το πεδίο Finish του πίνακα comps_log1 με την τρέχουσα ώρα. Όταν ο ίδιος ξαναεπικοινωνήσει με τον κόμβο τότε οι εγγραφές με τα στοιχεία του από τον πίνακα comps_log αλλά και από τον πίνακα comps_log1 διαγράφονται και καταχωρούνται από την αρχή τα στοιχεία του στους πίνακες comps_log και comps_log1. Αυτή η διαδικασία συνεχίζεται μέχρι να ελέγξουμε όλους τους χρήστες όλων των θυρών όλων των κόμβων. Για την διευκόλυνση μας χρησιμοποιούμε τρεις συναρτήσεις την MacsCiscoLikeView, την timeadd και την timeconverter. Η πρώτη παίρνει σαν όρισμα την MAC διεύθυνση, π.χ. ff:ff:ff:ff:ff:ff και επιστρέφει την διεύθυνση με την μορφή που εμφανίζουμε και αποθηκεύουμε τις MAC διευθύνσεις στην εφαρμογή, δηλαδή η παραπάνω MAC θα γίνει ffff.ffff.ffff. Η δεύτερη συνάρτηση η timeadd σαν ορίσματα δέχεται την ώρα, τα λεπτά και τα δευτερόλεπτα που είναι η ώρα που συνδέθηκε ο χρήστης στην πόρτα και αυξάνει αυτή την ώρα κατά μια και την επιστρέφει για να γίνει ο έλεγχος. Η τελευταία, σαν όρισμα δέχεται την ώρα από την βάση comps_log1, και ελέγχει αν υπάρχει εγγραφή, αν δεν υπάρχει τότε σαν τιμή το έτος θα έχει «0000», την οποία την καταχωρούμε σαν default τιμή, αλλιώς η τιμή θα είναι η τιμή της συγκεκριμένη χρονικής στιγμής που έγινε η καταχώρηση. Αν υπάρχει εγγραφή τότε επιστρέφει την ώρα με την μορφή hh:mm:ss για να γίνει ο έλεγχος. Αν δεν υπάρχει εγγραφή τότε επιστρέφει το nop το οποίο το χρησιμοποιούμε σαν flag. Οι πίνακες που έχουμε είναι δύο ο comps_log και ο comps_log1, o λόγος που δημιουργήσαμε δύο πίνακες είναι διότι η mysql έχει ένα bug σ αυτό το σημείο, αν σ έναν πίνακα έχουμε δύο στήλες εκ των οποίων τα δεδομένα είναι τύπου timestamp και θέλουμε να κάνουμε update για να ενημερώσουμε την ώρα τότε η τελευταία στήλη πάντα θα έχει τιμές «000». Η λύση που βρήκαμε σ αυτό το πρόβλημα ήταν να φτιάξουμε έναν πίνακα ίδιο με τον comps_log και να τον ονομάσουμε comps_log1, 90

92 στον πρώτο καταγράφονται τα στοιχεία του χρήστη και η ώρα που καταγράψαμε τον χρήστη, στον δεύτερο αποθηκεύονται τα ίδια ακριβώς στοιχεία με τον comps_log μόνο που στην τελευταία στήλη έχουμε την ώρα που διαπιστώθηκε η διακοπή της σύνδεσης. Πίνακας comps_log Πίνακας comps_log1 Field Id IP MAC Switch_Name Port_Name Finish comps_log1 Type int(10)unsigned char(15) char(14) char(35) char(20) char(13) NOT NULL DEFAULT "0000:00:00:00" Field Id IP MAC Switch_Name Port_Name Start comps_log Type int(10)unsigned char(15) char(14) char(35) char(20) Timestamp(14) not null default "current_timestamp()" O ΔΑΙΜΟΝΑΣ black_lister.tcl Τρέχει κάθε δέκα λεπτά, όπως και το daemon.tcl, καταγράφει IP, MAC, κόμβο, θύρα κόμβου και ημερομηνία ώρα που προστέθηκε ο χρήστης στην λίστα αυτή, την μαύρη λίστα. Σ αυτή την λίστα καταχωρούνται όσοι δεν είναι εξουσιοδοτημένοι χρήστες, δηλαδή δεν έχουν καταχωρηθεί τα στοιχεία τους στο σύστημα, επίσης όσοι είναι καταχωρημένοι αλλά κάποια από τα στοιχεία τους έχουν αλλάξει, παραδείγματος χάριν η IP διεύθυνση ή αντί για μια IP να έχουν δύο, θέλοντας να ξεγελάσουν τον διαχειριστή του δικτύου. Ισχύουν ακριβώς τα ίδια μ αυτά του daemon.tcl όσων αφορά τα mysql_connect_change.tcl και router_change.tcl, καθώς επίσης με τον arp πίνακα από router και τις IP διευθύνσεις. Ελέγχει κάθε κόμβο που είναι καταχωρημένος στο σύστημα. Για κάθε κόμβο, πόρτα και MAC ελέγχει αν υπάρχει εγγραφή στον πίνακα comps, αν δεν υπάρχει τότε καταχωρείτε στον πίνακα black_list, αν όμως υπάρχει εγγραφή στον πίνακα comps και στο πεδίο black_list η τιμή του είναι μηδέν (είναι ένα flag) τότε γίνεται έλεγχος μήπως έχει περισσότερες από μια IP, αν έχει τότε καταγράφεται στην μαύρη λίστα αλλιώς πηγαίνει στον επόμενο και συνεχίζει η διαδικασία, αν όμως έχει μια μόνο IP και τα στοιχεία του είναι τα ίδια τότε γίνεται έλεγχος αν υπάρχει στην μαύρη λίστα. Αν υπάρχει, τότε διαγράφεται η εγγραφή, ενώ αν δεν υπάρχει τότε δεν γίνεται τίποτα. 91

93 Αν στο πεδίο black_list του πίνακα comps η τιμή είναι ένα τότε δεν γίνεται κανένας έλεγχος και ο συγκεκριμένος δεν καταχωρείται στην λίστα και στην περίπτωση που υπήρχε ήδη στην λίστα τότε διαγράφεται, το συγκεκριμένο εξυπηρετεί στην περίπτωση που πάνω σε μια πόρτα είναι συνδεδεμένο ένα hub ή ένα switch και ενώ έχει μόνο μια MAC έχει τόσες IP όσοι είναι και οι χρήστες που είναι συνδεδεμένοι σ αυτό. Ή αν κάποιος χρήστης θέλει να αλλάξει IP για ένα μικρό συγκεκριμένο διάστημα και δεν θέλουμε να προστεθεί στην μαύρη λίστα. Πίνακας black_list Field Id Port_Name Id_node IP MAC Time black_list Type int(10)unsigned char(20) int(10) char(15) char(14) Timestamp(14) not null default"current_timestamp()" O ΔΑΙΜΟΝΑΣ snoop.tcl Αυτός ο δαίμονας τρέχει κάθε πέντε λεπτά, δουλειά του είναι να φιλτράρει τα IP πακέτα που κυκλοφορούν στο δίκτυο και να αποθηκεύει στον πίνακα trunk (δεξαμενή), ζεύγη IP MAC διευθύνσεων που περιέχονται στα πακέτα αυτά. Ο πίνακας trunk, είναι στην ουσία μια δεξαμενή που πετάμε ότι ζεύγος IP MAC βρούμε στο δίκτυο, στην συνέχεια αν δεν μπορούμε να βρούμε την IP διεύθυνση που αντιστοιχεί σε μια MAC από τον arp πίνακα του router, είτε γιατί ο χρήστης δεν έχει επικοινωνήσει με τον router είτε γιατί δεν έχει επικοινωνήσει με τον έξω κόσμο, δηλαδή το διαδίκτυο τότε ψάχνουμε στον πίνακα trunk να δούμε αν υπάρχει αποθηκευμένο το ζεύγος. Αν υπάρχει τότε το τυπώνουμε αν δεν υπάρχει, τυπώνουμε την MAC και την IP διεύθυνση την αφήνουμε κενή ή βάζουμε μια παύλα ( - ). 92

94 10.7 Η ΕΝΤΟΛΗ SNOOP Το φιλτράρισμα των πακέτων γίνεται με την βοήθεια της εντολής snoop. Η εντολή snoop «συλλαμβάνει» πακέτα από το δίκτυο και μας δείχνει το περιεχόμενο των πακέτων αυτών. Βρίσκεται στον κατάλογο /usr/sbin, είναι στην ουσία ένας packet sniffer που περιέχεται στα Solaris λειτουργικά συστήματα. Μπορεί να δείχνει τα πακέτα σε μια μόνο γραμμή ή να τα εμφανίζει αναλυτικά. Μπορεί επίσης τα αποτελέσματα να τα αποθηκεύει σ ένα αρχείο έτσι ώστε να μπορούμε να επεξεργαστούμε τα περιεχόμενα του αρχείου αργότερα. Αυτό το εργαλείο είναι παρόμοιο με το tcpdump. Οι επιλογές της snoop: [ -a ] #Μπορούμε να ακούσουμε τα πακέτα από το ηχείο [ -d device ] #Σε ποιο interface snoop (le?, ie?, bf?, tr?) [ -s snaplen ] #Σμίκρυνση περιεχομένων πακέτου [ -c count ] #Μετά από πόσα πακέτα να σταματήσει [ -P ] #Turn OFF promiscuous mode [ -D ] #Αναφορά dropped packets [ -S ] #Αναφορά μεγέθους ενός πακέτου [ -i file ] #Διαβάζει από αρχείο τα προηγούμενα πακέτα [ -o file ] #Αποθηκεύει τα πακέτα που συλλαμβάνει σ ένα αρχείο [ -n file ] #Φορτώνει τον πίνακα διεύθυνση σε όνομα από αρχείο [ -N ] #Δημιουργεί έναν πίνακα διεύθυνση σε όνομα [ -t r a d ] #Ώρα : γενική, πλήρης και διαφορά [ -v ] #Αναλυτική εμφάνιση περιεχομένων πακέτου [ -V ] #Εμφάνιση όλων των γραμμών περιληπτικά [ -p first[,last] ] #Επιλογή πακέτου / ων προς εμφάνιση [x offset[,length] ] #Απόρριψη δεκαεξαδικού από την εμφάνιση για το μήκος [ -C ] #Τυπώνει τον κώδικα φίλτρου του πακέτου [ -q ] #Καταστέλλει την αρίθμηση πακέτων εκτύπωσης [ -r ] #Δεν μετατρέπει την διεύθυνση σε όνομα Η πιο συχνή χρήση της snoop είναι να παρακολουθεί την επικοινωνία μεταξύ δύο συστημάτων, παραδείγματος χάριν, εάν θέλουμε να παρατηρήσουμε την 93

95 επικοινωνία μεταξύ των συστημάτων a και b θα χρησιμοποιούσαμε την ακόλουθη εντολή: # snoop a, b Για να σταματήσει να τρέχει η snoop θα πρέπει να πατήσουμε τα πλήκτρα Control-C συγχρόνως. Tην εντολή snoop μπορεί να την τρέξει μόνο ο superuser ή κάποιος που έχει δικαιώματα να το κάνει. Παρακάτω έχουμε κάποια παραδείγματα χρήσης της snoop χρησιμοποιώντας τις επιλογές της: [24] Εμφανίζει τα broadcast πακέτα σε μια γραμμή #snoop broadcast Εμφανίζει πακέτα και πληροφορίες επικεφαλίδας broadcast πακέτων, αναλυτικά # snoop -v broadcast 94

96 Εμφανίζει αναλυτικές πληροφορίες για κάθε πακέτο που πηγαίνει ή φεύγει από το σύστημα με IP διεύθυνση # snoop -V Αν θέλουμε να μην έχουμε απώλεια πακέτων, τότε ότι δίνει η snoop σαν έξοδο το αποθηκεύουμε σ ένα αρχείο στην διαδρομή /tmp/snooper. # snoop -o /tmp/snooper -V Το φίλτρο που χρησιμοποιούμε εμείς: snoop -P -c 1 -s 34 -v and src not 0:80:1c:14:a0:20 and ip and src not Που σημαίνει, εμφάνισε μου ένα πακέτο ( -c 1), του οποίου το μέγεθος θα είναι 34 ( -s 34), 34 γιατί οι πληροφορίες που μας ενδιαφέρουν περιέχονται σ αυτό το μέγεθος του πακέτου. Στην συνέχεια επειδή θέλουμε να δούμε αναλυτικά τις πληροφορίες του πακέτου ( -v), λογικό ΚΑΙ (and) όπου η πηγή, δηλαδή από αυτόν που έρχεται το πακέτο (src) να μην είναι (NOT, ΟΧΙ) 0:80:1c:14:a0:20 που είναι η MAC διεύθυνση του router, θα μπορούσαμε εδώ να βάλουμε IP ή όνομα, ΚΑΙ (AND) αυτό το πακέτο να είναι IP KAI (AND) η πηγή (src) να μην είναι η Στο φίλτρο του λέμε να μην μας δείχνει τα πακέτα τα οποία προέρχονται από τους routers γιατί οι πληροφορίες που θα περιέχουν αυτά τα πακέτα θα μας είναι άχρηστες γιατί θα είναι πληροφορίες οι οποίες έρχονται από τον έξω κόσμο, το διαδίκτυο, δηλαδή θα μας εμφανίζει πληροφορίες χρηστών που βρίσκονται έξω από το δίκτυο μας και δεν μας ενδιαφέρουν και θα γεμίζει η βάση δεδομένων μας με πληροφορίες που δεν θα μας χρειαστούν ποτέ. Αν εκτελέσουμε την παραπάνω εντολή τότε αυτό που θα μας επιστρέψει την συγκεκριμένη χρονική στιγμή θα είναι: 95

97 Οι πληροφορίες που μας ενδιαφέρουν απ όλα τα παραπάνω είναι στο Ether Header η Destination και η Source MAC και στο IP Header Source και Destination address. Αν η destination MAC είναι ff:ff:ff:ff:ff:ff που σημαίνει πως πρόκειται για broadcast πακέτο, τότε ασχολούμαστε μόνο με τις Source πληροφορίες. Αν όμως δεν είναι broadcast η destination τότε αποθηκεύουμε τα destination και source στοιχεία και ελέγχουμε αν το αντίστοιχο ζευγάρι MAC, IP υπάρχει στον πίνακα trunk, αν υπάρχει τότε δεν κάνουμε τίποτα αν δεν υπάρχει τότε καταχωρούμε αυτά τα στοιχεία. Επίσης αν η IP είτε η Source είτε η Destination είναι τότε όπως και στην περίπτωση που η MAC είναι ff:ff:ff:ff:ff:ff δεν κάνουμε καμία ενέργεια. Το φίλτρο το έχουμε στο αρχείο snoop_filter_router_change.tcl και με την εντολή source όνομα_αρχείου περιέχεται στο αρχείο snoop.tcl το φίλτρο μας, το οποίο μπορούμε να το αλλάξουμε αν απλά πάμε στο αρχείο snoop_filter_router_change.tcl, προσοχή όμως αν κάνουμε αλλαγές θα πρέπει να αλλάξουμε μόνο τα src. Δηλαδή την IP , την οποία αν θέλουμε μπορούμε να την αφαιρέσουμε κιόλας. Δηλαδή αυτά που μπορούμε να αλλάξουμε είναι 0:80:1c:14:a0:20 που είναι η MAC του router και το που είναι η IP του δεύτερου router που υπάρχει στο δίκτυο μας. Αν στο δίκτυο μας έχουμε μόνο έναν router με IP τότε σβήνουμε τον όπου η MAC πρώτου γράφουμε IP ή MAC, δηλαδή το φίλτρο μας σ αυτή την περίπτωση θα γίνει: snoop -P -c 1 -s 34 -v and src not and ip ΠΡΟΣΘΗΚΗ ΠΕΡΙΓΡΑΦΗΣ ΘΥΡΑΣ Για να προσθέσουμε μια θύρα στο σύστημα συνδεόμαστε με τον κόμβο που βρισκόμαστε με SNMP (με βάση τα στοιχεία που έχουμε δώσει στην διαδικασίας καταχώρησης νέου κόμβου, γι αυτό και τότε κάνουμε έλεγχο για να δούμε αν τα στοιχεία είναι αληθή) και ελέγχουμε αν υπάρχει όνομα πόρτας ίδιο με το όνομα που δίνει ο χρήστης, αν υπάρχει τότε ελέγχουμε αν η περιγραφή που δώσαμε είναι μέχρι 35 χαρακτήρες. Αν υπάρχει το όνομα και η περιγραφή που έδωσε ο χρήστης είναι μέχρι 35 χαρακτήρες τότε καταχωρούμε στον πίνακα ports τα στοιχεία που έδωσε ο χρήστης και αυτόματα καταχωρείται και το Id του κόμβου για να ξέρουμε σε ποιόν κόμβο ανήκουν οι θύρες που καταχωρούμε. 96

98 Αυτό που θα πρέπει να ξέρουμε είναι πως δεν μπορούμε να καταχωρήσουμε μια θύρα με περιγραφή ή / και όνομα θύρας που ήδη είναι καταχωρημένη και αυτό γιατί πριν καταχωρήσουμε τα στοιχεία που πληκτρολογεί ο χρήστης ελέγχουμε αν υπάρχει καταχωρημένη πόρτα με αυτό το Id κόμβου και όνομα πόρτας. Ενώ δεν μπορούμε να καταχωρήσουμε θύρα με περιγραφή που ήδη είναι καταχωρημένη, γιατί όπως παρατηρούμε από τον πίνακα ports παρακάτω το πεδίο Port_Description είναι πρωτεύων κλειδί (primary key) του πίνακα και δεν επιτρέπεται να έχει διπλές (duplicate) εγγραφές. Πίνακας ports ports Field Id_node Port_Name Port_Description Type int(10) char(35) char(35) ΔΙΑΓΡΑΦΗ ΘΥΡΑΣ Πριν διαγράψουμε την πόρτα βλέπουμε την σελίδα επιβεβαίωσης διαγραφής της πόρτας, η οποία μας ενημερώνει πως αν διαγράψουμε την θύρα τότε αυτόματα θα διαγραφούν και ο / οι χρήστες που βρίσκονται πάνω στην θύρα. Επίσης, εμφανίζεται ένα παράθυρο διαλόγου το οποίο μας ρωτάει αν είμαστε σίγουροι πως θέλουμε να διαγράψουμε την συγκεκριμένη πόρτα, το παράθυρο αυτό έχει υλοποιηθεί με την γλώσσα προγραμματισμού Javascript, onclick="return confirm('είστε σίγουρος πως θέλετε να διαγράψετε τα στοιχεία της πόρτας?')", που σημαίνει κάνοντας κλικ τότε να εμφανιστεί ένα παράθυρο επιβεβαίωσης, αν πατήσουμε στο OK τότε διαγράφουμε την πόρτα της οποίας το όνομα πάλι το πήραμε με την βοήθεια της Javascript, onclick="javascript:document.getelementbyid('i').value=$value", όπου $value είναι το όνομα της πόρτας που θέλουμε να διαγράψουμε πιο πριν όμως έχουμε και <input type="hidden" id="i" name="port_name">. Αλλιώς, αν δηλαδή πατήσουμε στην Ακύρωση τότε δεν διαγράφεται τίποτα και μπορούμε να επιστρέψουμε στην σελίδα προβολής των θυρών. Οι εντολές που χρησιμοποιούνται για να διαγράψουμε την θύρα και τους χρήστες είναι: 97

99 set m [ sql "delete from ports where Id_node='$node' and Port_Name='$port';"] set n [ sql "delete from comps where Id_node='$node' and Port_Name='$port';"] σβήνουμε την πόρτα με όνομα $port και Id_node=$node από τον πίνακα ports και σβήνουμε τους χρήστες που σαν Id_node έχουν $node και όνομα πόρτας $port από τον πίνακα comps ΔΙΑΓΡΑΦΗ ΟΛΩΝ ΤΩΝ ΘΥΡΩΝ Στην διαγραφή όλων των θυρών ενός κόμβου ακολουθείται ακριβώς η ίδια διαδικασία με την διαγραφή θύρας, με την μόνη διαφορά πως η πληροφορία που χρειάζεται να έχουμε είναι μόνο το Id του κόμβου και όχι και το όνομα της πόρτας, επομένως η διαγραφή γίνεται: set m [ sql "delete from ports where Id_node='$id_node';"] set n [ sql "delete from comps where Id_node='$id_node';"] σβήνουμε όλες τις εγγραφές του πίνακα ports που έχουν σαν Id κόμβου το Id του κόμβου που βρισκόμαστε και θέλουμε να σβήσουμε τις πόρτες του, ακόμα σβήνουμε από των πίνακα comps όπου σαν Id κόμβου έχουν το Id του κόμβου που θέλουμε να σβήσουμε τις πόρτες του ΤΡΟΠΟΠΟΙΗΣΗ ΠΕΡΙΓΡΑΦΗΣ ΘΥΡΑΣ Στην τροποποίηση περιγραφής της θύρας το μόνο που ζητάμε από τον χρήστη να μας δώσει είναι η καινούρια περιγραφή, δηλαδή δεν χρειάζεται να επαναλάβουμε όλη την διαδικασία, να συνδεθούμε ξανά με SNMP να πιστοποιήσουμε ότι υπάρχει θύρα με τέτοιο όνομα γιατί το μόνο που αλλάζουμε είναι το Port_Description, το ερώτημα που κάνουμε είναι: puts [sql "update ports set Port_Description='$port_name_descr' where Id_node='$node' and Port_Name='$port_name';" ] 98

100 δηλαδή ενημερώνουμε μόνο το όνομα της πόρτας και εισάγουμε την τιμή που δίνει ο χρήστης, η οποία θα πρέπει να είναι μέχρι 35 χαρακτήρες αλλιώς θα ζητηθεί καινούρια τιμή, όπου το Id του κόμβου, το Id του κόμβου που βρισκόμαστε και το όνομα πόρτας το όνομα της πόρτας που βρισκόμαστε ΧΡΗΣΤΕΣ ΘΥΡΑΣ Οι χρήστες αποθηκεύονται στον πίνακα comps της βάσης δεδομένων imd_nms. Οι πληροφορίες που εισάγουμε για έναν χρήστη είναι οι εξής: όνομα Η / Υ, το οποίο θα πρέπει να μην ξεπερνάει τους 30 χαρακτήρες, IP διεύθυνση χρήστη, MAC διεύθυνση, το Id του κόμβου που βρίσκεται ο χρήστης το οποίο και αποθηκεύεται αυτόματα, όπως επίσης και το όνομα της πόρτας αποθηκεύεται αυτόματα, το τηλέφωνο του χρήστη αν υπάρχει θα πρέπει να είναι μέχρι 20 χαρακτήρες, την τοποθεσία που βρίσκεται ο χρήστης μέχρι 35 χαρακτήρες και το αν θέλουμε να γίνεται έλεγχος για να μπει ή όχι ο χρήστης στην μαύρη λίστα.. Field Πίνακας comps comps Type Id int(10)unsigned Pc_Name char(30) IP char(15) MAC char(14) Id_node int(10) Port_Name char(35) Phone_Number char(10) Location char(35) black_list int(1) default 0 Αφού γίνει ο έλεγχος των στοιχείων που έχει πληκτρολογήσει ο χρήστης και όλα τα στοιχεία τηρούν τις προδιαγραφές αποθηκεύονται στην βάση δεδομένων με την εντολή: 99

101 puts [sql "insert into comps (Pc_Name, IP, MAC, Id_node, Port_Name, Phone_number, Location, black_list) values ('$pc_name', '$IP', '$MAC', '$node', '$port_name', '$phone_number', '$location','$bl');" ΔΙΑΓΡΑΦΗ ΧΡΗΣΤΗ Για να ξέρουμε ποιον χρήστη θέλουμε να διαγράψουμε πρέπει να μεταφέρουμε πληροφορίες γι αυτόν τον χρήστη όπως Id κόμβου, πόρτα που βρίσκεται ο χρήστης και την IP διεύθυνση του την οποία την παίρνουμε με το που κάνουμε κλικ πάνω στον χρήστη: onclick="javascript:document.getelementbyid('ex').value='$ip_user'" όπου $ip_user είναι η IP διεύθυνση του χρήστη και τον διαγράφουμε με την εντολή: set m [ sql "delete from comps where Id_node='$node' and Port_Name='$port' and IP='$ip_user';"] ΔΙΑΓΡΑΦΗ ΟΛΩΝ ΤΩΝ ΧΡΗΣΤΩΝ Για να διαγράψουμε όλους τους χρήστες που βρίσκονται σε μια θύρα ενός κόμβου, χρειάζεται να ξέρουμε το Id του κόμβου και το όνομα της θύρας όπου βρίσκονται οι χρήστες. Αυτές οι πληροφορίες είναι ήδη γνωστές και μεταφέρονται από την προηγούμενη σελίδα, η εντολή που εκτελούμε για να διαγράψουμε όλους τους χρήστες είναι: set m [ sql "delete from comps where Id_node='$id_nod' and Port_Name='$port';"] όπου $id_nod είναι το Id του κόμβου και όπου $port είναι το όνομα της πόρτας. 100

102 10.10 ΠΡΟΒΟΛΗ ΣΤΟΙΧΕΙΩΝ ΚΟΜΒΩΝ Η σελίδα προβολής στοιχείων κόμβων ανανεώνεται κάθε 90 δευτερόλεπτα, για να το καταφέρουμε αυτό χρησιμοποιήσαμε την Javascript: <script language="javascript"> settimeout('document.aform.submit()=document.aform.submit()',90000); </script> όπου aform είναι το όνομα της φόρμας, το είναι τα 90 δευτερόλεπτα, επίσης βλέπουμε πως έχουμε και την submit(). <script LANGUAGE="JavaScript"> function changelink(id) { var e=document.getelementbyid(id).id document.aform.bu.value=id document.aform.submit() </script> Η συνάρτηση changelink δέχεται σαν όρισμα το id και στην συνέχεια δίνει σαν τιμή (value) στο bu της φόρμας aform το id, η παραπάνω συνάρτηση εκτελείται όταν ο χρήστης κάνει κλικ σ έναν σύνδεσμο που έχει: href="#" onclick="javascript:changelink(id)" id="stop" αν το id είναι Stop ή Refresh, τότε εμφανίζονται το Refresh και το AutoRefresh. Όταν το id είναι κενό ή AutoRefresh τότε εμφανίζεται το Stop AutoRefresh. Στην συνέχεια κάνουμε walk για να πάρουμε τα ονόματα όλων των θυρών του κόμβου: $s walk cj { { set uom [ lappend uom $cj] 101

103 για κάθε πόρτα καταχωρούμε σ έναν πίνακα την ταχύτητα της κάθε πόρτας, σ άλλον τα εισερχόμενα δεδομένα (τα ifinoctets) και σ άλλον τα εξερχόμενα δεδομένα που περνάνε από την θύρα (τα ifoutoctets) και τέλος την ώρα που το σύστημα είναι πάνω αυτό το κάνουμε για να μπορούμε να υπολογίσουμε μετά την διαφορά της ώρας για να βγάλουμε το χρονικό διάστημα. Παίρνουμε την ώρα που βρίσκεται το σύστημα πάνω (sysuptime), το οποίο μας επιστρέφει την ώρα σε εκατοστά του δευτερολέπτου. Για να υπολογίσουμε την ώρα, υλοποιήσαμε μια συνάρτηση την ConvertTimeticks: proc ConvertTimeticks { ticks { set seconds [expr $ticks/100 ] set days [ expr $seconds/86400 ] set hours [ expr ($seconds-($days*86400))/3600 ] set minutes [ expr ($seconds-($days*86400)-($hours*3600))/60 ] set seconds [ expr $seconds-($days*86400)-($hours*3600)-($minutes*60) ] return "$days days $hours hours $minutes min $seconds sec" με την οποία υπολογίζουμε και επιστρέφουμε πόσες ημέρες, ώρες, λεπτά, δευτερόλεπτα τρέχει το σύστημα. Με μια get και το κατάλληλο OID, μπορούμε να πάρουμε τον μέσο όρο % του επεξεργαστή που χρησιμοποιείται το τελευταίο λεπτό. Όπου η τιμή δεν είναι ορισμένη ή είναι κενή η εφαρμογή αυτόματα συμπληρώνει το Δεν έχει οριστεί. Το όνομα της θύρας για να το εμφανίσουμε κάθετα, χρησιμοποιούμε το: style="writing-mode:\ tb-rl" Το συγκεκριμένο όμως δουλεύει μόνο στον Internet Explorer και όχι στους υπόλοιπους browsers. Mozilla Firefox 2 Internet Explorer

104 Αυτό που εμφανίζεται πάνω από την κατάσταση της θύρας είναι η περιγραφή της πόρτας, που έχει δώσει προηγουμένως ο χρήστης. Ακριβώς από κάτω είναι η κατάσταση της πόρτας, όπου ελέγχουμε την κατάσταση που έχει ορίσει ο διαχειριστής για την πόρτα και στην συνέχεια την τωρινή κατάσταση που βρίσκεται, αυτό που θα πρέπει να τονίσουμε σ αυτό το σημείο είναι πως η πρώτη υπερισχύει από την δεύτερη. Στην τελευταία γραμμή έχουμε τα ονόματα των θυρών, τα οποία τα παίρνουμε από την συσκευή. Στην συνέχεια ακολουθεί ο πίνακας που περιέχει αναλυτικές πληροφορίες για κάθε θύρα. Για να δούμε ποια / ποιες MAC διευθύνσεις ακούν (listening) σε μια θύρα ακολουθούμε την εξής διαδικασία: κάνω walk to OID και το Το πρώτο μου δίνει τις MAC διευθύνσεις οι οποίες ακούν ή βρίσκονται στον arp πίνακα του Switch. Οι MACs που μας επιστρέφει το πρώτο OID Με το δεύτερο OID βλέπουμε τα ονόματα των θυρών του Switch. 103

105 Από το πρώτο και το δεύτερο walk, προκύπτει πως: {OCTET STRING 00:18:F3:FC:F6:F Integer32 3 Στην συνέχεια από το παραπάνω κάνω get: $s get το 3 από πάνω Και μας επιστρέφει { Integer32 3, αυτό το 3 το βάζουμε στο τέλος του OID και αυτό που μας επιστρέφει είναι: { {OCTET STRING {3 Επομένως προκύπτει από τα παραπάνω ότι η MAC 00:18:F3:FC:F6:F7 ακούει στην θύρα 3.[25] Από router αυτό που παίρνουμε είναι: $r walk f {ipnettomediaphysaddress{puts $f και μας επιστρέφει: Από την παραπάνω εικόνα προκύπτει πως έχουμε έναν πίνακα από τον router, ελέγχουμε αν η MAC είναι ίδια με κάποια MAC που έχουμε βρει ότι ακούει σε κάποια θύρα του Switch, αν βρεθεί MAC στον router τότε έχουμε βρει και την IP διεύθυνση που έχει η συγκεκριμένη MAC η οποία είναι η , η οποία προκύπτει από: {OCTET STRING 00:18:F3:FC:F6:F7 Στην περίπτωση που σ αυτή την λίστα του router δεν βρεθεί MAC, που συνεπάγεται και IP τότε κάνουμε έναν έλεγχο στον πίνακα trunk αν υπάρχει ζευγάρι IP MAC και το τυπώνουμε, αλλιώς τυπώνουμε (παύλες που σημαίνουν κενό). 104

106 . Field Id IP MAC Πίνακας trunk trunk Type int(10)unsigned char(15) char(14) Αφού βρούμε τις MAC IP διευθύνσεις που ακούν στις πόρτες τότε πρέπει να υπολογίσουμε τα InOctets και OutOctets τις κάθε πόρτας. Όπως έχουμε αναφέρει παραπάνω έχουμε καταχωρημένα σε έναν πίνακα τα InOctets και OutOctets της κάθε θύρας, τώρα θα πρέπει να μαζέψουμε πάλι τα ίδια στοιχεία για κάθε θύρα και να υπολογίσουμε αυτό που θέλουμε. Επομένως, έστω ότι τα στοιχεία που έχουμε στον πίνακα InOctets1 και OutOctets1 και sysuptime1 και τα τωρινά στοιχεία InOctets2 και OutOctets2 και sysuptime2. Γενικά ισχύει: Input Utilization= (InOctets2 - InOctets1 * 8) / ((sysuptime2 sysuptime1) * ifspeed) Output Utilization= (OutOctets2 - OutOctets1 * 8) / ((sysuptime2 sysuptime1) * ifspeed) [4],[5] Για παράδειγμα από την παραπάνω εικόνα προκύπτει πως το Input Utilization είναι 0,07 Mbps, bytes το InOctets2, bytes το InOctets1 και το (sysuptime2 sysuptime1) είναι 33 δευτερόλεπτα. Πράγματι, αν αντικαταστήσουμε στον τύπο τότε έχουμε: Input Utilization= (( )*8)/33 Input Utilization=78403,6363 / = 0,07 Mbps 105

107 Στην αλλαγή κατάστασης της πόρτας, χρησιμοποιούμε την εντολή set, οι πληροφορίες που χρειαζόμαστε είναι το όνομα της πόρτας και η τωρινή κατάσταση της πόρτας. Η εντολή που χρησιμοποιούμε είναι: $s set [ list [ list $port_name "up" ] ], όταν η κατάσταση είναι down και $s set [ list [ list $port_name "down" ] ], όταν η κατάσταση είναι up. Ακριβώς με τον ίδιο τρόπο, κάνουμε και τις αλλαγές στα χαρακτηριστικά ενός κόμβου. Με την μόνη διαφορά ότι είναι διαφορετικά τα OIDs και οι τιμές που δίνουμε σ αυτά. Επίσης, αν στις τιμές μας στο χαρακτηριστικό υπήρχε κενό τότε καταχωρούσε το κενό σαν μια λέξη και όπου κενό πρόσθετε το σύμβολο συν (+). Για να ξεπεράσουμε το συγκεκριμένο πρόβλημα όταν παίρνουμε την τιμή του τότε χρησιμοποιούμε και την εντολή split για να αφαιρέσουμε το σύμβολο συν και να μείνει μόνο η το string που μας ενδιαφέρει. Παραδείγματος χάριν, αν στο πεδίο επικοινωνία ο χρήστης δώσει το ονοματεπώνυμο του τότε η μεταβλητή contact θα έχει την τιμή O.+Mpatsios, με την εντολή set contact [split $contact +] το string θα γίνει Ο. Mpatsios ΑΝΑΖΗΤΗΣΗ Στην αναζήτηση μπορούμε να αναζητήσουμε χρήστες οι οποίοι είναι καταχωρημένοι στην βάση δεδομένων. Η αναζήτηση μπορεί να γίνει με βάση οποιοδήποτε κριτήριο του χρήστη. Η εντολή που χρησιμοποιούμε για να γίνει εφικτό αυτό είναι: sql "select Pc_Name, IP,MAC, Id_node, Port_Name, Phone_Number, Location,black_list from comps where Pc_Name='$sea' or IP='$sea' or Id_node='$sea' or MAC='$sea' or Port_Name='$sea' or Phone_Number='$sea' or Location='$sea' order by cast(port_name as unsigned);" 106

108 Επίσης, επειδή το πεδίο Port_Name είναι χαρακτήρες χρησιμοποιούμε την cast για να μετατρέψει το πεδίο σε unsigned και σε περίπτωση που τα αποτελέσματα είναι περισσότερα από ένα, π.χ. όταν δώσουμε σαν κριτήριο το node-3 τότε θα εμφανιστούν όλοι οι καταχωρημένοι χρήστες του node-3, ανεξάρτητα από την πόρτα που βρίσκονται. Η αν για κριτήριο δώσουμε το 4 τότε θα εμφανιστούν όλοι οι χρήστες οι οποίοι βρίσκονται πάνω στην θύρα 4 ανεξάρτητα από τον κόμβο που βρίσκονται. 107

109 ΚΕΦΑΛΑΙΟ 11 ΠΕΡΙΓΡΑΦΗ ΤΗΣ ΕΦΑΡΜΟΓΗΣ 11.1 ΕΙΣΟΔΟΣ ΣΤΗΝ ΕΦΑΡΜΟΓΗ Η εφαρμογή τρέχει στον εξυπηρετητή infoman.teikav.edu.gr, επομένως για να ξεκινήσουμε την εφαρμογή, ανοίγουμε έναν web browser και γράφουμε στην μπάρα διεύθυνσης (address bar), αν έχουμε πληκτρολογήσει σωστά την παραπάνω διεύθυνση τότε θα εμφανιστεί η αρχική σελίδα της εφαρμογής, που είναι και η σελίδα εισαγωγής (αρχική σελίδα). Αρχική σελίδα εισαγωγής Όταν ο χρήστης πληκτρολογεί το όνομα και τον κωδικό χρήστη παρατηρούμε πως στο πεδίο του κωδικού χρήστη ο κάθε χαρακτήρας που πληκτρολογεί ο χρήστης 108

110 αντιστοιχεί και σ ένα αστερίσκο (*), γνωστή τακτική γιατί έτσι προστατεύονται τα στοιχεία του χρήστη και δεν είναι ορατά από τρίτους σε περίπτωση που βρίσκετε σε δημόσιο χώρο. Αφού ο χρήστης εισάγει τα στοιχεία του τότε πρέπει να πατήσει το κουμπί είσοδος ή το enter από το πληκτρολόγιο, με το που πατάει ο χρήστης το κουμπί είσοδος ή το enter τότε λαμβάνει μέρος και η διαδικασία αυθεντικοποίησης του χρήστη. Στην περίπτωση που τα στοιχεία του δεν είναι καταχωρημένα στην βάση δεδομένων, τότε εμφανίζεται η παρακάτω σελίδα που μας ενημερώνει πως ο κωδικός ή το όνομα χρήστη είναι λάθος. Σελίδα, σε περίπτωση λάθος κωδικού ή ονόματος χρήστη Αν τα καινούρια στοιχεία που εισάγουμε είναι πάλι λάθος τότε η σελίδα θα είναι πάλι η ίδια, όσες φορές είναι τα στοιχεία λάθος ή δεν ταιριάζουν μ αυτά που είναι στην βάση δεδομένων τότε η σελίδα που θα εμφανίζεται θα είναι αυτή. Στην περίπτωση που τα στοιχεία είναι σωστά, δηλαδή αντιστοιχούν με τα στοιχεία που 109

111 είναι καταχωρημένα στην βάση δεδομένων τότε έχουμε εισέλθει με επιτυχία στο σύστημα και βλέπουμε την σελίδα Πίνακας Ελέγχου που στην ουσία αποτελεί το κεντρικό μενού της εφαρμογής ΚΕΝΤΡΙΚΟ ΜΕΝΟΥ (ΠΙΝΑΚΑΣ ΕΛΕΓΧΟΥ) Όπως μπορούμε να δούμε η εφαρμογή χωρίζεται σε τέσσερις κατηγορίες, η κάθε εικόνα αποτελεί και μια κατηγορία. Μπορούμε εύκολα να πλοηγηθούμε στο κεντρικό μενού, αν μετακινήσουμε τον κέρσορα πάνω από μια εικόνα τότε το περίγραμμα της εικόνας γίνεται άσπρο και μας εμφανίζεται ένα μήνυμα, το οποίο μας εξηγεί τι ακριβώς μπορούμε να κάνουμε αν την επιλέξουμε. Το βελάκι κάτω αριστερά βρίσκεται σε όλες τις σελίδες για να μας βοηθάει στην πλοήγηση μας, μας επιστρέφει στην προηγούμενη σελίδα που βρισκόμασταν κάνοντας κλικ πάνω του. Διαχείριση Κόμβων, Θυρών, Χρηστών, Μαύρη Λίστα, Log Κόμβου. 110

112 Προβολή στοιχείων και χαρακτηριστικών των κόμβων Αλλαγή χαρακτηριστικών ενός κόμβου με το πρωτόκολλο SNMP. Αναζήτηση 11.3 ΔΙΑΧΕΙΡΙΣΗ ΚΟΜΒΩΝ Πρόκειται ίσως για το σημαντικότερο κομμάτι της εργασίας. Μπορούμε να προσθέσουμε, να αφαιρέσουμε κόμβους, θύρες, χρήστες, να ονομάσουμε τις θύρες ενός κόμβου όπως εμείς θέλουμε, να προσθέτουμε και να αφαιρούμε χρήστες σε μια θύρα, να παρακολουθούμε τα αρχεία καταγραφής των κόμβων, την «μαύρη» λίστα του κάθε κόμβου και άλλα που θα συζητήσουμε και θα αναλύσουμε στην συνέχεια. Σελίδα Προβολής Κόμβων 111

113 Στην πρώτη σελίδα, όπως μπορούμε να δούμε από την παραπάνω εικόνα εμφανίζονται οι κόμβοι που έχουμε εισάγει εμείς στο σύστημα και είναι αποθηκευμένοι σε μια βάση δεδομένων, στην βάση nodes, στην εικόνα διακρίνουμε πέντε στήλες που περιγράφουν διάφορα χαρακτηριστικά του κόμβου. Η πρώτη στήλη περιέχει το όνομα του κόμβου, η δεύτερη την IP διεύθυνση του κόμβου, η τρίτη και η τέταρτη στήλη περιέχουν το Community Read και το Community Write αντίστοιχα. Η τελευταία στήλη, η στήλη Επιλογές έχει κάποια εργαλεία και κάποιους συνδέσμους προς άλλες σελίδες. Μπορούμε να προσθέσουμε έναν καινούριο κόμβο. Διαγραφή συγκεκριμένου κόμβου, εδώ θα πρέπει να τονίσουμε πως με την διαγραφή του κόμβου αυτόματα διαγράφονται και όλα τα στοιχεία που αφορούν τον κόμβο, θύρες κόμβου, χρήστες θύρας, μαύρη λίστα και log κόμβου, ο λόγος, να μην γεμίζουμε την βάση μας με δεδομένα που δεν μας χρειάζονται. Σελίδα με τις θύρες του συγκεκριμένου κόμβου που έχουμε εισάγει, μπορούμε και εκεί να προσθέσουμε, να αφαιρέσουμε και να δούμε πληροφορίες που αφορούν τις θύρες του κόμβου. Αρχείο καταγραφής (log file) κόμβου, καταγράφει IP, MAC διευθύνσεις, θύρα, πότε συνδέθηκαν, διάρκεια σύνδεσης. Μαύρη Λίστα (black list), καταχωρούνται σ αυτήν την λίστα όλοι όσοι βρίσκονται στον κόμβο, σε συγκεκριμένη θύρα και δεν τους έχουμε καταχωρήσει στο σύστημα. Αλλαγή στοιχείων του Κόμβου, όπως όνομα, IP διεύθυνση, Community read ή write. 112

114 ΠΡΟΣΘΗΚΗ ΝΕΟΥ ΚΟΜΒΟΥ με το συν (+), Αν θέλουμε να προσθέσουμε έναν νέο κόμβο, τότε κάνουμε κλικ στην εικόνα που μας πηγαίνει στην σελίδα προσθήκης νέου κόμβου. Σελίδα προσθήκης νέου κόμβου Στην αρχή της σελίδας προσθήκης νέου κόμβου βλέπουμε έναν πίνακα που έχει στοιχεία για τους / τον κόμβο που έχουν / έχει ήδη καταχωρηθεί, ο ρόλος του πίνακα αυτού είναι να ξέρουμε ποιους κόμβους του δικτύου μας έχουμε ήδη καταχωρήσει. Αν θέλουμε να καθαρίσουμε τα κελιά από τα στοιχεία που έχουμε ήδη γράψει, τότε πατάμε το κουμπί Καθαρισμός που είναι στην ουσία ένα Reset για το περιεχόμενο των κελιών. Αν πάλι θέλουμε να επιστρέψουμε στην προηγούμενη 113

115 σελίδα με τους κόμβους χωρίς να αποθηκεύσουμε τίποτα τότε απλά πατάμε στο βελάκι και επιστρέφουμε στην προηγούμενη σελίδα. Αφού πληκτρολογήσουμε τα στοιχεία του κόμβου που θέλουμε να καταχωρήσουμε και θέλουμε να προχωρήσουμε την διαδικασία πατάμε το κουμπί καταχώρηση, και προχωράμε στην επόμενη σελίδα όπου και λαμβάνει μέρος η διαδικασία της επεξεργασίας και του ελέγχου των στοιχείων που έχουμε καταχωρήσει. Η εφαρμογή για να επιβεβαιώσει ότι τα στοιχεία που καταχωρήσαμε είναι σωστά, εκτελεί κάποιες ενέργειες. Σε περίπτωση που μια τιμή η περισσότερες από αυτές που πληκτρολογήσαμε δεν τηρούν τα κριτήρια τότε πατώντας το κουμπί Καταχώρηση εμφανίζεται η ίδια ακριβώς σελίδα με αυτή της εισαγωγής των δεδομένων. Σελίδα Καταχώρησης Κόμβου Όπως παρατηρούμε από την πάνω εικόνα, τα πεδία στα οποία δεν καταχωρήσαμε έγκυρα στοιχεία ή τα αφήσαμε κενά, εμφανίζονται πάλι κενά και δίπλα εμφανίζεται ένα ενημερωτικό μήνυμα το οποίο μας περιγράφει το λάθος μας, κάνοντας κλικ σ αυτό ανοίγει ένα αναδυόμενο παράθυρο (pop up window) και μας 114

116 εξηγεί τι είδος δεδομένα πρέπει να εισάγουμε για να είναι έγκυρα τα συγκεκριμένα πεδία.. Pop up παράθυρο Πατάμε Κλείσιμο και κλείνει το παράθυρο, επίσης βλέπουμε πως τα στοιχεία τα οποία είναι έγκυρα δεν μπορούμε να τα αλλάξουμε, αν θέλουμε να αλλάξουμε και εκείνα τα στοιχεία τότε θα πρέπει να επιστρέψουμε στην σελίδα με τους κόμβους και να αρχίσουμε όλη την διαδικασία προσθήκης νέου κόμβου από την αρχή. Αν εμείς εξακολουθούμε να εισάγουμε τις ίδιες λάθος τιμές ή άλλες τιμές που είναι εξίσου λάθος τότε θα εμφανίζεται η ίδια σελίδα με τα αντίστοιχα μηνύματα λάθους για τις τιμές που είναι λάθος. Στην περίπτωση που όλα τα στοιχεία του κόμβου που πληκτρολογήσαμε είναι έγκυρα τότε πατώντας το κουμπί Καταχώρηση εμφανίζεται η σελίδα που ακολουθεί, την βλέπουμε στην παρακάτω εικόνα και μας ενημερώνει πως η καταχώρηση των στοιχείων μας ολοκληρώθηκε με επιτυχία, μπορούμε να δούμε τα στοιχεία του κόμβου που μόλις καταχωρήσαμε. 115

117 Σελίδα Επιτυχής Καταχώρησης Κόμβου Αν θέλουμε να καταχωρήσουμε και άλλον κόμβο τότε κάνουμε κλικ στο κουμπί Προσθήκη Νέου Κόμβου και ακολουθούμε την ίδια διαδικασία από την αρχή, ενώ για να επιστρέψουμε στην σελίδα με τους κόμβους πατάμε το βελάκι που μας γυρνάει στην σελίδα με τους κόμβους και βλέπουμε τα στοιχεία του κόμβου που μόλις καταχωρήσαμε. Ο Κόμβος που καταχωρήσαμε 116

118 Από την στιγμή που έχουμε καταχωρήσει έναν κόμβο, μπορούμε να διαχειριστούμε τις πόρτες του κόμβου, να τις ονομάσουμε, να προσθέσουμε χρήστες στις πόρτες του και ταυτόχρονα να παρακολουθούμε το αρχείο καταγραφής του και την μαύρη λίστα του κόμβου ΔΙΑΓΡΑΦΗ ΚΌΜΒΟΥ Αν θέλουμε να διαγράψουμε έναν κόμβο από την λίστα των κόμβων μας, τότε στην σελίδα προβολής των κόμβων πάμε στις επιλογές του συγκεκριμένου κόμβου που θέλουμε να διαγράψουμε και πατάμε τη διαγραφή κόμβου. Η σελίδα που ακολουθεί μας δείχνει τα στοιχεία του κόμβου που θέλουμε να διαγράψουμε και μας προειδοποιεί πως αν διαγράψουμε τον κόμβο, δεν θα διαγραφούν μόνο τα στοιχεία του κόμβου αλλά ταυτόχρονα θα διαγραφούν και όλα τα υπόλοιπα στοιχεία που έχουν σχέση με τον κόμβο και βρίσκονται καταχωρημένα στην βάση δεδομένων. Σελίδα Επιβεβαίωσης Διαγραφής Κόμβου 117

119 Πρόκειται, για τις πόρτες που έχουμε καταχωρήσει στον συγκεκριμένο κόμβο, τους χρήστες που βρίσκονται πάνω στις πόρτες, το αρχείο καταγραφής του κόμβου και τη μαύρη λίστα του. Τα συγκεκριμένα στοιχεία από την στιγμή που σβήσουμε τον κόμβο δεν μας χρησιμεύουν σε κάτι ούτε μπορούμε να τα επεξεργαστούμε για να πάρουμε κάποιες χρήσιμες πληροφορίες ή αποτελέσματα, επομένως αποτελούν «άχρηστα» δεδομένα και δεσμεύουν χωρίς λόγο χώρο στην βάση δεδομένων. Για τους παραπάνω λόγους με την διαγραφή του κόμβου διαγράφονται και όλα τα στοιχεία που έχουν σχέση με τον κόμβο. Πατώντας το κουμπί Επιβεβαίωση εμφανίζεται ένα παράθυρο διαλόγου που μας ρωτάει αν είμαστε σίγουροι πως θέλουμε να διαγράψουμε τον κόμβο και τα στοιχεία του, αν πατήσουμε την επιλογή OK τότε λαμβάνει μέρος η διαδικασία διαγραφής των στοιχείων. Παράθυρο Διαλόγου Επιβεβαίωση Διαγραφής Στην συνέχεια εμφανίζεται η αρχική σελίδα προβολής των καταχωρημένων κόμβων, μπορούμε να δούμε πως ο κόμβος έχει διαγραφεί από την λίστα και δεν υπάρχει. Αν στο παράθυρο διαλόγου πατήσουμε την επιλογή Ακύρωση τότε δεν σβήνεται κανένα στοιχείο και αν θέλουμε να επιστρέψουμε και να φύγουμε από την σελίδα διαγραφής κόμβων τότε πατάμε το βελάκι που βρίσκεται κάτω αριστερά. 118

120 ΤΡΟΠΟΠΟΙΗΣΗ ΣΤΟΙΧΕΙΩΝ ΚΟΜΒΟΥ Για να τροποποιήσουμε τα στοιχεία ενός κόμβου θα πρέπει να έχουμε καταχωρημένο τον κόμβο στο σύστημα. Το συγκεκριμένο χαρακτηριστικό το υλοποιήσαμε για τον λόγο ότι αν φανταστούμε πως έχουμε καταχωρημένο έναν κόμβο, και επάνω του έχουμε καταχωρημένα στοιχεία για τις πόρτες του κόμβου και καταχωρημένους χρήστες σε κάθε πόρτα. Αν θέλαμε να αλλάξουμε το domain name ή την IP διεύθυνση του κόμβου ή τα communities read, write ή και όλα τα παραπάνω, καθώς και συνδυασμούς τους, τότε θα έπρεπε να σβήσουμε τον κόμβο, γεγονός που σημαίνει πως θα σβηστούν ταυτόχρονα και όλες οι εγγραφές που συνδέονται με τον κόμβο και θα πρέπει να τα καταχωρίσουμε όλα τα στοιχεία από την αρχή. Για παράδειγμα, έχουμε καταχωρημένο τον κόμβο με όνομα node-3, IP , Community read ody και Community write noc και επειδή τα έχουμε αλλάξει αυτά τα στοιχεία σε επίπεδο συσκευής, πρέπει να τα αλλάξουμε και στο σύστημα. Από τις «Επιλογές» του node-3 κάνουμε κλικ στην αλλαγή στοιχείων κόμβου, δηλαδή στην εικόνα. Ανοίγει η παρακάτω σελίδα. Σελίδα Αλλαγής Στοιχείων Κόμβου 119

121 Στον πίνακα που βρίσκετε στο πάνω μέρος της σελίδας, βλέπουμε τα τωρινά στοιχεία της συσκευής. Έστω ότι εμείς αλλάξαμε το community read σε noc από ody και το community write σε ody από noc. Αφού δεν θέλουμε να αλλάξουμε το όνομα του κόμβου στο πεδίο Όνομα Κόμβου γράφουμε το ίδιο όνομα που ήδη είχε ο κόμβος, δηλαδή το node-3. το ίδιο και με την IP διεύθυνση που γράφουμε ακριβώς την ίδια, τώρα στο πεδίο Community Read γράφουμε την καινούρια τιμή, noc και στο πεδίο Community Write γράφουμε ody. Με το κουμπί Καθαρισμός αν θέλουμε καθαρίζουμε όλα τα πεδία από τα στοιχεία που έχουμε πληκτρολογήσει σ αυτά. Με το κουμπί Καταχώρηση προχωράμε την διαδικασία αλλαγής των στοιχείων ενός κόμβου. Αν όλα τα στοιχεία που δώσαμε είναι σωστά και έχει πραγματοποιηθεί η αλλαγή των στοιχείων με επιτυχία, εμφανίζεται μια σελίδα που μας ενημερώνει πως η αλλαγή των στοιχείων ολοκληρώθηκε με επιτυχία και μας δείχνει τα στοιχεία που μόλις αλλάξαμε. Επιτυχής Αλλαγή Στοιχείων 120

122 Στην περίπτωση όμως που κάποιο, περισσότερα ή όλα τα στοιχεία που δώσαμε είναι λάθος τότε ισχύουν όλα όσα έχουμε αναφέρει και παραπάνω στην καταχώρηση νέου κόμβου ΑΡΧΕΙΟ ΚΑΤΑΓΡΑΦΗΣ(LOG FILE) ΚΟΜΒΟΥ Για να δούμε τα περιεχόμενα του πάμε στον κόμβο που μας ενδιαφέρει και στις Επιλογές κάνουμε κλικ στο εικονίδιο παρακολούθησης (monitoring).. Πρόκειται για ένα εργαλείο Σελίδα Αρχείου Καταγραφής Σ αυτό το αρχείο καταγράφεται όποιος συνδέεται με τον κόμβο, από την στιγμή που πραγματοποιηθεί η σύνδεση και γίνει αντιληπτή από το σύστημα, τότε αποθηκεύονται κάποια στοιχεία του, όπως IP διεύθυνση (αν την έχουμε βρει), MAC διεύθυνση, συσκευή - κόμβος, όνομα της πόρτας που συνδέθηκε, ημερομηνία - ώρα έναρξης που πραγματοποιήθηκε η σύνδεση και ώρα διακοπής της σύνδεσης. Όπως παρατηρούμε από την εικόνα κάποιες διευθύνσεις MAC δεν έχουν αντιστοιχία IP o 121

123 λόγος είναι γιατί δεν μπορέσαμε να βρούμε τις IP διευθύνσεις που αντιστοιχούν στις συγκεκριμένες MAC. Στην στήλη Τέλος βλέπουμε πως ορισμένες εγγραφές έχουν συμπληρωμένη την ώρα και κάποιες άλλες όχι (αυτές με τις παύλες) που σημαίνει πως η σύνδεση τους είναι ακόμα ενεργή. Ενώ οι εγγραφές που έχουν συμπληρωμένη την ώρα σημαίνει πως έχουν σταματήσει να ακούνε (listening) σ αυτή τη θύρα του κόμβου. Αν ο ίδιος (με ίδια IP και MAC) πραγματοποιήσει μια καινούρια σύνδεση στην ίδια πόρτα του ίδιου κόμβου τότε τα παλαιά του στοιχεία διαγράφονται από την βάση δεδομένων και αποθηκεύονται τα καινούρια. Για παράδειγμα ο χρήστης με IP , MAC 0018.F3FC.F744 φαίνεται πως συνδέθηκε με τον κόμβο node 3 στην θύρα 3 στις 17/4/2007 και ώρα 10:30:58 και η σύνδεση του διακόπηκε στις 11:32:26, ενώ ο χρήστης με IP διεύθυνση , MAC 000D E6 φαίνεται πως συνδέθηκε με τον κόμβο node 3 στην θύρα 1 στις 17/4/2007 και ώρα 11:32:26 και η σύνδεση του δεν έχει σταματήσει ακόμα. Από την παραπάνω εικόνα αν προσέξουμε την τελευταία στήλη, δίπλα από την στήλη Τέλος, στην πρώτη εγγραφή με χρωματιστά γράμματα βλέπουμε την λέξη «Περισσότερα», αν κάνουμε κλικ πάνω σ αυτήν τότε θα μας ανοίξει μια άλλη σελίδα, η οποία θα μοιάζει με την παρακάτω: Σελίδα με Πληροφορίες Χρήστη Σ αυτή την σελίδα περιέχονται κάποιες πληροφορίες οι οποίες αφορούν τον χρήστη, η συγκεκριμένη δυνατότητα δίδεται μόνο για τους χρήστες, τους οποίους έχουμε καταχωρήσει πιο πριν στο σύστημα και μας δίνουν κάποια περισσότερα στοιχεία γι αυτούς. Αυτή την επιλογή θα την συναντήσουμε μόνο στο αρχείο καταγραφής, στην μαύρη λίστα και στην προβολή στοιχείων κόμβων που θα δούμε στην συνέχεια. 122

124 ΜΑΥΡΗ ΛΙΣΤΑ (BLACK LIST) Για να δούμε τα περιεχόμενα της λίστας πάμε στον κόμβο που μας ενδιαφέρει και στις Επιλογές κάνουμε κλικ στο εικονίδιο. Πρόκειται για ένα εργαλείο παρακολούθησης (monitoring), όπως και το αρχείο καταγραφής. Σελίδα Προβολής Μαύρης Λίστας Σ αυτή την λίστα καταγράφονται όλοι όσοι είναι συνδεδεμένοι στον κόμβο, δεν είναι καταχωρημένοι στο σύστημα, έχουν αλλάξει IP διεύθυνση ή έχουν παραπάνω από μια IP. Όταν κάποιος μπαίνει στην μαύρη λίστα τότε καταγράφονται ορισμένα στοιχεία του, όπως IP διεύθυνση (αν την έχουμε βρει), MAC διεύθυνση, συσκευή - κόμβος, όνομα της πόρτας που συνδέθηκε, ημερομηνία ώρα που καταχωρήθηκε στην μαύρη λίστα. Την ονομάσαμε μαύρη λίστα, γιατί όσοι βρίσκονται σ αυτή την λίστα αποτελούν στην ουσία μη εξουσιοδοτημένους χρήστες, ή χρήστες που δεν ακολουθούν τους κανόνες. Για παράδειγμα ο χρήστης με IP και MAC CDC.7F79 που βρίσκεται στον κόμβο, node 3, στην θύρα 23 και καταχωρήθηκε στην λίστα στις 16/4/2007 και ώρα 15:15:09. Όπως στο αρχείο καταγραφής έτσι και στην μαύρη λίστα μας δίνεται η δυνατότητα αν προηγουμένως έχουμε καταχωρήσει κάποιον χρήστη και βρεθεί στην μαύρη λίστα να μπορούμε να δούμε κάποιες περισσότερες πληροφορίες που αφορούν τον χρήστη αυτόν. 123

125 11.4 ΠΟΡΤΕΣ(ΘΥΡΕΣ) ΚΟΜΒΟΥ Για να μπορούμε να διαχειριστούμε τις θύρες ενός κόμβου, όπως προαναφέραμε θα πρέπει να έχουμε καταχωρήσει προηγουμένως τον κόμβο του οποίου τις πόρτες θέλουμε να διαχειριστούμε. Για να μεταβούμε στην σελίδα με τις θύρες ενός κόμβου και ενώ βρισκόμαστε στην σελίδα που βλέπουμε τους κόμβους που έχουμε καταχωρίσει πηγαίνουμε στις επιλογές και κάνουμε κλικ στις πόρτες κόμβου, δηλαδή στην εικόνα, η σελίδα που θα δούμε θα είναι σαν την παρακάτω. Σελίδα προβολής καταχωρημένων θυρών κόμβου Ο πίνακας πάνω μας δείχνει σε ποιόν κόμβο βρισκόμαστε και ποια είναι η IP διεύθυνση του, συγκεκριμένα βρισκόμαστε στον node-3 με IP διεύθυνση , πρόκειται για τον κόμβο που καταχωρήσαμε στο προηγούμενο παράδειγμα. Παρατηρούμε πως δεν είναι καταχωρημένη καμία πόρτα στον κόμβο. Η εξήγηση των εικόνων και το τι ακριβώς κάνουν ακολουθεί: Μπορούμε να προσθέσουμε νέα πόρτα στον κόμβο. Διαγραφή συγκεκριμένης πόρτας κόμβου, με την διαγραφή της πόρτας του κόμβου αυτόματα διαγράφονται και όλα τα στοιχεία που αφορούν την πόρτα του κόμβο, δηλαδή τους χρήστες που βρίσκονται στην θύρα. 124

126 Διαγραφή όλων των θυρών του συγκεκριμένου κόμβου ταυτόχρονα, γεγονός που συνεπάγεται και διαγραφή των χρηστών που βρίσκονται πάνω στις θύρες αυτές.. Αλλαγή περιγραφής της θύρας. Χρήστες που βρίσκονται καταχωρημένοι στην συγκεκριμένη πόρτα, διαχείριση χρηστών της θύρας ΠΡΟΣΘΗΚΗ ΘΥΡΑΣ Για να προσθέσουμε μια πόρτα θα πατήσουμε στο κουμπί όπως κάναμε και για να προσθέσουμε έναν νέο κόμβο. Η σελίδα που θα εμφανιστεί θα είναι η ακόλουθη: Σελίδα Προσθήκης Περιγραφής Πόρτας 125

127 Μπορούμε από τον πίνακα να δούμε σε ποιόν κόμβο βρισκόμαστε, για να καταχωρήσουμε την περιγραφή μια πόρτας ενός κόμβου, θα πρέπει να ξέρουμε το όνομα της πόρτας της συσκευής και η περιγραφή δεν θα πρέπει να ξεπερνάει τους τριάντα πέντε (35) χαρακτήρες, συνήθως το όνομα της πόρτας ξεκινάει από το ένα (1) για την πρώτη και αυξάνεται κατά ένα για τις επόμενες. Αν πατήσουμε το κουμπί Καταχώρηση και έχουμε τα στοιχεία που φαίνονται στην παραπάνω εικόνα τότε θα μας εμφανιστεί ή ίδια σελίδα με κενά τα πεδία που έχουμε το λάθος. Δεν μπορούμε να καταχωρήσουμε μια πόρτα που ήδη είναι καταχωρημένη ή η περιγραφή της είναι ίδια με κάποια που είναι ήδη καταχωρημένη. Αν τώρα κάνουμε κλικ στα μηνύματα που εμφανίζονται στα δεξιά κάθε πεδίου, θα μας ανοίξει ένα αναδυόμενο παράθυρο, το οποίο παίζει συμβουλευτικό ρόλο και απλά μας εξηγεί τι ακριβώς στοιχεία πρέπει να εισάγουμε στο πεδίο αυτό. Αναδυόμενο Παράθυρο Πατάμε Κλείσιμο για να κλείσει το αναδυόμενο παράθυρο, όταν εισάγουμε τα στοιχεία στα πεδία και πατάμε το κουμπί Καταχώρηση, τότε γίνετε έλεγχος των στοιχείων αυτών. 126

128 Αν τα στοιχεία δεν είναι σωστά τότε θα εμφανίζεται η ίδια σελίδα μέχρι τα στοιχεία που θα εισάγουμε να είναι σωστά και να καταχωρηθούν στην βάση. Αν καταχωρηθούν τότε θα μας εμφανιστεί η παρακάτω σελίδα η οποία μας δείχνει τα στοιχεία που μόλις καταχωρήσαμε. Αν θέλουμε να καταχωρήσουμε νέα θύρα τότε κάνουμε κλικ στο κουμπί Προσθήκη Νέας Πόρτας, και ακολουθούμε την ίδια διαδικασία. Σελίδα Επιτυχής Καταχώρησης Περιγραφής Πόρτας Αν δεν θέλουμε να καταχωρήσουμε νέα πόρτα, τότε κάνουμε κλικ στο βελάκι κάτω αριστερά και επιστρέφουμε στην σελίδα με τις καταχωρημένες πόρτες που κόμβου που βρισκόμαστε. Πριν να καταχωρήσουμε κάποια θύρα στον κόμβο, αν πάμε από τον πίνακα ελέγχου (κεντρικό μενού) στην επιλογή Προβολή Στοιχείων Κόμβου και δώσουμε τα στοιχεία του κόμβου που μας ενδιαφέρει, θα δούμε τα στοιχεία του κόμβου. Παραδείγματος χάριν, αν δώσουμε τα στοιχεία του κόμβου 3 (node-3 ) που βρισκόμαστε τότε θα δούμε πως θα μας εμφανίσει έναν πίνακα με διάφορες αναλυτικές πληροφορίες για τις θύρες του κόμβου 3, αυτό που μας ενδιαφέρει εμάς στο συγκεκριμένο σημείο είναι η στήλη που ονομάζεται Περιγραφή. Παρατηρούμε 127

129 και από την εικόνα που ακολουθεί πως από την θύρα ένα (1) ως οχτώ (8) που βλέπουμε να περιέχει την τιμή Δεν έχει οριστεί. Αν όμως καταχωρήσουμε μια θύρα, όπως κάναμε στο προηγούμενο παράδειγμα στην πόρτα με όνομα ένα (1) που καταχωρήσαμε και δώσαμε την περιγραφή odysseas και στην συνέχεια πάμε Προβολή Στοιχείων Κόμβου και δώσουμε τα στοιχεία του κόμβου 3 τότε θα δούμε πως: Στην περιγραφή της πόρτας ένα (1) σαν τιμή έχει πάρει την τιμή που καταχωρίσαμε εμείς, δηλαδή την odysseas από την βάση, συγκεκριμένα από τον πίνακα ports. 128

130 ΔΙΑΓΡΑΦΗ ΠΟΡΤΑΣ (ΘΥΡΑΣ) Για να διαγράψουμε μια πόρτα από τον κόμβο μας, πάμε στην πόρτα που θέλουμε να διαγράψουμε και κάνουμε κλικ στην εικόνα. Η σελίδα που εμφανίζεται, είναι η σελίδα επιβεβαίωσης διαγραφής της πόρτας. Μας ενημερώνει με το γνωστό πίνακα ότι πρόκειται στην συγκεκριμένη περίπτωση να διαγράψουμε την θύρα του κόμβου 3 (node-3), με όνομα πόρτας ένα (1) και περιγραφή πόρτας odysseas. Επίσης, μας προειδοποιεί πως αν διαγράψουμε την πόρτα αυτόματα θα διαγραφούν και οι χρήστες που είναι καταχωρημένοι στην πόρτα. Σελίδα Διαγραφής Θύρας Αν πατήσουμε το κουμπί Επιβεβαίωση τότε εμφανίζεται ένα παράθυρο διαλόγου το οποίο μας ρωτάει αν είμαστε σίγουροι πως θέλουμε να διαγράψουμε τα στοιχεία της πόρτας: 129

131 Πατώντας το ΟΚ διαγράφεται η πόρτα και οι χρήστες που ήταν καταχωρημένοι στην πόρτα αυτή. Αν το μετανιώσουμε και δεν θέλουμε να σβήσουμε την πόρτα, πατάμε την επιλογή Ακύρωση. Αφού σβηστεί η πόρτα επιστρέφουμε στην σελίδα προβολής των θυρών και βλέπουμε πως η πόρτα που μόλις σβήσαμε δεν βρίσκεται πλέον στον πίνακα των καταχωρημένων θυρών του κόμβου μας. Αν τώρα πάμε στην Προβολή Στοιχείων Κόμβου και δώσουμε τα στοιχεία του κόμβου 3 τότε θα δούμε πως η περιγραφή της πόρτας που είχαμε δώσει έχει σβηστεί και την θέση της έχει πάρει η τιμή δεν έχει οριστεί που δίνεται εξ ορισμού σ όσους δεν έχουν περιγραφή ΔΙΑΓΡΑΦΗ ΟΛΩΝ ΤΩΝ ΘΥΡΩΝ Ας σκεφτούμε πως έχουμε καταχωρημένες όλες τις πόρτες ενός κόμβους που μπορεί να είναι και θέλουμε να τις σβήσουμε όλες, για να κερδίσουμε χρόνο, αναπτύξαμε και την επιλογή διαγραφής όλων των θυρών ταυτόχρονα. Το μόνο που πρέπει να κάνει κάποιος αν θέλει να σβήσει όλες τις πόρτες ενός κόμβου είναι ένα κλικ στην εικόνα. Κάνοντας κλικ βλέπουμε την σελίδα επιβεβαίωσης διαγραφής, η οποία είναι ακριβώς ίδια με αυτή της διαγραφής μιας πόρτας, με την μόνη διαφορά πως στον πίνακα βλέπουμε όλες τις πόρτες που είναι καταχωρημένες και είναι για σβήσιμο. Από την παραπάνω εικόνα διαπιστώνουμε πως θα σβηστούν οι θύρες με όνομα 1 και 2. Αν είχαμε περισσότερες καταχωρημένες θύρες τότε θα μας τις εμφάνιζε όλες εδώ. Επίσης μας προειδοποιεί πως αν σβήσουμε τις θύρες, θα διαγραφούν και οι αντίστοιχοι χρήστες που υπήρχαν σε κάθε θύρα. Στην συνέχεια πατάμε το κουμπί Επιβεβαίωση και όπως και στην διαγραφή μια θύρας έτσι και 130

132 εδώ εμφανίζεται το παράθυρο διαλόγου το οποίο μας ρωτάει αν είμαστε σίγουροι πως θέλουμε να διαγράψουμε όλες τις θύρες του κόμβου. Πατάμε το OK και η διαδικασία διαγραφής ολοκληρώνεται ενώ για να διακόψουμε την διαδικασία και να μην σβήσουμε όλες τις θύρες στο παράθυρο διαλόγου επιλέγουμε την Ακύρωση ΤΡΟΠΟΠΟΙΗΣΗ ΠΕΡΙΓΡΑΦΗΣ ΘΥΡΑΣ Έστω ότι έχουμε στον κόμβο 3 καταχωρημένη την πόρτα 1 και η περιγραφή που της έχουμε δώσει είναι ODY και θέλουμε να αλλάξουμε την περιγραφή αυτή και να της δώσουμε την τιμή Nick, μπορούσαμε να το κάνουμε αυτό αν διαγράφαμε την πόρτα με τα παλαιά στοιχεία και καταχωρούσαμε από την αρχή νέα θύρα με τα καινούρια στοιχεία. Υπάρχει όμως πιο εύκολος τρόπος από τον παραπάνω, είναι η τροποποίηση της περιγραφής της πόρτας, το μόνο που χρειάζεται να κάνουμε είναι να πατήσουμε στην εικόνα της πόρτας που θέλουμε να αλλάξουμε την περιγραφή. Η σελίδα που θα εμφανιστεί είναι η παρακάτω: 131

133 Γράφουμε την καινούρια τιμή η οποία είναι η Nick και γίνεται ο έλεγχος, ελέγχει αν η καινούρια τιμή είναι μικρότερη από 35 χαρακτήρες. Αν δεν είναι τότε εμφανίζεται η ίδια σελίδα με κενό το πεδίο και ενημερωτικό μήνυμα από δίπλα. Αν η καινούρια τιμή είναι μικρότερη από 35 χαρακτήρες τότε η σελίδα που εμφανίζεται μας ενημερώνει πως η αλλαγή ολοκληρώθηκε με επιτυχία ΧΡΗΣΤΕΣ ΘΥΡΑΣ Όπως σε κάθε κόμβο μπορούμε να καταχωρήσουμε στην συνέχεια τις πόρτες του έτσι και σε κάθε πόρτα μπορούμε να καταχωρήσουμε τους χρήστες που θα βρίσκονται στην πόρτα αυτή. Οι χρήστες μπορούν να είναι περισσότεροι από ένας σε κάθε πόρτα. Για να δούμε τους χρήστες μιας θύρας ή να τους διαχειριστούμε πηγαίνουμε στην θύρα που μας ενδιαφέρει και κάνουμε κλικ στην εικόνα. Εμφανίζεται η σελίδα των χρηστών: 132

134 Μπορούμε να δούμε σε ποιόν κόμβο βρισκόμαστε, σε ποια πόρτα και ποια είναι η περιγραφή της πόρτας. Στον κάτω πίνακα βρίσκονται οι πληροφορίες του χρήστη, οι οποίες είναι: Όνομα Χρήστη, IP διεύθυνση χρήστη, MAC διεύθυνση, τηλέφωνο, τοποθεσία και black_list. Οι επιλογές διαχείρισης χρηστών που έχουμε είναι: Προσθήκη νέου χρήστη στην πόρτα. Διαγραφή συγκεκριμένου χρήστη πόρτας Διαγραφή όλων των χρηστών της θύρας ταυτόχρονα ΠΡΟΣΘΗΚΗ ΧΡΗΣΤΗ Για να προσθέσουμε νέο χρήστη, ενώ είμαστε στην σελίδα προβολής των χρηστών πατάμε την προσθήκη νέου χρήστη,. Η σελίδα που βλέπουμε είναι: 133

135 Τα στοιχεία του χρήστη που πρέπει να καταχωρήσουμε είναι, όνομα Η/Υ ή αλλιώς όνομα χρήστη, θα πρέπει να μην ξεπερνάει τους 30 χαρακτήρες για να είναι έγκυρη η τιμή του. IP διεύθυνση χρήστη, θα πρέπει να υπακούει στους γνωστούς κανόνες που διέπουν τις IP διευθύνσεις, δηλαδή από και 4 μέρη χωρισμένα με τελείες μεταξύ τους. MAC διεύθυνση, η MAC διεύθυνση θα πρέπει να έχει την μορφή XXXX.XXXX.XXXX, όπου Χ μπορεί να είναι οποιοδήποτε αλφαριθμητικό, αλλά θα πρέπει να είναι 4ψηφία χωρισμένα με τελείες μεταξύ τους. Όσων αφορά το τηλέφωνο θα πρέπει να μην ξεπερνάει τα 10 ψηφία. Η τοποθεσία για να είναι έγκυρη θα πρέπει να μην ξεπερνάει τους 35 χαρακτήρες. Εννοείται πως οι τιμές των παραπάνω στοιχείων κατά την διάρκεια της καταχώρησης θα πρέπει να μην είναι κενές. Ο ρόλος του check box όχι στην black list έχει να κάνει με την black list. Αν το αφήσουμε έτσι και δεν το «τσεκάρουμε», τότε θα γίνεται έλεγχος του συγκεκριμένου χρήστη για να μπει στην μαύρη λίστα ή όχι. Ενώ αν το «τσεκάρουμε» τότε ο χρήστης που καταχωρούμε και έχει αυτά τα στοιχεία δεν πρόκειται ποτέ να μπει στην μαύρη λίστα. Αυτό μας εξυπηρετεί αν ο χρήστης που καταχωρούμε είναι ένα switch ή ένα hub τότε θα έχει μια IP και πολλές MAC διευθύνσεις που κανονικά θα έπρεπε να μπει στην μαύρη λίστα. Αν καταχωρήσουμε στοιχεία και δεν τηρούν τις παραπάνω προδιαγραφές τότε θα εμφανιστεί η ίδια σελίδα και θα μας ειδοποιεί που έχουμε λάθος και δίπλα θα έχει το ενημερωτικό μήνυμα που περιέχει πληροφορίες και βοήθεια για να μπορέσουμε να εισάγουμε έγκυρες τιμές στα πεδία. Αν τα στοιχεία που δώσουμε είναι όλα έγκυρα τότε θα εμφανιστεί η σελίδα που θα μας ενημερώνει για την επιτυχή καταχώρηση των στοιχείων. 134

136 Αν θέλουμε να προσθέσουμε νέο χρήστη τότε πατάμε στο κουμπί Προσθήκη Νέου Χρήστη, αλλιώς επιστρέφουμε στην σελίδα με τους χρήστες που φαίνεται η καινούρια καταχώρηση που μόλις έχουμε κάνει ΔΙΑΓΡΑΦΗ ΧΡΗΣΤΗ Αν θέλουμε να διαγράψουμε έναν χρήστη από τους χρηστές της θύρας τότε πηγαίνουμε στον χρήστη που θέλουμε να διαγράψουμε και πατάμε το κουμπί της διαγραφής του χρήστη. Έστω ότι θέλουμε να διαγράψουμε τον προηγούμενο χρήστη που έχουμε καταχωρήσει, πατάμε το κουμπί διαγραφής, στην συνέχεια ανοίγει η σελίδα επιβεβαίωσης, πατώντας το κουμπί επιβεβαίωσης εμφανίζεται το παράθυρο διαλόγου το οποίο μας ρωτάει αν είμαστε σίγουροι πως θέλουμε την διαγραφή του χρήστη. Αν πατήσουμε ΟΚ τότε διαγράφεται ο χρήστης και επιστρέφουμε στην σελίδα προβολής των χρηστών ΔΙΑΓΡΑΦΗ ΟΛΩΝ ΤΩΝ ΧΡΗΣΤΩΝ Για να διαγράψουμε όλους τους χρήστες που βρίσκονται πάνω στην πόρτα ακολουθούμε ακριβώς την ίδια διαδικασία μ αυτή της διαγραφής χρήστη μόνο που αντί να πατήσουμε το κουμπί διαγραφής ενός χρήστη. Πατάμε το κουμπί διαγραφής όλων των χρηστών το οποίο είναι. 135

137 11.6 ΜΑΥΡΗ ΛΙΣΤΑ ΚΑΙ ΧΡΗΣΤΕΣ Όλοι όσοι είναι καταχωρημένοι σαν χρήστες στο σύστημα δεν καταχωρούνται στην μαύρη λίστα. Έστω ότι μαύρη λίστα του κόμβου 3 (node-3) είναι η παρακάτω: Παρατηρούμε κάποιους χρήστες που είναι στην μαύρη λίστα, αυτός που πρέπει να θυμόμαστε είναι ο πρώτος, δηλαδή που έχει IP Πάμε στον κόμβο 3 και στους χρήστες της θύρας 1 και καταχωρούμε έναν χρήστη με στοιχεία: Όταν περάσει το χρονικό διάστημα και τρέξει το daemon black_lister.tcl και πάμε πάλι στην μαύρη λίστα παρατηρούμε πως ο χρήστης που μόλις καταχωρήσαμε δεν βρίσκετε πλέον στην μαύρη λίστα. 136

138 Ο χρήστης που καταχωρήσαμε βλέπουμε πως έχει μετακινηθεί από την μαύρη λίστα. Αν κατά την καταχώρηση επιλέγαμε το όχι στην black list τότε ο χρήστης δεν θα έμπαινε ποτέ στην μαύρη λίστα, αλλά όπως έχουμε αναφέρει και παραπάνω αυτό εξυπηρετεί σε άλλες περιπτώσεις. Αν είχαμε καταχωρήσει τον χρήστη με τα ίδια στοιχεία σε άλλη θύρα του κόμβου και αυτός βρισκόταν σε διαφορετική από αυτή που τον είχαμε καταχωρήσει τότε θα έμπαινε στην μαύρη λίστα ΠΡΟΒΟΛΗ ΣΤΟΙΧΕΙΩΝ ΚΟΜΒΩΝ Πρόκειται περισσότερο για ένα εργαλείο παρακολούθησης (monitoring) και λιγότερο διαχείρισης (management). Για να χρησιμοποιήσουμε το συγκεκριμένο εργαλείο από τον πίνακα ελέγχου (κεντρικό μενού) θα επιλέξουμε την προβολή στοιχείων κόμβων, θα δούμε την παρακάτω σελίδα: 137

139 Όπως παρατηρούμε, θα πρέπει να δώσουμε τα στοιχεία του κόμβου που μας ενδιαφέρει για να συνδεθούμε και να δούμε τα στοιχεία του. Όπου διεύθυνση ή όνομα εισάγουμε το domain name της συσκευής (αν έχει) ή την IP διεύθυνση του κόμβου. Όπου Community θα δώσουμε το Community read ή write, εξαρτάται από το τι ακριβώς θέλουμε να κάνουμε. Αν δώσουμε IP ή όνομα κόμβου που δεν υπάρχει στο δίκτυο τότε η σελίδα θα είναι κάπως έτσι: Παρατηρούμε πως το μήνυμα με τα κόκκινα γράμματα λέει unknown IP hostname nod-3, που σημαίνει πως η διεύθυνση IP ή το όνομα που δώσαμε δεν μπορεί να βρεθεί, πιθανώς γιατί δεν υπάρχει αντίστοιχη συσκευή στο δίκτυο μ αυτό το όνομα ή την διεύθυνση. Αν για διεύθυνση ή όνομα δώσουμε μη έγκυρα στοιχεία, όπως για παράδειγμα IP , τότε θα εμφανιστεί ανάλογο μήνυμα με το προηγούμενο, αλλά αντί για το μήνυμα unknown IP hostname , θα εμφανιστεί το μήνυμα illegal IP address or name " ", που σημαίνει ότι η τιμή που δώσαμε είναι μη έγκυρη IP διεύθυνση ή όνομα. 138

140 Στην περίπτωση που για όνομα ή διεύθυνση δώσουμε έγκυρα στοιχεία και υπάρχει η αντίστοιχη συσκευή στο δίκτυο και στο community δώσουμε λάθος τιμή τότε το μήνυμα που θα εμφανιστεί θα είναι το noresponse, το συγκεκριμένο μήνυμα μας το εμφανίζει επίσης και στην περίπτωση που υπάρχει συσκευή στο δίκτυο με IP ή όνομα που δώσαμε, αλλά δεν έχει ενεργοποιημένο το SΝMP. 139

141 Αν δώσουμε στοιχεία έγκυρα διεύθυνσης και community και υπάρχει ο αντίστοιχος κόμβος στο δίκτυο τότε θα πραγματοποιηθεί η σύνδεση μέσω SNMP και θα πάρουμε τα στοιχεία του κόμβου. Η σελίδα που θα δούμε θα είναι σαν την ακόλουθη: Σελίδα Προβολής Στοιχείων Κόμβου Μπορούμε να πούμε πως πρόκειται για το web interface της συσκευής. Σαν τίτλος της σελίδας είναι ο κατασκευαστής και το μοντέλο της συσκευής. Στην παραπάνω εικόνα ο κατασκευαστής της συσκευής είναι η Cisco Systems και το μοντέλο είναι το Catalyst Κάτω από τον τίτλο, αριστερά, παρατηρούμε ένα μήνυμα που λέει ότι «Αυτή η σελίδα θα ανανεώνεται κάθε 90 δευτερόλεπτα», πράγματι αυτή η σελίδα ανανεώνεται κάθε 90 δευτερόλεπτα, για να ανανεώνονται και τα στοιχεία του κόμβου. Δεξιά από αυτό το μήνυμα, βλέπουμε το SystemUpTime, που μας δείχνει το χρονικό διάστημα που ο κόμβος είναι «πάνω» (δηλαδή λειτουργεί), εδώ βλέπουμε πως ο κόμβος «τρέχει» ασταμάτητα 108 ημέρες, 16 ώρες, 42 λεπτά και 16 δευτερόλεπτα. Ακριβώς από κάτω βλέπουμε τον επεξεργαστή, δηλαδή πόσο τις εκατό (%) του επεξεργαστή χρησιμοποιείται αυτήν την στιγμή, στον συγκεκριμένο η τιμή του είναι κενή γιατί η συγκεκριμένη δυνατότητα δεν υποστηρίζεται από την συσκευή. Ακολουθεί ένας πίνακας ο οποίος αποτελείται από τρεις στήλες, η πρώτη στήλη περιέχει πληροφορίες επικοινωνίας, δηλαδή ποιος είναι ο υπεύθυνος επικοινωνίας σε 140

142 περίπτωση που θέλουμε να επικοινωνήσουμε μαζί του. Στην δεύτερη είναι το όνομα του κόμβου και στην τελευταία η τοποθεσία που βρίσκεται ο κόμβος αυτός. Ακολουθεί μια μικρογραφία του κόμβου, που περιέχει την περιγραφή όλων των πόρτων, την κατάσταση τους και από κάτω το όνομα τους. Πάνω δεξιά έχουμε την IP διεύθυνση του κόμβου και κάτω το όνομα του κόμβου. Η κατάσταση της πόρτας απεικονίζεται με χρώμα, το πράσινο σημαίνει πως η κατάσταση της θύρας από τον διαχειριστή έχει οριστεί up (πάνω) και η τωρινή κατάσταση είναι και αυτή up. Το κόκκινο μας δείχνει πως η κατάσταση της θύρας από τον διαχειριστή έχει οριστεί να είναι down (κάτω) και η τωρινή κατάσταση είναι up ή είναι down από τον διαχειριστή και η τωρινή της κατάσταση είναι down και αυτή. Με το άσπρο, όταν από τον διαχειριστή η κατάσταση έχει οριστεί να είναι up και η τωρινή κατάσταση της είναι down. Άλλωστε κάτω από τον πίνακα έχουμε ένα υπόμνημα που μας αναλύει όλες τις περιπτώσεις και μπορούμε να το συμβουλευτούμε οποιαδήποτε στιγμή το θελήσουμε. Ακολουθεί ο πίνακας, ο οποίος περιέχει αναλυτικές πληροφορίες για την κάθε θύρα. Πίνακας με Αναλυτικές Πληροφορίες για την Κάθε Θύρα Οι πληροφορίες που περιέχει ο πίνακας αυτός είναι: όνομα της πόρτας, το οποίο όνομα έχει αποδοθεί στην πόρτα από τον διαχειριστή, περιγραφή της πόρτας, όταν καταχωρούμε κάποια πόρτα στο σύστημα το όνομα που δίνουμε στην πόρτα 141

143 αυτή είναι και η περιγραφή της, όσες πόρτες στην περιγραφή έχουν την τιμή «Δεν έχει οριστεί» σημαίνει ότι δεν είναι καταχωρημένες, στην διπλανή στήλη βλέπουμε την τωρινή κατάσταση της πόρτας. Στην στήλη MAC διευθύνσεις είναι όλες οι MAC που ακούν (listening) στην θύρα και δίπλα ακριβώς η IP που αντιστοιχεί στην MAC. Ακριβώς δίπλα έχουμε το bandwidth των εισερχομένων και εξερχόμενων δεδομένων της θύρας. Για παράδειγμα στην θύρα 1 όπως μπορούμε να δούμε το bandwidth των εξερχόμενων δεδομένων της θύρας είναι Mbps, το οποίο το υπολογίζουμε bytes και μετά από χρονικό διάστημα 11 δευτερολέπτων bytes. Στις MAC διευθύνσεις παρατηρούμε πως υπάρχουν κάποιες διευθύνσεις οι οποίες είναι χρωματιστές, αν κάνουμε κλικ σ αυτές τότε εμφανίζεται μια σελίδα με πληροφορίες που αφορούν τον χρήστη, για να έχουμε την δυνατότητα αυτή θα πρέπει προηγουμένως να έχουμε καταχωρήσει τον χρήστη και τα στοιχεία του. Σε κάποιες θύρες βλέπουμε πως στις στήλες MAC IP διευθύνσεις έχουνε παύλες (--), που σημαίνει πως την συγκεκριμένη χρονική στιγμή δεν υπάρχει κάποιος πάνω στην θύρα. Επίσης, παρατηρούμε πως στην κατάσταση της θύρας το up και down είναι χρωματιστό. Κάνοντας κλικ για παράδειγμα στο up της πρώτης θύρας, με όνομα 1 και περιγραφή dsf, μπορούμε να αλλάξουμε την κατάσταση της θύρας, δηλαδή αν είναι up να την κάνουμε down και το αντίστροφο. Αλλαγή Κατάστασης της Θύρας Και πατώντας το κουμπί «Επιστροφή» μπορούμε να δούμε πως η κατάσταση της θύρας από up που ήταν, άλλαξε και έγινε down. 142

144 Αυτό που θα πρέπει να προσέξουμε είναι πως αν θέλουμε να κάνουμε μια τέτοια αλλαγή, τότε το Community που δώσαμε για να συνδεθούμε με την συσκευή θα πρέπει να είναι το Community write και όχι το Community read, αν δώσουμε το Community read τότε η αλλαγή δεν πραγματοποιηθεί και η σελίδα που θα δούμε θα είναι η παρακάτω: Αν πατήσουμε στην επιστροφή επιστρέφουμε στην σελίδα που δίνουμε τα στοιχεία για να πραγματοποιηθεί η σύνδεση. Όπως προαναφέραμε η σελίδα προβολής στοιχείων κόμβων ανανεώνεται κάθε 90 δευτερόλεπτα, αν θέλουμε να σταματήσει να ανανεώνεται σ αυτό το χρονικό διάστημα τότε πάμε στην επιλογή πάνω αριστερά και πατάμε στο Stop AutoRefresh. Η σελίδα που θα μας εμφανίσει θα είναι η ίδια με την μόνη διαφορά ότι η σελίδα δεν θα ανανεώνεται. Την θέση του μηνύματος αυτή η σελίδα θα ανανεώνεται κάθε 90 δευτερόλεπτα Stop AutoRefresh την πήραν το Refresh και το Start AutoRefresh. Αν πατήσουμε το Refresh τότε η σελίδα και τα στοιχεία της κάθε πόρτας θα ανανεωθούν για μια φορά μόνο. Ενώ αν επιλέξουμε το Start AutoRefresh τότε η σελίδα θα αρχίσει να ανανεώνεται κάθε 90 δευτερόλεπτα, δηλαδή θα επιστρέψουμε στην προηγούμενη κατάσταση. 143

145 11.8 ΑΛΛΑΓΗ ΧΑΡΑΚΤΗΡΙΣΤΙΚΩΝ ΜΕ ΤΟ ΠΡΩΤΟΚΟΛΛΟ SNMP Αν θέλουμε να αλλάξουμε κάποια χαρακτηριστικά ενός κόμβου, όπως την επικοινωνία, το όνομα του κόμβου και την τοποθεσία που βρίσκεται, τότε θα χρησιμοποιήσουμε το εργαλείο που λέγετε Αλλαγή Χαρακτηριστικών Κόμβων, το οποίο βρίσκεται στον πίνακα έλέγχου. Για να κάνουμε τις αλλαγές που θέλουμε πρώτα πρέπει να συνδεθούμε με τον κόμβο που θέλουμε να κάνουμε τις αλλαγές αυτές. Όπως και στην προβολή στοιχείων κόμβων πληκτρολογούμε τα στοιχεία του κόμβου, ισχύουν ακριβώς τα ίδια που έχουμε προαναφέρει για την σύνδεση με τον κόμβο. Αυτό που ίσως είναι το σημαντικότερο είναι το Community να είναι το Community write της συσκευής, σ αντίθετη περίπτωση η αλλαγή των στοιχείων του κόμβου δεν θα είναι δυνατή. Έστω ότι τα στοιχεία που δίνουμε είναι σωστά, τότε θα ανοίξει μια σελίδα που θα μας δείχνει τα στοιχεία που ήδη έχει η συσκευή. 144

146 Από την παραπάνω εικόνα προκύπτει πως πρόκειται για τo Cisco Catalyst Στην επικοινωνία έχει την τιμή V. Mardiris, στο όνομα κόμβο node-3 και στην τοποθεσία lov. Μπορούμε να αλλάξουμε όλα τα στοιχεία μαζί, μόνο τα δύο στοιχεία, ένα στοιχείο και όλους τους μεταξύ τους συνδυασμούς. Αν εμείς θέλουμε να αλλάξουμε την επικοινωνία και την τοποθεσία τότε πληκτρολογούμε τα στοιχεία που θέλουμε στην Επικοινωνία και στην τοποθεσία, το όνομα κόμβου επειδή δεν θέλουμε να το αλλάξουμε το αφήνουμε κενό. Και πατάμε το κουμπί «Αλλαγή», στην συνέχεια μας εμφανίζεται ένα παράθυρο διαλόγου το οποίο μας ρωτάει αν είμαστε σίγουροι για την αλλαγή, πατώντας το «OK» πραγματοποιείται και η αλλαγή ενώ αν πατήσουμε την «Ακύρωση» τότε δεν γίνεται η αλλαγή. Με το που πατάμε το OK εμφανίζεται μια σελίδα η οποία έχει τις παλιές τιμές και τις καινούριες που έχουμε αλλάξει. Στον πάνω πίνακα έχουμε τα παλαιά στοιχεία του κόμβου και στον κάτω πίνακα τα νέα στοιχεία που δώσαμε και βλέπουμε πως έχουν αλλάξει. Αν θέλουμε να 145

147 βεβαιωθούμε πάμε στην προβολή χαρακτηριστικών κόμβων, δίνουμε τα στοιχεία του κόμβου και επαληθεύουμε πως τα στοιχεία που δώσαμε έχουν αλλάξει με επιτυχία ΑΝΑΖΗΤΗΣΗ Για να αναζητήσουμε κάποιον χρήστη που είναι καταχωρημένος στο σύστημα και να δούμε όλες τις πληροφορίες που τον αφορούν, δεν έχουμε παρά από το κεντρικό μενού (πίνακα ελέγχου) να επιλέξουμε την «Αναζήτηση». Η σελίδα που θα μας ανοίξει θα είναι η παρακάτω: Σελίδα Αναζήτησης Μπορούμε να αναζητήσουμε χρήστες με βάση: το όνομα χρήστη, την IP διεύθυνση του, τον κόμβο, το όνομα της πόρτας που βρίσκεται ο χρήστης, τον αριθμό του τηλεφώνου του ή την τοποθεσία. 146

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ Κεφάλαιο 4 SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ 1 4.1 ΕΙΣΑΓΩΓΗ...3 4.2 ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ...3 4.2.1 Η ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΗΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ...3 4.2.1.1 ΣΤΑΘΜΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ...4 4.2.1.2 ΔΙΑΧΕΙΡΙΖΟΜΕΝΟΙ

Διαβάστε περισσότερα

Διαχείριση Δικτύων με τη χρήση SNMP (5 η άσκηση)

Διαχείριση Δικτύων με τη χρήση SNMP (5 η άσκηση) ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ - ΕΜΠ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧ. ΥΠΟΛΟΓΙΣΤΩΝ Τομέας Επικοινωνιών, Ηλεκτρονικής & Συστημάτων Πληροφορικής Εργαστήριο Διαχείρισης & Βελτίστου Σχεδιασμού Δικτύων Τηλεματικής

Διαβάστε περισσότερα

Διαχείριση Δικτύων με τη χρήση SNMP (5η άσκηση) Διαχείριση Δικτύων - Ευφυή Δίκτυα, 9 ο Εξάμηνο,

Διαχείριση Δικτύων με τη χρήση SNMP (5η άσκηση) Διαχείριση Δικτύων - Ευφυή Δίκτυα, 9 ο Εξάμηνο, ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ - ΕΜΠ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧ. ΥΠΟΛΟΓΙΣΤΩΝ Τομέας Επικοινωνιών, Ηλεκτρονικής & Συστημάτων Πληροφορικής Εργαστήριο Διαχείρισης & Βελτίστου Σχεδιασμού Δικτύων Τηλεματικής

Διαβάστε περισσότερα

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Αρχιτεκτονικές Διαχείρισης Δικτύων (ΙI) SNMP MIB - Αντικείμενα & Ορισμοί Πινάκων NETCONF (Network Configuration Protocol)

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Αρχιτεκτονικές Διαχείρισης Δικτύων (ΙI) SNMP MIB - Αντικείμενα & Ορισμοί Πινάκων NETCONF (Network Configuration Protocol) ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Αρχιτεκτονικές Διαχείρισης Δικτύων (ΙI) SNMP MIB - Αντικείμενα & Ορισμοί Πινάκων NETCONF (Network Configuration Protocol) Β. Μάγκλαρης maglaris@netmode.ntua.gr www.netmode.ntua.gr 24/11/2015

Διαβάστε περισσότερα

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ ΙΙ

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ ΙΙ ΤΕΧΝΙΚΟΣ ΔΙΚΤΥΩΝ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ ΙΙ Σημειώσεις 1 ΚΕΦΑΛΑΙΟ 1 Εισαγωγή στη Διαχείριση Δικτύων 1.1 Εισαγωγή Τα τελευταία χρόνια τα δίκτυα υπολογιστών και τα συστήματα κατανεμημένης επεξεργασίας

Διαβάστε περισσότερα

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Αρχιτεκτονικές Διαχείρισης Δικτύων Υλοποιήσεις Client Server Το Πρωτόκολλο SNMP SNMP MIB - Αντικείμενα & Ορισμοί Πινάκων

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Αρχιτεκτονικές Διαχείρισης Δικτύων Υλοποιήσεις Client Server Το Πρωτόκολλο SNMP SNMP MIB - Αντικείμενα & Ορισμοί Πινάκων ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Αρχιτεκτονικές Διαχείρισης Δικτύων Υλοποιήσεις Client Server Το Πρωτόκολλο SNMP SNMP MIB - Αντικείμενα & Ορισμοί Πινάκων Β. Μάγκλαρης maglaris@netmode.ntua.gr www.netmode.ntua.gr 6/11/2017

Διαβάστε περισσότερα

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Αρχιτεκτονικές Διαχείρισης Δικτύων SNMP MIB - Αντικείμενα & Ορισμοί Πινάκων (επανάληψη) NETCONF (Network Configuration Protocol)

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Αρχιτεκτονικές Διαχείρισης Δικτύων SNMP MIB - Αντικείμενα & Ορισμοί Πινάκων (επανάληψη) NETCONF (Network Configuration Protocol) ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Αρχιτεκτονικές Διαχείρισης Δικτύων SNMP MIB - Αντικείμενα & Ορισμοί Πινάκων NETCONF (Network Configuration Protocol) Β. Μάγκλαρης maglaris@netmode.ntua.gr www.netmode.ntua.gr 13/11/2017

Διαβάστε περισσότερα

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ ΤΟ ΠΡΩΤΟΚΟΛΛΟ SNMP. Β. Μάγκλαρης 01/12/2014

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ ΤΟ ΠΡΩΤΟΚΟΛΛΟ SNMP. Β. Μάγκλαρης  01/12/2014 ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ ΤΟ ΠΡΩΤΟΚΟΛΛΟ SNMP Β. Μάγκλαρης maglaris@netmode.ntua.gr www.netmode.ntua.gr 01/12/2014 Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Πανεπιςτήμιο Πελοποννήςου Τμήμα Επιςτήμησ και Τεχνολογίασ Τηλεπικοινωνιών. Διαχείριςη και Αςφάλεια Δικτύων. Το Πρωτόκολλο SNMP

Πανεπιςτήμιο Πελοποννήςου Τμήμα Επιςτήμησ και Τεχνολογίασ Τηλεπικοινωνιών. Διαχείριςη και Αςφάλεια Δικτύων. Το Πρωτόκολλο SNMP Το Πρωτόκολλο SNMP Βάςη Πληροφοριών Διαχείριςησ Διαχειριςτήσ και διαχειριζόμενοσ Διαχειριζόμενο Σύςτημα Πράκτορασ UDP IP Δίκτυο Λειτουργίεσ Διαχείριςησ UDP IP Δίκτυο Βάςη Δεδομένων Διαχείριςησ Σταθμόσ

Διαβάστε περισσότερα

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Αρχιτεκτονικές Διαχείρισης Δικτύων (Ι) Υλοποιήσεις Client Server Το Πρωτόκολλο SNMP Δομή SNMP Agent - MIB

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Αρχιτεκτονικές Διαχείρισης Δικτύων (Ι) Υλοποιήσεις Client Server Το Πρωτόκολλο SNMP Δομή SNMP Agent - MIB ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Αρχιτεκτονικές Διαχείρισης Δικτύων (Ι) Υλοποιήσεις Client Server Το Πρωτόκολλο SNMP Δομή SNMP Agent - MIB Β. Μάγκλαρης maglaris@netmode.ntua.gr www.netmode.ntua.gr 24/11/2015 Άδεια Χρήσης

Διαβάστε περισσότερα

ΔΙΚΤΥΑ ΔΗΜΟΣΙΑΣ ΧΡΗΣΗΣ ΚΑΙ ΔΙΑΣΥΝΔΕΣΗ ΔΙΚΤΥΩΝ Ενότητα #13: Διαχείριση δικτύων

ΔΙΚΤΥΑ ΔΗΜΟΣΙΑΣ ΧΡΗΣΗΣ ΚΑΙ ΔΙΑΣΥΝΔΕΣΗ ΔΙΚΤΥΩΝ Ενότητα #13: Διαχείριση δικτύων ΔΙΚΤΥΑ ΔΗΜΟΣΙΑΣ ΧΡΗΣΗΣ ΚΑΙ ΔΙΑΣΥΝΔΕΣΗ ΔΙΚΤΥΩΝ Ενότητα #13: Καθηγητής Χρήστος Ι. Μπούρας Τμήμα Μηχανικών Η/Υ & Πληροφορικής, Πανεπιστήμιο Πατρών email: bouras@cti.gr, site: http://ru6.cti.gr/ru6/bouras

Διαβάστε περισσότερα

Διαχείριση Επικοινωνιακών Συστημάτων - Εισαγωγή ΔΙΑΧΕΙΡΙΣΗ ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

Διαχείριση Επικοινωνιακών Συστημάτων - Εισαγωγή ΔΙΑΧΕΙΡΙΣΗ ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΔΙΑΧΕΙΡΙΣΗ ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 1 Κεφάλαιο 1 ΕΙΣΑΓΩΓΗ 2 1. ΕΙΣΑΓΩΓΗ...4 2. ΑΠΑΙΤΗΣΕΙΣ ΑΠΟ ΤΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ...5 2.1 ΔΙΑΧΕΙΡΙΣΗ ΣΦΑΛΜΑΤΩΝ ή ΒΛΑΒΩΝ...5 2.2 ΔΙΑΧΕΙΡΙΣΗ ΚΟΣΤΟΛΟΓΗΣΗΣ...5 2.3 ΔΙΑΧΕΙΡΙΣΗ

Διαβάστε περισσότερα

Β. Μάγκλαρης.

Β. Μάγκλαρης. ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Αρχιτεκτονικές Διαχείρισης Δικτύων Υλοποιήσεις Client Server Το Πρωτόκολλο SNMP SNMP MIB - Αντικείμενα & Ορισμοί Πινάκων NETCONF (Network Configuration Protocol) Β. Μάγκλαρης maglaris@netmode.ntua.gr

Διαβάστε περισσότερα

Διαχείριση και Ασφάλεια Τηλεπικοινωνιακών Συστημάτων

Διαχείριση και Ασφάλεια Τηλεπικοινωνιακών Συστημάτων Διαχείριση και Ασφάλεια Τηλεπικοινωνιακών Συστημάτων Διαχείριση Δικτύων Ανάγκη για Συστήματα Διαχείρισης ΠΑΡΑΓΟΝΤΕΣ γεωγραφική επέκταση δικτύων ετερογένεια δικτύων πλήθος και πολυπλοκότητα εφαρμογών υποστήριξη

Διαβάστε περισσότερα

ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΣΕΡΡΩΝ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ. Τμήμα Πληροφορικής και Επικοινωνιών

ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΣΕΡΡΩΝ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ. Τμήμα Πληροφορικής και Επικοινωνιών ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΣΕΡΡΩΝ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ Τμήμα Πληροφορικής και Επικοινωνιών Συμπληρωματικές Σημειώσεις στα πλαίσια του μαθήματος «ΔΙΚΤΥΑ Η/Υ ΙΙΙ» (Διαχείριση Δικτύων

Διαβάστε περισσότερα

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap Version 2.00 Επιμέλεια Σημειώσεων: Δημήτρης Κόγιας Πατρικάκης Χαράλαμπος Πίνακας περιεχομένων TELNET... 2 PING...

Διαβάστε περισσότερα

7.2.2 Σχέση OSI και TCP/IP

7.2.2 Σχέση OSI και TCP/IP Κεφάλαιο 7 7.2.2 Σχέση OSI και TCP/IP Σελ. 226-230 Γεώργιος Γιαννόπουλος ΠΕ19, ggiannop (at) sch.gr ΕΣΠΕΡΙΝΟ ΕΠΑΛ Κομοτηνής http://diktya-epal-g.ggia.info/ Γνωστό μοντέλο OSI διασύνδεσης ανοικτών συστημάτων.

Διαβάστε περισσότερα

HP Network Node Manager (NNM) Tutorial

HP Network Node Manager (NNM) Tutorial Telecommunication Networks and integrated Services Laboratory tns.ds.unipi.gr HP Network Node Manager (NNM) Tutorial Καθηγ. Π. Δεμέστιχας, Δρ.K. Τσαγκάρης, Δρ. Μ. Λογοθέτης, Δ. Καρβουνάς Email: {pdemest,

Διαβάστε περισσότερα

ιαχείριση ικτύων ρ.αρίστη Γαλάνη

ιαχείριση ικτύων ρ.αρίστη Γαλάνη Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων ρ.αρίστη Γαλάνη Ακαδημαϊκό Έτος 2016-2017 Simple Network Management Protocol (SNMP) Simple Network Management Protocol (Απλό Πρωτόκολλο ιαχείρισης ικτύων):

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ Εισαγωγή στα πρωτόκολλα TCP/IP και το INTERNET 2.1. Μέσα μετάδοσης, φυσικές διευθύνσεις

ΠΕΡΙΕΧΟΜΕΝΑ Εισαγωγή στα πρωτόκολλα TCP/IP και το INTERNET 2.1. Μέσα μετάδοσης, φυσικές διευθύνσεις ΠΕΡΙΕΧΟΜΕΝΑ Κεφάλαιο 1 Εισαγωγή 1.0. Επισκόπηση 1.1. Δίκτυα υπολογιστών 1.2. Πρωτόκολλα δικτύων υπολογιστών 1.3. Το πρόβλημα της διαχείρισης 1.4. Μοντέλα και πρότυπα διαχείρισης 1.5. Τρόποι διακίνησης

Διαβάστε περισσότερα

Πρωτόκολλα Διαδικτύου

Πρωτόκολλα Διαδικτύου Πρωτόκολλα Διαδικτύου Μέρος 1ο Επικοινωνίες Δεδομένων Μάθημα 3 ο Εισαγωγή στην Τεχνολογία TCP/IP To TCP/IP σημαίνει Transmission Control Protocol / Internet Protocol και θα μπορούσε να θεωρηθεί ότι πρόκειται

Διαβάστε περισσότερα

Τεχνολογία TCP/IP ΙΑ ΙΚΤΥΩΣΗ- INTERNET. Τεχνολογίες Τηλεκπαίδευσης & Εφαρµογές - Ιούλιος 09 1 http://creativecommons.org/licenses/by-nc-nd/3.

Τεχνολογία TCP/IP ΙΑ ΙΚΤΥΩΣΗ- INTERNET. Τεχνολογίες Τηλεκπαίδευσης & Εφαρµογές - Ιούλιος 09 1 http://creativecommons.org/licenses/by-nc-nd/3. Τεχνολογία TCP/IP ΙΑ ΙΚΤΥΩΣΗ- INTERNET Εφαρµογές - Ιούλιος 09 1 Εισαγωγή στην τεχνολογία TCP/IP Τεχνολογία TCP/IP TCP/IP Πρωτόκολλα TCP/IP ή τεχνολογία TCP/IP ή τεχνολογία ιαδικτύου (Internet)( ιαδίκτυο

Διαβάστε περισσότερα

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ) ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ) Ενότητα 9: ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ ΔΙΔΑΣΚΩΝ: ΚΩΝΣΤΑΝΤΙΝΟΣ ΧΕΙΛΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Ethernet Ethernet ΙΕΕΕ CSMA/CD

Ethernet Ethernet ΙΕΕΕ CSMA/CD Ethernet Τα τοπικά δίκτυα είναι συνήθως τύπου Ethernet ή λέμε ότι ακολουθούν το πρότυπο ΙΕΕΕ 802.3 Ακολουθούν το μηχανισμό CSMA/CD (Πολλαπλή πρόσβαση με Ακρόαση Φέροντος και Ανίχνευση Συγκρούσεων). Πολλαπλή

Διαβάστε περισσότερα

Εργαλεία ανάπτυξης εφαρμογών internet Ι

Εργαλεία ανάπτυξης εφαρμογών internet Ι IEK ΟΑΕΔ ΚΑΛΑΜΑΤΑΣ ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΟΦΟΡΙΚΗΣ Εργαλεία ανάπτυξης εφαρμογών internet Ι Διδάσκουσα: Κανελλοπούλου Χριστίνα ΠΕ19 Πληροφορικής 4 φάσεις διαδικτυακών εφαρμογών 1.Εφαρμογές στατικής πληροφόρησης

Διαβάστε περισσότερα

Κεφάλαιο 4: Λογισμικό Συστήματος

Κεφάλαιο 4: Λογισμικό Συστήματος Κεφάλαιο 4: Λογισμικό Συστήματος Ερωτήσεις 1. Να αναφέρετε συνοπτικά τις κατηγορίες στις οποίες διακρίνεται το λογισμικό συστήματος. Σε ποια ευρύτερη κατηγορία εντάσσεται αυτό; Το λογισμικό συστήματος

Διαβάστε περισσότερα

ίκτυα υπολογιστών Στόχοι κεφαλαίου ίκτυα

ίκτυα υπολογιστών Στόχοι κεφαλαίου ίκτυα Στόχοι κεφαλαίου ίκτυα υπολογιστών (Κεφαλαιο 15 στο βιβλιο) Περιγραφή των κύριων θεµάτων σχετικά µε τα δίκτυα υπολογιστών Αναφορά στα διάφορα είδη δικτύων Περιγραφή των διαφόρων τοπολογιών των τοπικών

Διαβάστε περισσότερα

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας Τ.Ε.Ι ΗΠΕΙΡΟΥ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ & ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΟΙΚΗΣΗΣ Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας Πτυχιακή εργασία του φοιτητή Γιαννακίδη Αποστόλη Επιβλέπων καθηγητής Τσούλος

Διαβάστε περισσότερα

7.2 Τεχνολογία TCP/IP

7.2 Τεχνολογία TCP/IP 7.2 Τεχνολογία TCP/IP Ερωτήσεις 1. Πώς χρησιµοποιείται σήµερα ο όρος TCP/IP; ε ποια πρωτόκολλα αναφέρεται και γιατί έχει επικρατήσει αυτή η ονοµασία; 2. Ποια ανάγκη οδήγησε στην επικράτηση της τεχνολογίας

Διαβάστε περισσότερα

ΤΕΙ ΗΠΕΙΡΟΥ Τμήμα Τηλεπληροφορικής & Διοίκησης

ΤΕΙ ΗΠΕΙΡΟΥ Τμήμα Τηλεπληροφορικής & Διοίκησης ΤΕΙ ΗΠΕΙΡΟΥ Τμήμα Τηλεπληροφορικής & Διοίκησης ΕΓΚΑΤΑΣΤΑΣΗ & ΠΑΡΑΜΕΤΡΟΠΟΙΗΣΗ INTERNET INFORMATION SERVER (IIS) ΓΙΑ ΥΛΟΠΟΙΗΣΗ ΥΠΗΡΕΣΙΩΝ ΔΙΑΔΙΚΤΥΟΥ (WEB SERVICES) ΣΠΟΥΔΑΣΤΡΙΑ:Μπάρδα Μαρία ΕΙΣΗΓΗΤΗΣ: Τσιαντής

Διαβάστε περισσότερα

Επαναληπτικές Ασκήσεις Μαθήματος

Επαναληπτικές Ασκήσεις Μαθήματος Επαναληπτικές Ασκήσεις Μαθήματος Ερώτηση: EAM1. Ποιο από τα παρακάτω χαρακτηριστικά δεν αποτελεί κριτήριο κατηγοριοποίησης δικτύων. Κλίμακα Τεχνολογία μετάδοσης Πλήθος τερματικών εντός του δικτύου Ερώτηση:

Διαβάστε περισσότερα

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δίκτυα Υπολογιστών

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δίκτυα Υπολογιστών ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δίκτυα Υπολογιστών Στόχοι 1 Να εξηγήσουμε τι είναι τα δίκτυα υπολογιστών, ποιες είναι οι βασικές κατηγορίες τους και ποιες οι πιο συνηθισμένες τοπολογίες

Διαβάστε περισσότερα

Στόχοι. Υπολογιστικά συστήματα: Στρώματα. Βασικές έννοιες [7]

Στόχοι. Υπολογιστικά συστήματα: Στρώματα. Βασικές έννοιες [7] Στόχοι ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 1 Να εξηγήσουμε τι είναι τα δίκτυα υπολογιστών, ποιες είναι οι βασικές κατηγορίες τους και ποιες οι πιο συνηθισμένες τοπολογίες τους. Να περιγράψουμε

Διαβάστε περισσότερα

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο Αρχές Δικτύων Επικοινωνιών Επικοινωνίες Δεδομένων Μάθημα 4 ο Τα επικοινωνιακά δίκτυα και οι ανάγκες που εξυπηρετούν Για την επικοινωνία δύο συσκευών απαιτείται να υπάρχει μεταξύ τους σύνδεση από σημείο

Διαβάστε περισσότερα

Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων ιαχείριση ικτύων ρ.αρίστη Γαλάνη Ακαδημαϊκό Έτος

Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων ιαχείριση ικτύων ρ.αρίστη Γαλάνη Ακαδημαϊκό Έτος Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων ιαχείριση ικτύων ρ.αρίστη Γαλάνη Ακαδημαϊκό Έτος 2016-2017 Πρότυπο διαχείρισης ISO/OSI Ένα περιβάλλον OSI μπορεί να αποτελείται από ετερογενή «ανοικτά» διασυνδεδεμένα

Διαβάστε περισσότερα

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy Σ ε λ ί δ α 1 Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy Περιεχόμενα 1. Download Arebas Easy... 2 2. Εγκατάσταση Arebas Easy... 3 3. Εγγραφή στον Arebas Server... 7 4. Παραμετροποίηση Arebas Easy...

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΑ ΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

ΤΕΧΝΟΛΟΓΙΑ ΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ Ηυιοθέτησητης τεχνολογίαςκαι αρχιτεκτονικής TCP/IP δεν έρχεται σε σύγκρουσηµε το µοντέλο του OSI και αυτό γιατί και τα δυο συστήµατααναπτύχθηκαν συγχρόνως. Παρόλα αυτά, υπάρχουν ορισµένες ουσιώδεις διαφορές

Διαβάστε περισσότερα

Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη

Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη 01 Εισαγωγή Μια απλή και γρήγορη εισαγωγή Το Splunk > είναι ένα πρόγραμμα το οποίο πρωτοεμφανίστηκε στην αγορά το 2003 και αποτελεί ένα πρόγραμμα εξόρυξης

Διαβάστε περισσότερα

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1 Κεφάλαιο 4 Λογισμικό συστήματος Καραμαούνας Πολύκαρπος 1 4.1 Λογισμικό συστήματος (application software) Καραμαούνας Πολύκαρπος 2 Λογισμικό εφαρμογών (application software): προγράμματα για την αντιμετώπιση

Διαβάστε περισσότερα

Α5.1 Εισαγωγή στα Δίκτυα. Α Λυκείου

Α5.1 Εισαγωγή στα Δίκτυα. Α Λυκείου Α5.1 Εισαγωγή στα Δίκτυα Α Λυκείου Εισαγωγή Δίκτυο Υπολογιστών (Computer Network) είναι μια ομάδα από δύο ή περισσότερους υπολογιστές ή άλλες συσκευές που συνδέονται μεταξύ τους με σκοπό να ανταλλάσσουν

Διαβάστε περισσότερα

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης Σελίδα 1από ΤΕΙ ΚΑΒΑΛΑΣ Πτυχιακή εργασία Δικτυακή Εφαρμογή διαχείρισης ηλεκτρονικών εγγράφων υπηρεσίας. ΕΙΣΑΓΩΓΗ Μιλτιάδης Κακλαμάνης Σελίδα 2από Κατάλογος περιεχομένων ΕΙΣΑΓΩΓΗ...1 Σχετιζόμενα πρόσωπα...3

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

Διαβάστε περισσότερα

Κεφάλαιο 7 Διαδικτύωση-Internet. 7.2 Τεχνολογία TCP/IP

Κεφάλαιο 7 Διαδικτύωση-Internet. 7.2 Τεχνολογία TCP/IP Κεφάλαιο 7 Διαδικτύωση-Internet 7.2 Τεχνολογία TCP/IP Τι δηλώνει ο όρος «TCP/IP»; Ο όρος TCP/IP αναφέρεται σε μια ομάδα ομοειδών πρωτοκόλλων που χρησιμοποιούνται για την επικοινωνία των δικτύων υπολογιστών

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών Ενότητα 9: Dynamic Host Configuration Protocol- DHCP

Δίκτυα Υπολογιστών Ενότητα 9: Dynamic Host Configuration Protocol- DHCP Δίκτυα Υπολογιστών Ενότητα 9: Dynamic Host Configuration Protocol- DHCP Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

ΕΠΑΝΑΛΗΠΤΙΚΟ ΤΕΣΤ ΣΤΙΣ ΕΝΟΤΗΤΕΣ

ΕΠΑΝΑΛΗΠΤΙΚΟ ΤΕΣΤ ΣΤΙΣ ΕΝΟΤΗΤΕΣ ΕΠΑ.Λ. Άμφισσας Σχολικό Έτος : 2011-2012 Τάξη : Γ Τομέας : Πληροφορικής Μάθημα : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ Διδάσκων : Χρήστος Ρέτσας Η-τάξη : tiny.cc/retsas-diktya2 ΕΠΑΝΑΛΗΠΤΙΚΟ ΤΕΣΤ ΣΤΙΣ ΕΝΟΤΗΤΕΣ 7.1-7.2

Διαβάστε περισσότερα

Πρωτόκολλα Διαδικτύου

Πρωτόκολλα Διαδικτύου Πρωτόκολλα Διαδικτύου Ερωτήσεις Ασκήσεις Επικοινωνίες Δεδομένων Μάθημα 3 ο Ερωτήσεις 1. Τι είναι το intranet και ποια τα πλεονεκτήματα που προσφέρει; 2. Τι δηλώνει ο όρος «TCP/IP»; 3. Να αναφέρετε τα πρωτόκολλα

Διαβάστε περισσότερα

Κεφάλαιο 7.3. Πρωτόκολλο TCP

Κεφάλαιο 7.3. Πρωτόκολλο TCP Κεφάλαιο 7.3 Πρωτόκολλο TCP Πρωτόκολλο TCP Το πρωτόκολλο Ελέγχου Μετάδοσης (Transmission Control Protocol, TCP) είναι το βασικό πρωτόκολο του Επιπέδου Μεταφοράς του μοντέλου TCP/IP. Παρέχει υπηρεσίες προσανατολισμένες

Διαβάστε περισσότερα

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική Εισαγωγή στην Πληροφορική Δίκτυα Δεδομένων ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Συντήρησης Πολιτισμικής Κληρονομιάς Βασικές Έννοιες Δίκτυο υπολογιστών: ένα σύνολο διασυνδεδεμένων

Διαβάστε περισσότερα

PROXY SERVER. Άριστη πύλη διαχωρισμού μεταξύ του εσωτερικού δικτύου και του Internet.

PROXY SERVER. Άριστη πύλη διαχωρισμού μεταξύ του εσωτερικού δικτύου και του Internet. PROXY SERVER Άριστη πύλη διαχωρισμού μεταξύ του εσωτερικού δικτύου και του Internet. Αποτελεσματικό εργαλείο για την απόκρυψη των εσωτερικών λεπτομερειών και διευθύνσεων IP του δικτύου. Αυξάνει τη συνολική

Διαβάστε περισσότερα

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που 7.7 Πρωτόκολλο ARP 1 ύο είδη διευθύνσεων: MAC - IP Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που µπορεί

Διαβάστε περισσότερα

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η Αρχές Δικτύων Επικοινωνιών Σελ. 9-50 Γεώργιος Γιαννόπουλος ΠΕ19, ggiannop (at) sch.gr http://diktya-epal-b.ggia.info/ Creative Commons License 3.0 Share-Alike Σύνδεση από σημείο

Διαβάστε περισσότερα

Εγκατάσταση του PiNet για διαχείριση εργαστηρίου με Raspberry Pi. Συγγραφέας: Τριχόπουλος Γιώργος Δεκέμβριος 2016

Εγκατάσταση του PiNet για διαχείριση εργαστηρίου με Raspberry Pi. Συγγραφέας: Τριχόπουλος Γιώργος Δεκέμβριος 2016 Εγκατάσταση του PiNet για διαχείριση εργαστηρίου με Raspberry Pi Συγγραφέας: Τριχόπουλος Γιώργος Δεκέμβριος 2016 Το σύστημα PiNet εξυπηρετεί στη διαχείριση των υπολογιστών Raspberry Pi σε μία σχολική τάξη.

Διαβάστε περισσότερα

Διαχείριση Δικτύων. Κέντρο Δικτύων ΕΜΠ. Θανάσης Δουΐτσης, Βασίλης Μάγκλαρης Φεβρουάριος 2009

Διαχείριση Δικτύων. Κέντρο Δικτύων ΕΜΠ. Θανάσης Δουΐτσης, Βασίλης Μάγκλαρης Φεβρουάριος 2009 Διαχείριση Δικτύων Κέντρο Δικτύων ΕΜΠ Θανάσης Δουΐτσης, Βασίλης Μάγκλαρης Φεβρουάριος 2009 Περίληψη Το πρωτόκολλο SNMP Το δίκτυο του ΕΜΠ Συχνά χρησιμοποιούμενες ΜΙΒs Το εργαλείο MRTG/RRD Το εργαλείο Nagios

Διαβάστε περισσότερα

Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ Τεχνολογία ικτύων Επικοινωνιών ΙΙ 7.1.1. Γενικές Αρχές 1. Τι ονοµάζεται επικοινωνιακό υποδίκτυο και ποιο είναι το έργο του; Το σύνολο όλων των ενδιάµεσων κόµβων που εξασφαλίζουν την επικοινωνία µεταξύ

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου ΚΕΦΑΛΑΙΟ 1.7 Πρωτόκολλα και Αρχιτεκτονική Δικτύου Επικοινωνία δύο σταθμών Ύπαρξη διαδρομής Αποκατάσταση σύνδεσης Ο σταθμός-πηγή πρέπει να ξέρει πότε ο σταθμός-προορισμός είναι έτοιμος να λάβει δεδομένα.

Διαβάστε περισσότερα

ΔΙΑΣΥΝΔΕΣΗ ΔΙΚΤΥΩΝ (INTERNETWORKING)

ΔΙΑΣΥΝΔΕΣΗ ΔΙΚΤΥΩΝ (INTERNETWORKING) ΔΙΑΣΥΝΔΕΣΗ ΔΙΚΤΥΩΝ (INTERNETWORKING) Α. Α. Οικονομίδης Πανεπιστήμιο Μακεδονίας Διασυνδεδεμένο δίκτυο διασύνδεση δικτύων που το καθένα διατηρεί την ταυτότητά του χρησιμοποιώντας ειδικούς μηχανισμούς διασύνδεσης

Διαβάστε περισσότερα

1.5.1 ΓΕΦΥΡΑ (BRIDGE) Εικόνα Επίπεδα λειτουργίας επαναλήπτη, γέφυρας, δρομολογητή και πύλης ως προς το μοντέλο OSI.

1.5.1 ΓΕΦΥΡΑ (BRIDGE) Εικόνα Επίπεδα λειτουργίας επαναλήπτη, γέφυρας, δρομολογητή και πύλης ως προς το μοντέλο OSI. 40 Σύγχρονα τηλεπικοινωνιακά και δικτυακά πρωτόκολλα Εικόνα 1.5.1 Επίπεδα λειτουργίας επαναλήπτη, γέφυρας, δρομολογητή και πύλης ως προς το μοντέλο OSI. 1.5.1 ΓΕΦΥΡΑ (BRIDGE) Οι γέφυρες λειτουργούν τόσο

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ ΕΡΩΤΗΣΕΙΣ - ΑΣΚΗΣΕΙΣ 1. Για να διεκπεραιωθεί η μεταφορά των πακέτων από την πηγή στον προορισμό μεταξύ των κόμβων του επικοινωνιακού υποδικτύου απαιτείται η

Διαβάστε περισσότερα

ΡΥΘΜΙΣΕΙΣ ΟΙΚΙΑΚΟΥ ΔΙΚΤΥΟΥ ΣΤΑ WINDOWS 7

ΡΥΘΜΙΣΕΙΣ ΟΙΚΙΑΚΟΥ ΔΙΚΤΥΟΥ ΣΤΑ WINDOWS 7 ΡΥΘΜΙΣΕΙΣ ΟΙΚΙΑΚΟΥ ΔΙΚΤΥΟΥ ΣΤΑ WINDOWS 7 Προϋπόθεση: έχει ολοκληρωθεί., η σύνδεση των καρτών δικτύου στις θύρες RJ45 ενός router/switch. Στην περίπτωση δομημένης καλωδίωσης οι κάρτες δικτύου συνδέονται

Διαβάστε περισσότερα

T.E.I. ΗΠΕΙΡΟΥ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΟΙΚΗΣΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ

T.E.I. ΗΠΕΙΡΟΥ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΟΙΚΗΣΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ T.E.I. ΗΠΕΙΡΟΥ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΟΙΚΗΣΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ: ΜΕΛΕΤΗ & ΡΥΘΜΙΣΕΙΣ ΠΡΩΤΟΚΟΛΛΟΥ ΔΡΟΜΟΛΟΓΗΣΗΣ RIP ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: ΣΤΕΡΓΙΟΥ ΕΛΕΥΘΕΡΙΟΣ ΣΠΟΥΔΑΣΤΡΙΑ: ΤΣΙΜΠΙΔΑ ΙΩΑΝΝΑ- ΠΑΡΑΣΚΕΥΗ

Διαβάστε περισσότερα

Εγχειρίδιο Χρήσης για Διαχειριστές. Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο

Εγχειρίδιο Χρήσης για Διαχειριστές. Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο Εγχειρίδιο Χρήσης για Διαχειριστές Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο 1. Εισαγωγή 1.1 Περιγραφή Λειτουργίας Πλατφόρμας Η Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο παρέχει τη δυνατότητα της

Διαβάστε περισσότερα

ΔΙΑΓΩΝΙΣΜΑ ΤΕΛΙΚΗΣ ΕΠΑΝΑΛΗΨΗΣ ΣΤΙΣ ΕΝΟΤΗΤΕΣ

ΔΙΑΓΩΝΙΣΜΑ ΤΕΛΙΚΗΣ ΕΠΑΝΑΛΗΨΗΣ ΣΤΙΣ ΕΝΟΤΗΤΕΣ ΕΠΑ.Λ. Άμφισσας Σχολικό Έτος : 2011-2012 Τάξη : Γ Τομέας : Πληροφορικής Μάθημα : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ Διδάσκων : Χρήστος Ρέτσας Η-τάξη : tiny.cc/retsas-diktya2 ΔΙΑΓΩΝΙΣΜΑ ΤΕΛΙΚΗΣ ΕΠΑΝΑΛΗΨΗΣ ΣΤΙΣ ΕΝΟΤΗΤΕΣ

Διαβάστε περισσότερα

Κατανεμημένα συστήματα και Επικοινωνία Πραγματικού Χρόνου

Κατανεμημένα συστήματα και Επικοινωνία Πραγματικού Χρόνου Λειτουργικά Συστήματα Πραγματικού Χρόνου 2006-07 Κατανεμημένα συστήματα και Επικοινωνία Πραγματικού Χρόνου Μ.Στεφανιδάκης Κατανεμημένα συστήματα ελέγχου Α Β διασυνδετικό δίκτυο Γ Δ Ε π.χ. οι επιμέρους

Διαβάστε περισσότερα

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET Κεφάλαιο 6: Συσκευές τηλεπικοινωνιών και δικτύωσης (Θ) Ενεργά στοιχεία δικτύων Δύο συστήματα Η/Υ μπορούν να συνδεθούν χρησιμοποιώντας: Δια-αποδιαμορφωτές

Διαβάστε περισσότερα

Περιεχόμενα. Μέρος 1: Βασικές έννοιες της πληροφορικής... 13. Πρόλογος... 11

Περιεχόμενα. Μέρος 1: Βασικές έννοιες της πληροφορικής... 13. Πρόλογος... 11 Περιεχόμενα Πρόλογος... 11 Μέρος 1: Βασικές έννοιες της πληροφορικής... 13 1.1 Windows XP... 15 1.2 Επιφάνεια εργασίας... 19 1.3 Γραμμή εργασιών... 24 1.4 Χειρισμός παραθύρων... 30 1.5 Μενού... 36 1.6

Διαβάστε περισσότερα

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Ενότητες βιβλίου: 6.4, 6.7 Ώρες διδασκαλίας: 1 Τεχνικές σχεδίασης προγραμμάτων Στο βιβλίο γίνεται αναφορά σε μία τεχνική για την ανάπτυξη

Διαβάστε περισσότερα

Εισαγωγή στο διαδίκτυο

Εισαγωγή στο διαδίκτυο Εισαγωγή στο διαδίκτυο Στόχοι κεφαλαίου Περιγραφή των κύριων θεμάτων σχετικά με τα δίκτυα υπολογιστών Αναφορά στα διάφορα είδη δικτύων Περιγραφή των διαφόρων τοπολογιών των τοπικών δικτύων Περιγραφή των

Διαβάστε περισσότερα

Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή

Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή 8.1 Τακτική σάρωση (Polling) Ας υποθέσουμε ότι έχουμε ένα πληκτρολόγιο συνδεδεμένο σε ένα υπολογιστικό σύστημα. Το πληκτρολόγιο είναι μια μονάδα εισόδου.

Διαβάστε περισσότερα

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο FrontPage 2003 Πρακτικός Οδηγός Χρήσης Το FrontPage είναι ένα πρόγραμμα δημιουργίας ιστοσελίδων και δικτυακών τόπων που επιτρέπει το σχεδιασμό ιστοσελίδων μέσα από γραφικό περιβάλλον αλλά και την ταυτόχρονη

Διαβάστε περισσότερα

Είναι η διαδικασία εύρεσης της διαδρομής που πρέπει να ακολουθήσει ένα πακέτο για να φτάσει στον προορισμό του. Η διαδικασία αυτή δεν είναι πάντα

Είναι η διαδικασία εύρεσης της διαδρομής που πρέπει να ακολουθήσει ένα πακέτο για να φτάσει στον προορισμό του. Η διαδικασία αυτή δεν είναι πάντα 1 Είναι η διαδικασία εύρεσης της διαδρομής που πρέπει να ακολουθήσει ένα πακέτο για να φτάσει στον προορισμό του. Η διαδικασία αυτή δεν είναι πάντα εύκολη, τη στιγμή που γνωρίζουμε ότι ένα σύνθετο δίκτυο

Διαβάστε περισσότερα

Μάθημα 6: Αρχιτεκτονική TCP/IP

Μάθημα 6: Αρχιτεκτονική TCP/IP Μάθημα 6: Αρχιτεκτονική TCP/IP 6.1 Συσχέτιση OSI και TCP/IP Η αρχιτεκτονική TCP/IP ακολουθεί ένα πρότυπο διαστρωμάτωσης παρόμοιο με το μοντέλο OSI. Η αντιστοιχία φαίνεται στο σχήμα 6.1. Η ονομασία της

Διαβάστε περισσότερα

Δίκτυα Η/Υ ςτην Επιχείρηςη

Δίκτυα Η/Υ ςτην Επιχείρηςη Δίκτυα Η/Υ ςτην Επιχείρηςη Εντολέσ δικτυακών πρωτοκόλλων ςε Windows/Unix Γκάμασ Βαςίλειοσ, Εργαςτηριακόσ υνεργάτησ Εντολζσ δικτφου ςε Windows/Unix ε προηγούμενο εργαςτήριο παρουςιάςτηκαν οι παρακάτω εντολέσ

Διαβάστε περισσότερα

7.5 Πρωτόκολλο IP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

7.5 Πρωτόκολλο IP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ Τεχνολογία ικτύων Επικοινωνιών ΙΙ 7.5 Πρωτόκολλο IP 38. Τι είναι το πρωτόκολλο ιαδικτύου (Internet Protocol, IP); Είναι το βασικό πρωτόκολλο του επιπέδου δικτύου της τεχνολογίας TCP/IP. Βασίζεται στα αυτοδύναµα

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα της γλώσσας C, το Dev-C++, το οποίο είναι εφαρμογή που τρέχει

Διαβάστε περισσότερα

ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. α. Πριν εμφανιστεί η τεχνολογία ISDN οι υπηρεσίες φωνής, εικόνας και δεδομένων απαιτούσαν διαφορετικά δίκτυα.

ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. α. Πριν εμφανιστεί η τεχνολογία ISDN οι υπηρεσίες φωνής, εικόνας και δεδομένων απαιτούσαν διαφορετικά δίκτυα. ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ ΕΠΑΛ (ΟΜΑΔΑ Α ) & ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΕΠΑΛ (ΟΜΑΔΑ Β ) ΘΕΜΑ Α ΚΥΡΙΑΚΗ 04/05/2014- ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΟΚΤΩ (8) ΕΚΦΩΝΗΣΕΙΣ Α1. Να χαρακτηρίσετε

Διαβάστε περισσότερα

1.2.2 Το μοντέλο δικτύωσης TCP/IP 1 / 26

1.2.2 Το μοντέλο δικτύωσης TCP/IP 1 / 26 1.2.2 Το μοντέλο δικτύωσης TCP/IP 1 / 26 Το δίκτυο ARPANET ήταν ένα δίκτυο μεταγωγής πακέτων που χρηματοδοτήθηκε από το υπουργείο άμυνας των Η.Π.Α. στα τέλη της δεκαετίας του '60. 2 / 26 Από την αρχή κύριος

Διαβάστε περισσότερα

Εργαλεία ανάπτυξης εφαρμογών internet Ι

Εργαλεία ανάπτυξης εφαρμογών internet Ι IEK ΟΑΕΔ ΚΑΛΑΜΑΤΑΣ ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΟΦΟΡΙΚΗΣ Εργαλεία ανάπτυξης εφαρμογών internet Ι Διδάσκουσα: Κανελλοπούλου Χριστίνα ΠΕ19 Πληροφορικής Εργαλεία και τεχνικές από την πλευρά του πελάτη Java Applet

Διαβάστε περισσότερα

Εργαστήριο «Δίκτυα Υπολογιστών Ι»

Εργαστήριο «Δίκτυα Υπολογιστών Ι» 1 Εργαστήριο «Δίκτυα Υπολογιστών Ι» Άσκηση 1 η Τμήμα Mηχ. Πληροφορικής & Υπολογιστών Παν. Δυτικής Αττικής Ημερομηνία έκδοσης: 3/10/2018 Επιμέλεια: Ιωάννης Ξυδάς, Αντώνης Μπόγρης Υλοποίηση ενός Τοπικού

Διαβάστε περισσότερα

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access)

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access) Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access) Μελετώντας το μάθημα θα μπορείς να ξέρεις τη λειτουργία του Polling να ξέρεις

Διαβάστε περισσότερα

Κατανόηση των βασικών σημείων των διευθύνσεων TCP/IP και της

Κατανόηση των βασικών σημείων των διευθύνσεων TCP/IP και της Page 1 of 8 Αναγν. άρθρου: 164015 - Τελευταία αναθεώρηση: Τρίτη, 29 Μαΐου 2007 - Αναθεώρηση: 4.2 Κατανόηση των βασικών σημείων των διευθύνσεων TCP/IP και της δημιουργίας υποδικτύων Συμβουλή συστήματος

Διαβάστε περισσότερα

7.7 Πρωτόκολλο ARP. 1. Το πρωτόκολλο ARP μετατρέπει τις διευθύνσεις IP στις αντίστοιχες φυσικές. Σ Λ

7.7 Πρωτόκολλο ARP. 1. Το πρωτόκολλο ARP μετατρέπει τις διευθύνσεις IP στις αντίστοιχες φυσικές. Σ Λ 7.7 Πρωτόκολλο ARP & Ερωτήσεις 1. Ποιος ο ρόλος του Πρωτοκόλλου Μετατροπής Διεύθυνσης (ARP); 2. Τι είναι ο πίνακας ARP, τι πληροφορία περιλαμβάνει και με ποιο τρόπο ενημερώνεται και ποιος ο χρόνος ζωής

Διαβάστε περισσότερα

Λογισµικό (Software SW) Λειτουργικά Συστήµατα και ίκτυα

Λογισµικό (Software SW) Λειτουργικά Συστήµατα και ίκτυα Λογισµικό (Software SW) Λειτουργικά Συστήµατα και ίκτυα Μαζική επεξεργασία ή επεξεργασία κατά δέσµες (batch processing) Χώρος χρήστη Εργασίες (Jobs): Πρόγραµµα, δεδοµένα και οδηγίες Αποτελέσµατα Χώρος

Διαβάστε περισσότερα

Εξοικείωση με τις εντολές ipconfig και ping

Εξοικείωση με τις εντολές ipconfig και ping Διαχείριση Δικτύων Τμήμα Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Ηπείρου Εργαστηριακή Άσκηση Εξοικείωση με τις εντολές ipconfig και ping Σημείωση : Η άσκηση αναφέρεται σε εντολές των Windows. Υπάρχουν παρόμοιες

Διαβάστε περισσότερα

6.1 Επεκτείνοντας το δίκτυο 6.2 Επιλεγόμενες τηλεφωνικές γραμμές modems Πλεονεκτήματα Μειονεκτήματα Βασική χρήση

6.1 Επεκτείνοντας το δίκτυο 6.2 Επιλεγόμενες τηλεφωνικές γραμμές modems Πλεονεκτήματα Μειονεκτήματα Βασική χρήση 6.1 Επεκτείνοντας το δίκτυο Τοπικά δίκτυα (LAN): επικοινωνία με περιορισμένη απόσταση κάλυψης (μικρή εμβέλεια) Δίκτυα Ευρείας Περιοχής (WAN): επικοινωνία σε ευρύτερη γεωγραφική κάλυψη. Από την άποψη του

Διαβάστε περισσότερα

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ) ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ) Ενότητα 10: ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ ΔΙΔΑΣΚΩΝ: ΚΩΝΣΤΑΝΤΙΝΟΣ ΧΕΙΛΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Α2. Να γράψετε τους αριθμούς 1-5 από τη Στήλη Α και δίπλα το γράμμα της Στήλης Β που δίνει τη σωστή αντιστοίχηση.

Α2. Να γράψετε τους αριθμούς 1-5 από τη Στήλη Α και δίπλα το γράμμα της Στήλης Β που δίνει τη σωστή αντιστοίχηση. ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ / Γ- ΕΠΑ.Λ. ΗΜΕΡΟΜΗΝΙΑ: 21-02- 2016 ΕΠΙΜΕΛΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ: Ι. ΜΙΧΑΛΕΑΚΟΣ-Α.ΚΑΤΡΑΚΗ ΘΕΜΑ Α. A1. Να γράψετε το γράμμα καθεμιάς από τις παρακάτω προτάσεις και δίπλα τη

Διαβάστε περισσότερα

Επίπεδο δικτύου IP Forwading κτλ

Επίπεδο δικτύου IP Forwading κτλ Επίπεδο δικτύου IP Forwading κτλ (IP για που το έβαλες) Εργαστήριο Δικτύων Υπολογιστών 2014-2015 Τμήμα Μηχανικών Η/Υ και Πληροφορικής Επίπεδο δικτύου (Network layer) Επίπεδο εφαρμογής (Application layer):

Διαβάστε περισσότερα

α. Συνόδου β. Μεταφοράς γ. Δικτύου δ. Διασύνδεσης δεδομένων ε. Φυσικού Επιπέδου (Μονάδες 5)

α. Συνόδου β. Μεταφοράς γ. Δικτύου δ. Διασύνδεσης δεδομένων ε. Φυσικού Επιπέδου (Μονάδες 5) ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ / ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 30/11/2014 ΕΠΙΜΕΛΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ: Ι. ΜΙΧΑΛΕΑΚΟΣ, Α. ΙΛΕΡΗ ΘΕΜΑ Α Α1. Να χαρακτηρίσετε τις προτάσεις που ακολουθούν γράφοντας δίπλα στο

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 1 ο ΚΕΦΑΛΑΙΟ

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 1 ο ΚΕΦΑΛΑΙΟ ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 1 ο ΚΕΦΑΛΑΙΟ ΕΡΩΤΗΣΕΙΣ - ΑΣΚΗΣΕΙΣ 1. Έστω ότι θέλετε να συνδέσετε 20 υπολογιστές με συνδέσεις από σημείο σε σημείο (point-to-point), ώστε να είναι δυνατή η επικοινωνία όλων

Διαβάστε περισσότερα

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών Εισαγωγή στην επιστήμη των υπολογιστών Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών 1 ίκτυα μικρά και μεγάλα Ένα δίκτυο υπολογιστών (computer network) είναι ένας συνδυασμός συστημάτων (δηλαδή, υπολογιστών),

Διαβάστε περισσότερα

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή 1 Πίνακας Περιεχομένων 1. Εισαγωγή... 4 1.1 Περιβάλλον Moodle...4 1.2 Χρήση ονόματος χρήστη και κωδικού...4 1.3 Δημιουργία νέου μαθήματος...4 1.3.1

Διαβάστε περισσότερα

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15. Δίκτυα υπολογιστών. (και το Διαδίκτυο)

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15. Δίκτυα υπολογιστών. (και το Διαδίκτυο) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Δίκτυα υπολογιστών (και το Διαδίκτυο) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι ένα δίκτυο υπολογιστών;

Διαβάστε περισσότερα

Πρωτόκολλα Διαδικτύου Μέρος 2ο. Επικοινωνίες Δεδομένων Μάθημα 3 ο

Πρωτόκολλα Διαδικτύου Μέρος 2ο. Επικοινωνίες Δεδομένων Μάθημα 3 ο Πρωτόκολλα Διαδικτύου Μέρος 2ο Επικοινωνίες Δεδομένων Μάθημα 3 ο Internet Protocol (IP) Στο επίπεδο δικτύου της τεχνολογίας TCP/IP, συναντάμε το πρωτόκολλο IP. Η λειτουργία του IP βασίζεται αποκλειστικά

Διαβάστε περισσότερα

Με λίγα λόγια, το TCP/IP καθορίζει τον τρόπο που πακετάρονται και μεταφέρονται τα δεδομένα της σύνδεσής μας.

Με λίγα λόγια, το TCP/IP καθορίζει τον τρόπο που πακετάρονται και μεταφέρονται τα δεδομένα της σύνδεσής μας. Γρήγορο Ίντερνετ με Κατάλληλες Ρυθμίσεις TCP/IP Η ταχύτητά μας στο ίντερνετ εξαρτάται από πολλούς παράγοντες, όπου τον κεντρικό ρόλο παίζει η σύνδεσή μας. Πολλές φορές, όμως, η σύνδεσή μας μπορεί να περιορίζεται

Διαβάστε περισσότερα

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ / ΕΠΑΛ(Α & Β ΟΜΑΔΑ) ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 11/12/2011 ΑΠΑΝΤΗΣΕΙΣ

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ / ΕΠΑΛ(Α & Β ΟΜΑΔΑ) ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 11/12/2011 ΑΠΑΝΤΗΣΕΙΣ ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ / ΕΠΑΛ(Α & Β ΟΜΑΔΑ) ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 11/12/2011 ΘΕΜΑ 1 ΑΠΑΝΤΗΣΕΙΣ Α. Να χαρακτηρίσετε κάθε μία από τις παρακάτω προτάσεις με Σωστό (Σ) ή Λάθος (Λ). 1. Στο μοντέλο

Διαβάστε περισσότερα

7.1.1 Επίπεδο δικτύου Γενικές Αρχές

7.1.1 Επίπεδο δικτύου Γενικές Αρχές Κεφάλαιο 7 3 κατώτερα επίπεδα OSI 7.1.1 Επίπεδο δικτύου Γενικές Αρχές Σελ. 220-224 Γεώργιος Γιαννόπουλος ΠΕ19, ggiannop (at) sch.gr ΕΣΠΕΡΙΝΟ ΕΠΑΛ Κομοτηνής http://diktya-epal-g.ggia.info/ Επικοινωνία σταθμών

Διαβάστε περισσότερα

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος Κεφάλαιο 3.1: Λειτουργικά Συστήματα 1 3.1.1 Λογισμικό και Υπολογιστικό Σύστημα Ένα σύγχρονο υπολογιστικό σύστημα αποτελείται από: το υλικό: τα ηλεκτρονικά μέρη του υπολογιστή και το λογισμικό: το σύνολο

Διαβάστε περισσότερα

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ Δρ. Κουζαπάς Δημήτριος Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής Δίκτυα Υπολογιστών Στόχοι 1 Να εξηγήσουμε τι είναι τα Δίκτυα Υπολογιστών, ποιες

Διαβάστε περισσότερα

Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα Πρωτόκολλα και Αρχιτεκτονική Δικτύου)

Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα Πρωτόκολλα και Αρχιτεκτονική Δικτύου) Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα 1.7 - Πρωτόκολλα και Αρχιτεκτονική Δικτύου) Πρωτόκολλο είναι ένα σύνολο κανόνων που πρέπει να ακολουθήσουν όλοι οι σταθμοί εργασίας σε ένα δίκτυο ώστε να μπορούν

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη

Διαβάστε περισσότερα