Γαβαλάς Δαμιανός dgavalas@aegean.gr Δίκτυα Υπολογιστών (Γ’ έτος, ΣΤ’ εξ) Διάλεξη #7: Επίπεδο Εφαρμογών (Application layer). Εργαστηριακές ασκήσεις στο εργαλείο προσομοίωσης δικτύων OPNET Γαβαλάς Δαμιανός dgavalas@aegean.gr Εαρινό εξάμηνο
Περίληψη διάλεξης Γενικές αρχές και κατηγορίες δικτυακών εφαρμογών Ο ρόλος του Επιπέδου Εφαρμογών (Application Layer) Πρωτόκολλα Επιπέδου Εφαρμογών HTTP FTP SMTP DNS Εργαστηριακές ασκήσεις στο εργαλείο προσομοίωσης δικτύων
Επίπεδο Εφαρμογών (Application Layer)
Το μοντέλο αναφοράς OSI (Open Systems Interconnection) Τα πακέτα στο επίπεδο μεταφοράς ονομάζονται segments Τα πακέτα στο επίπεδο δικτύου ονομάζονται datagrams Τα πακέτα στο data link layer ονομάζονται πλαίσια (frames)
Το μοντέλο αναφοράς TCP/IP
Παραδείγματα δικτυακών εφαρμογών E-mail Web Instant messaging (π.χ. chat) Remote login P2P file sharing Multi-user network games Audio και video Streaming Internet telephony Real-time video conference
Δημιουργία δικτυακών εφαρμογών Ανάπτυξη προγραμμάτων που: τρέχουν σε διαφορετικά συστήματα επικοινωνούν μέσω ενός δικτύου π.χ., Web: Το λογισμικό του Web server επικοινωνεί με το λογισμικό ενός browser Το επίπεδο εφαρμογών ΔΕΝ αφορά συσκευές του πυρήνα (core) των δικτύων, π.χ. routers Αυτές οι συσκευές δεν λειτουργούν στο επίπεδο μεταφοράς Ένας τέτοιος σχεδιασμός επιτρέπει τη γρήγορη ανάπτυξη εφαρμογών application transport network data link physical
Αρχιτεκτονικές δικτυακών εφαρμογών Client-server (μοντέλο πελάτη – διακομιστή) Peer-to-peer (P2P) (μοντέλο διομότιμης επικοινωνίας) Hybrid of client-server and P2P (υβριδικό μοντέλο πελάτη – διακομιστή και διομότιμης επικοινωνίας)
Αρχιτεκτονική client-server Ένας κόμβος που είναι πάντα ‘ανοικτός’ (always-on host) Σταθερή IP διεύθυνση Πολλαπλοί servers (server farms) για καλύτερη κλιμάκωση Πελάτες (clients): Επικοινωνούν με servers Δεν είναι πάντοτε on ή συνδεδεμένοι Μπορεί να έχουν δυναμικές IP διευθύνσεις Δεν επικοινωνούν απ’ ευθείας μεταξύ τους
Αμιγής P2P αρχιτεκτονική Δεν υπάρχει κάποιος ‘always-on’ server Αυθαίρετη απευθείας επικοινωνία τελικών κόμβων (end systems) Οι επικοινωνούντες ομότιμοι κόμβοι (peers) δεν είναι πάντα συνδεδεμένοι ούτε έχουν απαραίτητα σταθερή IP διεύθυνση Παράδειγμα: Gnutella Αυτή η αρχιτεκτονική προσφέρει πολύ καλή κλιμάκωση (Highly scalable) Είναι όμως δύσκολη στη διαχείριση (difficult to manage)
Υβριδική αρχιτεκτονική client-server και P2P Napster H μεταφορά αρχείων είναι P2P Η αναζήτηση αρχείων είναι κεντρική (centralized): Οι Peers καταγράφουν το περιεχόμενό τους σε έναν κεντρικό server Οι Peers εκτελούν ερωτήματα στον κεντρικό server για να εντοπίσουν περιεχόμενο που τους ενδιαφέρει Instant messaging Online Chat μεταξύ των χρηστών με P2P Ο εντοπισμός της τοποθεσίας του χρήστη γίνεται κεντρικά: Ο χρήστης καταγράφει την IP διεύθυνσή του σε ένα κεντρικό server όταν συνδέεται online Ο χρήστης βρίσκει μέσω του κεντρικού server τις IP διευθύνσεις των φίλων του
Επικοινωνία μεταξύ διεργασιών (Processes communication) Μέσα στον ίδιο H/Y, δύο διεργασίες μπορούν να επικοινωνήσουν χρησιμοποιώντας inter-process communication (ορίζεται από το λειτουργικό σύστημα) Διεργασίες που τρέχουν σε διαφορετικούς Η/Υ επικοινωνούν με την ανταλλαγή μηνυμάτων (messages) Client process: η διεργασία που αρχίζει μια επικοινωνία Server process: η διεργασία που περιμένει διεργασίες πελατών να έρθουν σε επαφή μαζί της
Διευθυνσιοδότηση διεργασιών (Addressing processes) Μια διεργασία πρέπει να έχει ένα αναγνωριστικό (διεύθυνση) για να λάβει μηνύματα Κάθε κόμβος έχει μια μοναδική 32-bit IP διεύθυνση Ερώτηση: αρκεί η IP διεύθυνση του Η/Υ όπου τρέχει μια διεργασία ως διεύθυνση της διεργασίας; Απάντηση: Όχι, πολλές διεργασίες μπορεί να εκτελούνται ταυτόχρονα στον ίδιο Η/Υ Η διεύθυνση μια διεργασίας περιλαμβάνει την IP διεύθυνση του Η/Υ και τον αριθμό θύρας (port number) που σχετίζεται με τη διεργασία Παραδείγματα port numbers: HTTP server: 80 Mail server: 25
Ένα πρωτόκολλο του Application layer ορίζει: Τον τύπο των μηνυμάτων που ανταλλάσσονται, π.χ., request & response μηνύματα Σύνταξη των μηνυμάτων: ποια πεδία περιλαμβάνουν, πως απεικονίζονται τα πεδία Σημασία της πληροφορίας που ενσωματώνεται σε κάθε πεδίο Κανόνες σχετικά με το πότε και πως οι διεργασίες στέλνουν και αποκρίνονται σε μηνύματα Δημόσια (Public-domain) πρωτόκολλα: Ορίζονται σε RFCs (Requests for Comments) Επιτρέπουν τη διαλειτουργικότητα π.χ., HTTP, SMTP Ιδιωτικά (Proprietary) πρωτόκολλα: π.χ., KaZaA
Απαιτήσεις κοινών εφαρμογών από την υπηρεσία μεταφοράς (Transport service) Application file transfer e-mail Web documents real-time audio/video stored audio/video interactive games instant messaging Data loss no loss loss-tolerant Bandwidth elastic audio: 5kbps-1Mbps video:10kbps-5Mbps same as above few kbps up Time Sensitive όχι ναι, 100’s msec ναι, λίγα secs ναι Elastic: όσο bandwidth περισσέψει Loss-tolerant: ανεκτικότητα σε απώλειες
Πρωτόκολλα μεταφοράς (transport protocols) στο Internet TCP: Με σύνδεση (connection-oriented): απαιτείται εγκατάσταση σύνδεσης μεταξύ των διεργασιών πελάτη και διακομιστή Αξιόπιστη μεταφορά (reliable transport) μεταξύ της διεργασίας-αποστολέα και της διεργασίας-παραλήπτη Έλεγχος ροής (flow control): ο αποστολέας δεν κατακλύζει τον παραλήπτη με πολλά δεδομένα Έλεγχος συμφόρησης (congestion control): ο αποστολέας δεν υπερφορτώνει το δίκτυο Δεν παρέχει: εγγυήσεις για χρονισμό (timing) και χρήση του ελάχιστου δυνατού bandwidth UDP: Γρήγορη αλλά αναξιόπιστη μεταφορά δεδομένων ανάμεσα σε επικοινωνούντες διεργασίες Δεν παρέχει: εγκατάσταση σύνδεσης, αξιοπιστία, έλεγχο ροής, έλεγχο συμφόρησης, εγγυήσεις για χρονισμό (timing) και χρήση του ελάχιστου δυνατού bandwidth
Εφαρμογές Internet: πρωτόκολλα του Application και Transport layer layer protocol SMTP [RFC 2821] Telnet [RFC 854] HTTP [RFC 2616] FTP [RFC 959] ιδιωτικό (π.χ. RealNetworks) (π.χ., Dialpad) Underlying transport protocol TCP TCP ή UDP τυπικά UDP Application e-mail remote terminal access Web file transfer streaming multimedia Internet telephony
Σύνοψη του HTTP (HyperText Markup Language) Πρωτόκολλο του Web, λειτουργεί στο application layer Μοντέλο client/server client: ένας browser που στέλνει αιτήσεις, λαμβάνει και εμφανίζει Web αντικείμενα server: Web server που στέλνει αντικείμενα σε απόκριση εισερχόμενων αιτήσεων HTTP 1.0: RFC 1945 HTTP 1.1: RFC 2068 Web αντικείμενα: HTML, JPEG, Java applet, audio, video files Κάθε web αντικείμενο έχει μια URL διεύθυνση: HTTP request PC running Explorer HTTP response HTTP request Server running Apache Web server HTTP response Mac running Navigator www.someschool.edu/someDept/pic.gif host name path name
Σύνοψη του HTTP Χρησιμοποιεί TCP: Ο client στέλνει μια αίτηση για TCP σύνδεση με το server, στην port 80 Ο server δέχεται την TCP σύνδεση από τον client HTTP μηνύματα (application-layer protocol messages) exchanged between browser (HTTP client) and Web server (HTTP server) TCP connection closed Το HTTP είναι ‘αμνήμων’ (“stateless”) Ο server δεν διατηρεί πληροφορία σχετικά με προηγούμενες αιτήσεις πελατών
HTTP συνδέσεις Επίμονο (Persistent) HTTP Όχι-επίμονο (Non-persistent) HTTP Το πολύ ένα web αντικείμενο μπορεί να σταλεί πάνω από κάθε TCP σύνδεση π.χ. για να «κατεβεί» μια web σελίδα με 10 εικόνες θα χρειαστούν 11 TCP συνδέσεις (εγκατάσταση και τερματισμός) Το HTTP/1.0 χρησιμοποιεί non-persistent HTTP Επίμονο (Persistent) HTTP Πολλά web αντικείμενα μπορούν μέσω μίας μόνο TCP σύνδεσης σε έναν web browser Το HTTP/1.1 χρησιμοποιεί persistent συνδέσεις
HTTP request μήνυμα Δύο τύποι HTTP μηνυμάτων: request, response ASCII (μορφή αναγνώσιμη από ανθρώπους) request line (GET, POST, HEAD εντολές) GET /somedir/page.html HTTP/1.1 Host: www.someschool.edu User-agent: Mozilla/4.0 Connection: close Accept-language:fr (extra carriage return, line feed) header lines User Agent: At various points in its history, use of the Web has been dominated by one browser to the extent that many websites are designed to work with that particular browser, rather than according to standards from bodies such as the W3C and IETF. Such sites often include "browser sniffing" code, which alters the information sent out depending on the User-Agent string received. This can mean that less popular browsers are not sent complex content, even though they might be able to deal with it correctly, or in extreme cases refused all content. Thus various browsers "cloak" or "spoof" this string, in order to identify themselves as something else to such detection code; often, the browser's real identity is then included later in the string. The earliest example of this is Internet Explorer's use of a User-Agent string beginning "Mozilla/<version> (compatible; MSIE <version>...", in order to receive content intended for Netscape Navigator, its main rival at the time of its development. It should be stressed that this is not a reference to the open-source Mozilla browser, which was developed much later, but to the original codename for Navigator, which was also the name of the Netscape company mascot. This format of User-Agent string has since been copied by other user agents, partly because Explorer, in turn, came to dominate. Carriage return, line feed indicates end of message
HTTP request μήνυμα: γενική μορφή
HTTP response μήνυμα ΗΤΤP status code status line (protocol status phrase) HTTP/1.1 200 OK Connection close Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 …... Content-Length: 6821 Content-Type: text/html data data data data data ... header lines data, e.g., requested HTML file
HTTP response status codes In first line in server->client response message. A few sample codes: 200 OK request succeeded, requested object later in this message 301 Moved Permanently requested object moved, new location specified later in this message (Location:) 400 Bad Request request message not understood by server 404 Not Found requested document not found on this server 505 HTTP Version Not Supported
Αποθηκεύοντας στοιχεία για τη διάδραση χρηστών με server: cookies Πολλά μεγάλα Web sites χρησιμοποιούν cookies Τέσσερα στοιχεία: 1) cookie header γραμμή στο HTTP response μήνυμα 2) cookie header line στο HTTP request μήνυμα 3) Το cookie file διατηρείται στον Η/Υ του χρήστη και το διαχειρίζεται ο browser του χρήστη 4) Αποθήκευση δεδομένων στη βάση δεδομένων του Web site Παράδειγμα: Ο Τάκης συνδέεται στο Internet πάντα από τον ίδιο Η/Υ Επισκέπτεται ένα συγκεκριμένο e-commerce site για πρώτη φορά Όταν οι αρχικές HTTP αιτήσεις φθάνουν στο site, το site δημιουργεί ένα μοναδικό ID και το αποθηκεύει στη ΒΔ του
Λειτουργία των Cookies client server usual http request msg usual http response + Set-cookie: 1678 cookie: 1678 usual http response msg cookie- specific action spectific Cookie file ebay: 8734 server creates ID 1678 for user entry in backend database Cookie file amazon: 1678 ebay: 8734 access μια βδομάδα αργότερα: access Cookie file amazon: 1678 ebay: 8734
Χρήσεις των cookies Εξουσιοδότηση πρόσβασης (authorization) Καλάθια αγορών (shopping carts) Προτάσεις (recommendations) .......
Προσωρινή αποθήκευση Web αντικειμένων: web caches (proxy server) Στόχος: να ικανοποιήσουμε τις αιτήσεις των clients χωρίς απαραίτητα τη βοήθεια του web server που αποθηκεύει το αιτούμενο περιεχόμενο origin server Ο browser στέλνει όλα τα HTTP requests σε ένα ενδιάμεσο (cache) Αν το αιτούμενο αντικείμενο υπάρχει στο cache, το cache θα το επιστρέψει Διαφορετικά, το cache θα προωθήσει την αίτηση στον (origin) που θα επιστρέψει το αντικείμενο στον client Proxy server HTTP request HTTP request client HTTP response HTTP response HTTP request Πλεονεκτήματα: μεγαλύτερη ταχύτητα, δεν χρησιμοποιείται το link που συνδέει το institution network με το Internet Μειονεκτήματα: το cache αποτελεί έκδοση του αιτούμενου αντικειμένου (εγγράφου, εικόνας, ...) από το παρελθόν, στο μεταξύ το αντικείμενο μπορεί να έχει ανανεωθεί. Επίσης απαιτείται μεγάλος αποθηκευτικός χώρος στον proxy server HTTP response origin server client Ερώτηση: ποια είναι τα πλεονεκτήματα και ποια τα προβλήματα που εντοπίζετε σε αυτή τη μέθοδο;
Προσωρινή αποθήκευση Web αντικειμένων: web caches (proxy server) To Cache (proxy server) λειτουργεί ως client και server origin servers Γιατί Web caching? Μειώνει το χρόνο απόκρισης για την εξυπηρέτηση client requests Μειώνει την κίνηση (traffic) στο access link του οργανισμού Internet 1.5 Mbps access link Δίκτυο οργανισμού Μειονεκτήματα: Τα cached αντικείμενα μπορεί να έχουν στο μεταξύ ενημερωθεί στον origin server Απαιτείται (μεγάλος) αποθηκευτικός χώρος στον proxy server 10 Mbps LAN cache οργανισμού
Υπο συνθήκη (Conditional) GET O cache συχνά ενημερώνει το περιεχόμενό του Στόχος: ο server αν μη στείλει το αντικείμενο αν το cache έχει μία πρόσφατη έκδοσή του Cache: Ορίζεται η ημερομηνία του cached copy στο HTTP request If-modified-since: <date> Server: το response δεν περιέχει δεδομένα (το αντικείμενο) αν το αντικείμενο δεν έχει τροποποιηθεί από τότε που έγινε cached: HTTP/1.0 304 Not Modified cache server HTTP request msg If-modified-since: <date> To αντικείμενο δεν έχει τροποποιηθεί HTTP response HTTP/1.0 304 Not Modified HTTP request msg If-modified-since: <date> To αντικείμενο έχει τροποποιηθεί HTTP response HTTP/1.0 200 OK <data>
FTP: File Transfer Protocol (Πρωτόκολλο Μεταφοράς Αρχείων) user interface client file transfer FTP server user at host local file system remote file system Μεταφορά αρχείων από/προς ένα απομακρυσμένο Η/Υ (FTP server) client/server μοντέλο client: αρχίζει τη διαδικασία της μεταφοράς (από/προς τον FTP server) server: o απομακρυσμένος Η/Υ ftp: RFC 959 Ο ftp server είναι λογισμικό που «τρέχει» στην port 21
TCP control connection FTP: ξεχωριστές συνδέσεις για μεταφορά εντολών και για μεταφορά αρχείων Ο FTP client ανοίγει μια TCP σύνδεση με την εφαρμογή FTP server στην port 21 Ο Client περνάει από μια διαδικασία εξουσιοδότησης πρόσβασης (Login) Ο Client μπορεί να επισκοπήσει (browse) τους απομακρυσμένους φακέλους στέλνοντας FTP εντολές μέσα από την ίδια TCP σύνδεση Όταν ο server δέχεται μία εντολή για μεταφορά αρχείου, ο server ανοίγει μία “FTP data” TCP σύνδεση με τον client Μετά την ολοκλήρωση της μεταφοράς κάθε αρχείου, ο server κλείνει την “FTP data” σύνδεση Ξεχωριστές FTP data συνδέσεις για κάθε μεταφορά αρχείου FTP client server TCP control connection port 21 TCP data connection port 20
FTP εντολές, αποκρίσεις Δείγματα εντολών: Στέλνονται ως ASCII κείμενο πάνω από τη “σύνδεση ελέγχου” USER username PASS password LIST επιστρέφει τη λίστα των αρχείων του τρέχοντος φακέλου RETR filename ανακτάει (get) ένα αρχείο STOR filename ανεβάζει (put) ένα αρχείο στον FTP server Δείγματα κωδικών που επιστρέφει ο FTP server: status code και κείμενο (όπως στο HTTP) 331 Username OK, password required 125 data connection already open; transfer starting 425 Can’t open data connection 452 Error writing file
Electronic Mail SMTP SMTP SMTP Τρία κύρια συστατικά: user mailbox outgoing message queue Τρία κύρια συστατικά: user agents (πράκτορες χρηστών) mail servers simple mail transfer protocol (SMTP) User Agent Πρόγραμμα για την σύνταξη, επεξεργασία, ανάγνωση, διαχείριση μηνυμάτων π.χ., Eudora, Outlook, Netscape Messenger Εξερχόμενα και εισερχόμενα μηνύματα αποθηκεύονται στον mail server user agent mail server user agent SMTP mail server user agent SMTP mail server SMTP user agent user agent user agent
Electronic Mail: mail servers Το mailbox αποθηκεύει εισερχόμενα μηνύματα για τους χρήστες Ουρά μηνυμάτων (message queue) εξερχόμενων emails To SMTP πρωτόκολλο διευθετίζει την αποστολή email μηνυμάτων μεταξύ mail servers Ισχύει το client/server μοντέλο: client: ο αποστολέας mail server “server”: ο αποδέκτης mail server user agent mail server user agent SMTP mail server user agent SMTP mail server SMTP user agent user agent user agent
Electronic Mail: SMTP [RFC 2821] Χρησιμοποιεί TCP για την αξιόπιστη μεταφορά email μηνυμάτων από ένα client σε ένα server, port 25 Απευθείας μεταφορά από τον αποστολέα στον αποδέκτη mail server Τρεις φάσεις μεταφοράς Χειραψία (handshaking) Μεταφορά μηνυμάτων Τερματισμός σύνδεσης Αλληλεπίδραση εντολή/απόκριση (command/response interaction) Εντολές: ASCII text Αποκρίσεις: status code και κείμενο
Σενάριο: Η Αλίκη στέλνει email στον Bob 1) Η Αλίκη χρησιμοποιεί τον User Agent (UA) για να συντάξει το μήνυμα προς τον (“to”) bob@someschool.edu 2) Ο UA της Αλίκης στέλνει το μήνυμα στον mail server της. Το μήνυμα τοποθετείται στην ουρά μηνυμάτων (message queue) 3) Ο mail server της Αλίκης (Client) ανοίγει μια TCP σύνδεση με τον mail server του Bob 4) O SMTP client στέλνει το μήνυμα ης Αλίκης μέσω της TCP σύνδεσης 5) Ο mail server του Bob τοποθετεί το εισερχόμενο μήνυμα στο προσωπικό του mailbox 6) Ο Bob κατεβάζει και διαβάζει το μήνυμα χρησιμοποιώντας τον user agent του mail server mail server 1 user agent user agent 2 3 6 4 5
Δείγμα SMTP διάδρασης S: 220 hamburger.edu C: HELO crepes.fr S: 250 Hello crepes.fr, pleased to meet you C: MAIL FROM: <alice@crepes.fr> S: 250 alice@crepes.fr... Sender ok C: RCPT TO: <bob@hamburger.edu> S: 250 bob@hamburger.edu ... Recipient ok C: DATA S: 354 Enter mail, end with "." on a line by itself C: Do you like ketchup? C: How about pickles? C: . S: 250 Message accepted for delivery C: QUIT S: 221 hamburger.edu closing connection S: Server C: Client
SMTP: τελικά σχόλια Το SMTP χρησιμοποιεί persistent συνδέσεις (μεταφορά πολλών αντικειμένων πάνω από την ίδια σύνδεση) Το SMTP απαιτεί το μήνυμα (header & body) σε 7-bit ASCII Ο SMTP server ψάχνει τους χαρακτήρες CRLF.CRLF για να εντοπίσει το τέλος του μηνύματος Σύγκριση με HTTP: HTTP: pull SMTP: push Και τα δύο χρησιμοποιούν ASCII command/response συναλλαγές, status codes HTTP: κάθε αντικείμενο ενσωματώνεται σε ξεχωριστό response μήνυμα SMTP: πολλαπλά αντικείμενα μπορούν να σταλούν σε ένα multipart μήνυμα
Μορφή Mail μηνύματος header body blank line SMTP: πρωτόκολλο για ανταλλαγή emails RFC 822: πρότυπο που ορίζει τη μορφή (format) των μηνυμάτων header lines, e.g., To: From: Subject: body το “μήνυμα”, μόνο ASCII χαρακτήρες header blank line body
Μορφή mail μηνύματος: πολυμεσικές επεκτάσεις (multimedia extensions) MIME: multimedia mail extension, RFC 2045, 2056 Πρόσθετες γραμμές στην κεφαλίδα του μηνύματος δηλώνουν τον MIME τύπο περιεχομένου From: alice@crepes.fr To: bob@hamburger.edu Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data MIME version Μέθοδος κωδικοποίησης δεδομένων multimedia δεδομένα, τύπος, υπο-τύπος, δηλώσεις παραμέτρων κωδικοποιημένα δεδομένα
Πρωτόκολλα πρόσβασης σε mail servers (Mail access protocols) SMTP SMTP access protocol user agent user agent sender’s mail server receiver’s mail server Ο ρόλος του SMTP είναι η παράδοση / αποθήκευση μηνυμάτων στον mail server του παραλήπτη Ο ρόλος του Mail access protocol: ανάκτηση μηνυμάτων από τον server POP: Post Office Protocol [RFC 1939] Εξακρίβωση ταυτότητας (authorization) μεταξύ user agent <--> server και download IMAP: Internet Mail Access Protocol [RFC 1730] Περισσότερες λειτουργίες (πιο πολύπλοκο) Χειρισμός αποθηκευμένων μηνυμάτων στο server HTTP: Hotmail , Yahoo! Mail, etc.
POP3 protocol C: list Φάση εξακρίβωσης ταυτότητας S: +OK POP3 server ready C: user bob S: +OK C: pass hungry S: +OK user successfully logged on Φάση εξακρίβωσης ταυτότητας εντολές client: user: ορίζει το username pass: password Αποκρίσεις του server +OK -ERR Φάση συναλλαγής, client: list: list message numbers retr: retrieve message by number dele: delete quit C: list S: 1 498 S: 2 912 S: . C: retr 1 S: <message 1 contents> C: dele 1 C: retr 2 C: dele 2 C: quit S: +OK POP3 server signing off
Ρυθμίσεις email
DNS: Domain Name System (Σύστημα Ονομάτων Περιοχής) Άνθρωποι: πολλά ‘αναγνωριστικά’: Αριθμός ταυτότητας, όνομα, αριθμός διαβατηρίου, ... Internet κόμβοι, routers: IP address (32 bit) – χρησιμοποιούνται για την διευθυνσιοδότηση των IP datagrams “όνομα”, π.χ., ww.yahoo.com – χρησιμοποιείται από ανθρώπους Ερώτηση: αντιστοίχηση μεταξύ IP διευθύνσεων και ονομάτων;;; Domain Name System: Κατανεμημένη βάση δεδομένων υλοποιείται ως μία ιεραρχία πολλών name servers Είναι ένα application-layer πρωτόκολλο με το ρόλο να διευθετήζει την επικοινωνία μεταξύ κόμβων, routers, name servers για την επίλυση (resolve) ονομάτων (διεύθυνση/όνομα μετάφραση)
DNS DNS υπηρεσίες Γιατί όχι κεντρικό DNS;;; Μετάφραση Hostname σε IP διεύθυνση Κατανομή φόρτου (Load distribution) Πολλαπλοί πανομοιότυποι Web servers: σύνολο IP διευθύνσεων για ένα όνομα Γιατί όχι κεντρικό DNS;;; μοναδικό σημείο αποτυχίας (single point of failure) μεγάλος όγκος κίνησης (traffic volume) μακρινή απόσταση ως την κεντρική ΒΔ & απόκριση (distant centralized database) δεν έχει καλή κλιμάκωση (low scalability)
Κατανεμημένη, Ιεραρχική Database Root DNS Servers com DNS servers org DNS servers edu DNS servers poly.edu DNS servers umass.edu yahoo.com amazon.com pbs.org Ένας Client θέλει την IP του www.amazon.com; 1η μέθοδος: Ο Client στέλνει ένα ερώτημα (queries) έναν root server για να βρει τον com DNS server Ο Client στέλνει ένα ερώτημα στον com DNS server για να βρει τον amazon.com DNS server Ο Client στέλνει ένα ερώτημα στον amazon.com DNS server για να βρει την IP address του www.amazon.com
DNS: Root name servers Ο τοπικός name server έρχεται σε επαφή με τον root name server root name server: έρχεται σε επαφή με τον κατάλληλο (authoritative) name server αν το όνομα που ζητείται δεν είναι γνωστό Βρίσκει την αντιστοίχηση Επιστρέφει την αντιστοίχηση στον τοπικό name server b USC-ISI Marina del Rey, CA l ICANN Los Angeles, CA e NASA Mt View, CA f Internet Software C. Palo Alto, CA (and 17 other locations) i Autonomica, Stockholm (plus 3 other locations) k RIPE London (also Amsterdam, Frankfurt) m WIDE Tokyo a Verisign, Dulles, VA c Cogent, Herndon, VA (also Los Angeles) d U Maryland College Park, MD g US DoD Vienna, VA h ARL Aberdeen, MD j Verisign, ( 11 locations) 13 root name servers παγκοσμίως
TLD και Authoritative Servers Top-level domain (TLD) servers: υπεύθυνοι για com, org, net, edu, etc, και όλα τα top-level domains χωρών uk, fr, ca, jp. Network solutions maintains servers for com TLD Educause for edu TLD Authoritative DNS servers: DNS servers των οργανισμών, παρέχουν hostname <--> IP αντιστοιχίσεις για τους servers του οργανισμού (π.χ., Web και mail). Μπορεί να διατηρούνται από τον οργανισμό ή τον παροχέα υπηρεσιών
Τοπικός Name Server Δεν ανήκει απαραίτητα στην ιεραρχία Κάθε ISP (εμπορικός ISP, εταιρία, παν/μιο) διαθέτει ένα τοπικό DNS Αποκαλείται και “default name server” Όταν ένας κόμβος εκτελεί ένα DNS ερώτημα, το ερώτημα στέλνεται στον τοπικό DNS server Λειτουργεί ως ενδιάμεσος (proxy), προωθεί το ερώτημα στην ιεραρχία
authoritative DNS server Παράδειγμα root DNS server Ο κόμβος cis.poly.edu θέλει να βρει την IP διεύθυνση του gaia.cs.umass.edu 2 3 TLD DNS server 4 5 τοπικός DNS server dns.poly.edu 7 6 1 8 authoritative DNS server dns.cs.umass.edu requesting host cis.poly.edu gaia.cs.umass.edu
Αναδρομικά ερωτήματα (recursive queries) requesting host cis.poly.edu gaia.cs.umass.edu root DNS server local DNS server dns.poly.edu 1 2 4 5 6 authoritative DNS server dns.cs.umass.edu 7 8 TLD DNS server 3 Αναδρομικό (iterative) ερώτημα: Μεταφέρει το βάρος της επίλυσης του ονόματος από τον τοπικό στους root και TLD servers μεγάλος φόρτος! Επαναληπτικό (recusrsive) ερώτημα: Ο name server με τον οποίο ήρθαμε σε επαφή απαντάει με την IP που αντιστοιχεί στο όνομα που στείλαμε Αν δεν το ξέρει: “Δεν ξέρω αυτό το όνομα, αλλά ρώτησε αυτό το name server” Τα παραδείγματα που δείξαμε ως τώρα είναι με επαναληπτικά (iterative) ερωτήματα
Παράδειγμα εκτέλεσης ερωτήματος με αναδρομή (recursive)
DNS: προσωρινή αποθήκευση (caching) και ενημέρωση (updating) εγγραφών Μόλις κάποιος name server μάθει κάποια νέα αντιστοίχηση, την αποθηκεύει (caches) Οι cache εγγραφές λήγουν (timeout) μετά από κάποιο χρόνο Οι IP διευθύνσεις των TLD servers είναι τυπικά αποθηκευμένες στους τοπικούς name servers Έτσι οι τοπικοί name servers δεν επισκέπτονται συχνά τους root name servers
DNS εγγραφές (records) DNS: κατανεμημένη αποθήκευση resource records (RR) σε ΒΔ ttl: time to live (μετά από πόσο χρόνο θα λήξει η εγγραφή) μορφή RR: (name, value, type, ttl) Type=A name είναι όνομα κόμβου (hostname) value είναι IP διεύθυνση Type=CNAME name είναι ψευδο-όνομα (alias) για κάποιο «κανονικό» (αληθινό) όνομα www.ibm.com είναι στην πραγματικότητα servereast.backup2.ibm.com value είναι το αληθινό όνομα Type=NS name είναι περιοχή (e.g. foo.com) value είναι IP διεύθυνση του authoritative name server αυτής της περιοχής Type=MX value είναι το όνομα του mailserver που συσχετίζεται με το name
DNS πρωτόκολλο: μηνύματα DNS πρωτόκολλο: query και reply μηνύματα, και τα δύο με την ίδια μορφή μηνύματος (format) Κεφαλίδα μηνύματος identification: 16-bit α/α (#) για ερώτημα, η απάντηση στην ερώτηση χρησιμοποιεί τον ίδιο # Flags (σημαίες): query ή reply ζητείται αναδρομή (recursion) recursion διαθέσιμη η απάντηση είναι authoritative
DNS πρωτόκολλο: μηνύματα Όνομα, τύπος πεδίων για ένα ερώτημα RRs σε απάντηση ερωτήματος εγγραφές για authoritative servers επιπλέον “βοηθητική” πληροφορία που μπορεί να χρησιμοποιηθεί RR: Resource record
Εισαγωγή εγγραφών στο DNS Παράδειγμα: μόλις δημιουργήσαμε την εταιρία “Network Utopia” Θέλουμε να καταγράψουμε το όνομα networkuptopia.com σε κάποιον DNS (registrar) Πρέπει να παρέχουμε στον registrar τα ονόματα και IP διευθύνσεις του authoritative name server (primary and secondary) O Registrar εισάγει RRs (resource records) στον “com TLD server”: (networkutopia.com,dns1.networkutopia.com,NS) (dns1.networkutopia.com, 212.212.212.1, A) Type: domain Type=NS name είναι περιοχή (e.g. foo.com) value είναι IP διεύθυνση του authoritative name server αυτής της περιοχής Type=A name είναι όνομα κόμβου (hostname) value είναι IP διεύθυνση Type: host
Εργαστηριακές ασκήσεις στο εργαλείο προσομοίωσης δικτύων OPNET
OPNET Εργαλείο προσομοίωσης δικτύων (network simulation tool) Γιατί χρειάζονται τα εργαλεία προσομοίωσης δικτύων; Προσμοιώνουν τον πραγματικό κόσμο στην οθόνη του υπολογιστή Για ακαδημαϊκούς σκοπούς Δυνατότητα σχεδιασμού δικτύων (network models) με ρεαλιστικά μέσα μετάδοσης, δικτυακές συσκευές, δικτυακά πρωτόκολλα Βοηθούν στην κατανόηση της λειτουργίας των δικτύων και των επιπτώσεων της αύξησης του αριθμού χρηστών ή της δικτυακής κίνησης (traffic) Επιλογή στατιστικών (από όλο το δίκτυο ή μια συγκεκριμένη συσκευή) που θα συλλεχθούν από την προσομοίωση «Τρέξιμο» προσομοίωσης, επισκόπηση και κατανόηση παραγόμενων στατιστικών Για τους διαχειριστές δικτύων Ποιο φθηνή λύση από το να αγοράσεις και να στήσεις ένα δίκτυο που θα αποδειχθεί μη λειτουργικό στην πράξη Ανάλυση απαιτήσεων χρηστών, εφαρμογών και (σε συνδυασμό με μια ανάλυση κόστους) προσομοίωση δικτυακών λύσεων και επιλογή εκείνης με το καλύτερο λόγο «value for money» Αντίστοιχα, προσομοίωση δικτυακών λύσεων για επέκταση (upgrade) υφιστάμενων λύσεων
Μεθοδολογία Προσομοίωσης Αναλυτική παρουσίαση της μεθοδολογίας που ακολουθείται Συνοπτική παρουσίαση της μεθοδολογίας που ακολουθείται
Μικρής κλίμακας τοπικά δίκτυα Η σημερινή εργαστηριακή άσκηση στο OPNET επικεντρώνει στην επέκταση του δικτύου μικρής κλίμακας που δημιουργήσαμε στο προηγούμενο μάθημα Στο τέλος της άσκησης θα έχουμε: δημιουργήσει μια νέα δικτυακή τοπολογία (σενάριο) που θα αποτελεί επέκταση της προηγούμενης συλλέξει στατιστικές μετρήσεις για την απόδοση του (νέου) δικτύου συγκρίνει τις μετρήσεις αυτές μεταξύ των δύο ‘όψεων’ του δικτύου (σεναρίου)
Δημιουργία νέου project H σχεδίαση γίνεται στον Project Editor που εμφανίζεται εξ’ ορισμού με τη δημιουργία ενός project H δημιουργία ενός μοντέλου δικτύου (network model) προϋποθέτει τη δημιουργία ενός σεναρίου που ενσωματώνεται σε ένα project To project είναι ένα σύνολο από συσχετιζόμενα σενάρια που επιτρέπουν τη διερεύνηση μιας άλλης πλευράς του δικτύου Σε κάθε ένα από τα σενάρια αυτά εξετάζεται διαφορετική προσέγγιση του δικτύου Τα βασικά χαρακτηριστικά καθορίζονται μέσω του Startup Wizard
Project Editor window
Project Editor buttons
Δημιουργία ενός δικτύου: Τοπολογία – Χρήση του Rapid Configuration wizard Δημιουργεί ένα δίκτυο επιλέγοντας: Την τοπολογία του δικτύου Τους τύπους των κόμβων του δικτύου Κόμβος (node): συμβολίζει ένα πραγματικό δικτυακό αντικείμενο που μπορεί να μεταδίδει και να λαμβάνει δεδομένα Συνδέσεις (links): Επικοινωνιακό μέσο που διασυνδέει κόμβους μεταξύ τους.
Δημιουργία του δικτύου: Rapid Configuration wizard Επιλέξτε Topology Rapid Configuration Star Προσδιορίστε τα node models και link models του δικτύου. Τα models ακολουθούν το παρακάτω σχήμα ονομασίας: <protocol1>_..._<protocoln>_<function>_<mod> <protocol> ορίζει το πρωτόκολλο(α) που υποστηρίζονται από το μοντέλο <function>: συντόμευση της γενικής λειτουργίας του μοντέλου <mod>: δείχνει το επίπεδο κληρονομικότητας (derivation) του μοντέλου
Δημιουργία του δικτύου: Rapid Configuration wizard
Δημιουργία του δικτύου: Rapid Configuration wizard
Δημιουργία του δικτύου: προσθήκη server Θα χρησιμοποιήσουμε τη 2η μέθοδο δημιουργίας δικτυακών αντικειμένων: θα «τραβήξουμε» αντικείμενα από την παλέτα αντικειμένων (object palette) στο χώρο εργασίας (workspace) Αν δεν είναι ήδη ανοικτή, ανοίξτε την object palette με κλικ στο αντίστοιχο πλήκτρο Τραβήξτε το Sm_Int_server αντικείμενο στο workspace. Στη συνέχεια πρέπει να συνδέσουμε το server στο υπόλοιπο δίκτυο με ένα 10BaseT link Κάνετε κλικ στο 10BaseT link object στην παλέτα Κάνετε ένα κλικ στο server και ένα στο switch (στο κέντρο του star) ώστε να σχεδιασθεί ένα link που θα συνδέει τα δύο αντικείμενα
Δημιουργία του δικτύου: ορισμός traffic Τέλος, πρέπει να προστεθούν αντικείμενα (configuration objects) για τον προσδιορισμό της δικτυακής κίνησης που προέρχεται από εφαρμογές (application traffic). Η κίνηση του δικτύου προστίθεται μέσω αντικειμένων διαμόρφωσης της παλέτας αντικειμένων Αντικείμενο καθορισμού εφαρμογών (application definition object): εφαρμογές που «τρέχουν» στο δίκτυο (π.χ. e-mail) και συχνότητα με την οποία στέλνουν / ζητούν δεδομένα Αντικείμενο καθορισμού προφίλ χρηστών (profile definition objects): Είδος των εφαρμογών που χρησιμοποιεί (π.χ. light database access) Συχνότητα με την οποία καλεί τη συγκεκριμένη εφαρμογή
Δημιουργία του δικτύου: ορισμός traffic Στα πλαίσια αυτής της άσκησης, εισάγουμε από την παλέτα αντικειμένων (object palette): ένα application definition object με τις προκαθορισμένες ρυθμίσεις (default configurations) των standard applications ένα profile definition object με ένα προφίλ που μοντελοποιεί πρόσβαση σε βάση δεδομένων
Profile definition object Η δημιουργία του δικτύου έχει πλέον ολοκληρωθεί και είμαστε έτοιμοι για τη συλλογή στατιστικών
Δημιουργία του δικτύου: συλλογή στατιστικών Μπορούμε να συλλέξουμε στατιστικά για μεμονωμένα αντικείμενα του δικτύου (object statistics) ή για ολόκληρο το δίκτυο (global statistics) Τα στατιστικά επιλέγονται για κάθε σενάριο ξεχωριστά και αφορούν μόνο το σενάριο για το οποίο έχουν επιλεχθεί Μας ενδιαφέρει να συλλέξουμε στατιστικά που θα απαντούν ερωτήματα όπως: Θα αντέξει ο server τον επιπλέον φόρτο από ένα δεύτερο δίκτυο; Η συνολική καθυστέρηση (total delay) στο δίκτυο θα είναι αποδεκτή όταν εγκατασταθεί το 2ο δίκτυο; Για να απαντηθούν αυτές οι ερωτήσεις πρέπει να έχουμε εικόνα της παρούσας κατάστασης του δικτύου (πριν επεκταθεί) Χρειαζόμαστε ένα object statistic (Server Load) και ένα global statistic (Ethernet delay)
Δημιουργία του δικτύου: συλλογή στατιστικών To Server load είναι ένα βασικό στατιστικό που αντανακλά την απόδοση όλου του δικτύου Right-click στον server node (node_31) Choose Individual Statistics
Δημιουργία του δικτύου: συλλογή στατιστικών Συλλογή στατιστικών για τη συνολική καθυστέρηση στο δίκτυο Right-click στον κενό χώρο του workspace Choose Individual Statistics
«Τρέξιμο» προσομοίωσης Επιλέξτε Simulation Configure Discrete Event Simulation… ή κάνετε κλικ στο “configure / run simulation” πλήκτρο Πληκτρολογείστε Duration: 0,5 για να προσομοιώσετε μισή ώρα δικτυακής λειτουργίας Πατήστε ‘Run’ για να ξεκινήσει η προσομοίωση
«Τρέξιμο» προσομοίωσης Όσο εκτελείται η προσομοίωση, ένα πλαίσιο διαλόγου ενημερώνει για την πρόοδο της προσομοίωσης Για πόσο χρόνο εκτελείται η προσομοίωση Προσομοιωμένος χρόνος δικτυακής λειτουργίας
Επισκόπηση αποτελεσμάτων Right-click στον κενό χώρο του workspace View Results Στην κορύφωσή του (peak) ο φόρτος (load) του server είναι λιγότερο από 6000 bits/second Αφού το δίκτυο σταθεροποιηθεί, η μέγιστη καθυστέρηση είναι περίπου 0.4 msec Αυτές οι τιμές θα συγκριθούν με την εικόνα του δικτύου μετά την αναβάθμισή του
Αναβάθμιση του δικτύου: δημιουργία διπλότυπου σεναρίου Ανάγκη για: Μελέτη εναλλακτικών περιπτώσεων Σχεδιασμός νέας τοπολογίας Επέκταση υπάρχουσας υποδομής Διερεύνηση ‘what-if’ σεναρίων Το νέο (αναβαθμισμένο) δίκτυο υλοποιείται στο OPNET ως διαφορετικό σενάριο, δημιουργώντας διπλότυπο (duplicate) του σεναρίου που ήδη υπάρχει
Αναβάθμιση του δικτύου Έχουμε δημιουργήσει ένα αρχικό (baseline) δίκτυο και συλλέξαμε στατιστικά για αυτό Είμαστε έτοιμοι να το αναβαθμίσουμε και να επιβεβαιώσουμε ότι εξακολουθεί να λειτουργεί ικανοποιητικά με επιπλέον φόρτο Για να εκτελέσουμε σύγκριση μεταξύ των δύο μορφών του ίδιου δικτύου, καλό είναι να αποθηκεύουμε το αρχικό ως ένα σενάριο και το αναβαθμισμένο ως άλλο σενάριο Θα αντιγράψουμε το αρχικό σενάριο και θα κάνουμε μόνο τις απαραίτητες αλλαγές στο δεύτερο σενάριο Αντιγραφή του αρχικού σεναρίου Επιλέξτε Scenarios Duplicate Scenario... Κρατήστε το ίδιο όνομα σεναρίου, προσθέτοντας τη λέξη expansion στο τέλος Επιλέξτε OK.
Αναβάθμιση του δικτύου Η αναβάθμιση αφορά επέκταση του υφιστάμενου δικτύου σε ένα δεύτερο όροφο Ο δεύτερος όροφος θα έχει όμοια τοπολογία με τον πρώτο, μόνο που δεν θα έχει ξεχωριστό server Επιλέξτε Topology Rapid Configuration Επιλέξτε Star και δώσετε τις ρυθμίσεις που φαίνονται στη διπλανή εικόνα
Αναβάθμιση του δικτύου: συνένωση των δικτύων των δύο ορόφων Αν δεν είναι ήδη ανοικτή, ανοίξτε την παλέτα αντικειμένων (object palette) Εισάγετε στο workspace έναν Cisco 2514 δρομολογητή (router) ανάμεσα στα δύο δίκτυα Συνδέστε τον Cisco router με τους 3Com switches (που βρίσκονται στο κέντρο κάθε star) με ένα 10BaseT link Κλείστε την object palette Αποθηκεύστε το project επιλέγοντας File Save
Αναβάθμιση του δικτύου: τελική τοπολογία & εκτέλεση της προσομοίωσης Επιλέξτε Simulation Configure Discrete Event Simulation και επιβεβαιώστε ότι η τιμή του Duration είναι 0,5 hours Πατήστε ‘Run’ για να «τρέξει» η προσομοίωση
Αναβάθμιση του δικτύου: Επισκόπηση αποτελεσμάτων Right-click στον κενό χώρο του workspace View Results
Αναβάθμιση του δικτύου: Σύγκριση αποτελεσμάτων των δύο σεναρίων Right-click στον κενό χώρο του workspace Compare Results
Αναβάθμιση του δικτύου: Ποιοτική αξιολόγηση αποτελεσμάτων Παρότι ο μέσος φόρτος (average load) του server είναι υψηλότερος στο αναβαθμισμένο δίκτυο, όπως αναμενόταν, δεν αυξάνεται σταθερά με την πάροδο του χρόνου, δείχνοντας ότι το δίκτυο παραμένει σταθερό Το δεύτερο γράφημα δείχνει ότι δεν υπάρχει σημαντική διαφορά στην καθυστέρηση του δικτύου (Ethernet delay). Ο φόρτος του server έχει αυξηθεί, όχι όμως και η καθυστέρηση
Μέτρηση χρήσης (utilization) της CPU του server και εξερχόμενου traffic από τον database server Θα πρέπει να ορίσετε το στατιστικό αυτό και στα δύο σενάρια και ξανατρέξετε και τις δύο προσομοιώσεις Για να «μετακινηθείτε» ανάμεσα σε διαφορετικά σενάρια επιλέξτε Scenarios Switch to scenario Ομοίως, προσθέστε ένα στατιστικό για τη μέτρηση της κίνησης (traffic, bytes/sec) που προέρχεται από τον Database server (που είναι εγκατεστημένος στον server του δικτύου) CPU Utilization Right-click στο server -> Choose individual statistics -> CPU -> Utilization Right-click στο server -> Choose individual statistics -> Server DB -> Traffic Sent (bytes/sec)
Προσθήκη νέας κίνησης (traffic) στο δίκτυο Δημιουργήστε ένα διπλότυπο του τελευταίου σεναρίου Σε αυτό το νέο σενάριο θα προσομοιώσουμε τη λειτουργία του δικτύου με προσθήκη νέων εφαρμογών που θα δημιουργούν επιπλέον κίνηση (traffic) στο δίκτυο και φόρτο στον server Προσθήκη νέων εφαρμογών: Right-click στο Profile Definition object Edit Attributes
Προσθήκη νέας κίνησης (traffic) στο δίκτυο Επιλέγουμε (...) και Edit
Προσθήκη νέας κίνησης (traffic) στο δίκτυο Στη συνέχεια αλλάζουμε τη λίστα των εφαρμογών που περιέχονται στο συγκεκριμένο profile: Επιλέγουμε (...) και Edit
Προσθήκη νέας κίνησης (traffic) στο δίκτυο Στη συνέχεια αλλάζουμε τη λίστα των εφαρμογών που περιέχονται στο συγκεκριμένο profile: Αντί ‘Database Access (Light)’ επιλέγουμε ‘Database Access (Heavy)’
Προσθήκη νέας κίνησης (traffic) στο δίκτυο Δηλώστε ότι ο server μπορεί να εκτελεί και τη νέα υπηρεσία: Right-click στο server Edit attributes Application: Supported Services = All Τρέξτε την προσομοίωση αυτού του σεναρίου και συγκρίνετε τα αποτελέσματα με τα υπόλοιπα δύο σενάρια