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

Σχετικά έγγραφα
Πρωτόκολλα Διαδικτύου

Δίκτυα Υπολογιστών Επίπεδο εφαρμογής To Σύστημα Ονομασίας Τομέων DNS

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

Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Ηλεκτρονικό Ταχυδρομείο - SMTP

Δίκτυα Επικοινωνιών Δίκτυα Υπολογιστών και Στρώμα Εφαρμογής Διδάσκοντες: Δρ. Ευγενία Αδαμοπούλου, Δρ. Κώστας Δεμέστιχας

ΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ. Εφαρμογές. Δίκτυα Υπολογιστών

Network Address Translation (NAT)

Δίκτυα Επικοινωνιών Ι

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα

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

Δίκτυα Επικοινωνιών Ι. Τμήμα Πληροφορικής και Τηλεπικοινωνιών Εθνικό & Καποδιστριακό Πανεπιστήμιο Αθηνών. Επίπεδο Εφαρμογής. Διδάσκων: Λάζαρος Μεράκος

Δίκτυα Επικοινωνιών Ι

Υπολογιστές και ίκτυα Η/Υ.

Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Υπηρεσία Ηλεκτρονικού Ταχυδρομείου - SMTP

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

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Υπηρεσία Domain Name Service

Δίκτυα Επικοινωνιών Δίκτυα Υπολογιστών και Στρώμα Εφαρμογής Διδάσκοντες: Δρ. Ευγενία Αδαμοπούλου, Δρ. Κώστας Δεμέστιχας

Κεφάλαιο 2 Επίπεδο Εφαρμογής

Πρωτόκολλο FTP. Από τα παλαιότερα πρωτόκολλα του ArpaNet Το FTP είναι μια τυποποίηση του TCP/IP Πρόκειται για πρωτόκολο γενικού σκοπού

Εισαγωγή στο DNS lookup

ΤΕΙ Πειραιά, Τμήμα Ηλεκτρονικής. Δίκτυα P2P. Χαράλαμπος Ζ. Πατρικάκης

Δίκτυα Επικοινωνιών Ι

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

ιάλεξη #7: Επίπεδο Εφαρμογών (Application layer). Εργαστηριακές ασκήσεις στο εργαλείο προσομοίωσης δικτύων OPNET

Κεφάλαιο 2 Επίπεδο Εφαρµογής

Πρωτόκολλα Διαδικτύου (ΨΣ-326 DS151)

Βασικές Υπηρεσίες Διαδικτύου. Επικοινωνίες Δεδομένων Μάθημα 2 ο

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

DNS. Όλες οι άλλες υπηρεσίες του Διαδικτύου, (WWW και ) χρησιμοποιούν το DNS

Κεφάλαιο 6ο ΕΠΙΠΕΔΟ ΕΦΑΡΜΟΓΗΣ. Εισαγωγή

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας

6.2 Υπηρεσίες Διαδικτύου

Γαβαλάς αµιανός

Τεχνολογίες ιαδικτύου

Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Ρύθμιση Postfix SMTP Server, Courier IMAP, POP3 σε Ubuntu Linux

Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας - Βιβλιοθηκονοµίας. Υπηρεσίες Internet. ίκτυα Η/Υ. Επίπεδο Εφαρµογής. Ενότητα θ

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

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

Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης)

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας

Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας Βιβλιοθηκονοµίας. Μοντέλο TCP/IP. Ενότητα E. Συστήµατα Επικοινωνίας

Μάθηµα 4ο. Απόδοση ικτύου (εξαρτάται) Καθυστέρηση Μετάδοσης & Ρυθµός ιέλευσης

Κεφάλαιο 2. ηµιουργία δικτυακής εφαρµογής

Επίπεδο Εφαρμογής. 2.6 Εφαρμογές P2P 2.7 Προγραμματισμός socket με TCP 2.8 Προγραμματισμός socket με UDP

Εισαγωγή Επανάληψη. ΤΕΙ Στερεάς Ελλάδας. ΣT Εξάμηνο, Κατεύθυνση Μηχανικών Δικτύων Τ.Ε. Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Διαδικτυακός Προγραμματισμός

Δίκτυα Υπολογιστών Επίπεδο Εφαρμογής Ιωάννης Κορίνθιος Δρ. Ηλεκτρολόγος Μηχανικός ΕΜΠ

ικτυακές εφαρµογές: ορολογία Κεφάλαιο 2

Δίκτυα Επικοινωνίας και Υπολογιστών

Κεφάλαιο 2: Επίπεδο Εφαρµογής

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. Σηµειώσεις για τα πρωτόκολλα στρώµατος εφαρµογής: HTTP, FTP, , DNS

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

Ιόνιο Πανεπιστήµιο. ίκτυα Η/Υ. Επίπεδο Εφαρµογής. Ενότητα Θ. Υπηρεσίες Internet. ρ. Ε. Μάγκος

Ιόνιο Πανεπιστήµιο Τµήµα Πληροφορικής Συστήµατα Επικοινωνίας. Μοντέλο TCP/IP. Ενότητα E. Πόσοι εµπλέκονται σε ένα Σύστηµα Επικοινωνίας

Ειδικά Θέματα Προγραμματισμού

Δίκτυα Υπολογιστών. Ενότητα 3: Εφαρμογές, υπηρεσίες και παγκόσμιος ιστός. Δρ. Χαράλαμπος Ζ. Πατρικάκης Τμήμα Ηλεκτρονικών Μηχανικών Τ.

Δίκτυα Θεωρία

Εργαστήριο Δικτύων Υπολογιστών

Τεχνολογίες Παγκόσμιου Ιστού. 1η διάλεξη

ιαδικτυακές Εφαρµογές

ίκτυα - Internet Υπηρεσίες Internet O Παγκόσµιος Ιστός (World Wide Web) Ηλεκτρονική Αλληλογραφία ( ) Υπηρεσία FTP (File Transfer Protocol)

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. ίκτυα Υπολογιστών Ι. To Μοντέλο OSI. Αναπλ. Καθηγ. Π. εμέστιχας

Δίκτυα Υπολογιστών Ενότητα 3: Domain Name System - DNS

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη

Επίπεδο Μεταφοράς. (ανεβαίνουμε προς τα πάνω) Εργαστήριο Δικτύων Υπολογιστών Τμήμα Μηχανικών Η/Υ και Πληροφορικής

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

Δίκτυα Θεωρία

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

Πρωτόκολλα Επικοινωνίας Πρωτόκολλο IP

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 1: Εισαγωγή. Καθ. Ιωάννης Γαροφαλάκης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής

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

ΔΙΚΤΥΑ. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Βασίλειος Κοντογιάννης ΠΕ19

Domain Name System (DNS) (3 η άσκηση)

Διαχείριση Δικτύων Εργαστήριο (Διαφάνειες)

Προγραμματισμός Ιστοσελίδων (Web Design)

HY-335 : Δίκτυα Υπολογιστών

Κεφάλαιο 2: Επίπεδο Εφαρµογής

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

α. Το μέγιστο μήκος δεδομένων του ωφέλιμου φορτίου του πλαισίου Ethernet είναι 1500 οκτάδες. ΣΩΣΤΟ

Προγραμματισμός με BSD Sockets σε περιβάλλον Linux

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

Δίκτυα Υπολογιστών I

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

Κάντε κλικ για έναρξη

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

Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4

14. Δικτύωση με Java Δικτύωση με Java Sockets Δημιουργία της σύνδεσης Διευθυνσιοδότηση της σύνδεσης

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δίκτυα Υπολογιστών. Μαρία Παπαδοπούλη Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

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

Βασικές Έννοιες Web Εφαρμογών

ΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ. ιευθυνσιοδότηση και Ονοματοδοσία στο Internet. Δίκτυα Υπολογιστών

ΒΑΣΙΚΕΣ ΥΠΗΡΕΣΙΕΣ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ

Πρόσκληση 10: Προηγμένες Τηλεματικές Υπηρεσίες Τ.Ε.Ι. Ηπείρου Δίκτυο Τ.Ε.Ι. Ηπείρου ΙΙ

ΜΕΤΑΦΟΡΑ ΑΡΧΕΙΩΝ FTP

Client server Peer-to-peer (Οµότιµα ίκτυα)

Χρήση βασικών εργαλείων συλλογής πληροφοριών για τη διαμόρφωση και την κατάσταση λειτουργίας του δικτύου

Transcript:

Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Πρωτόκολλα Διαδικτύου 4 η Διάλεξη Δημοσθένης Κυριαζής Παρασκευή 27 Μαρτίου 2015

Σημερινή διάλεξη Σύνοψη 3ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 2

HTTP response message Status line (πρωτόκολλο, κωδικός status, περιγραφή status) Header lines Δεδομένα (π.χ. αρχείο HTML) HTTP/1.1 200 OK\r\n Date: Sun, 26 Sep 2010 20:09:20 GMT\r\n Server: Apache/2.0.52 (CentOS)\r\n Last-Modified: Tue, 30 Oct 2007 17:00:02 GMT\r\n Accept-Ranges: bytes\r\n Content-Length: 2652\r\n Keep-Alive: timeout=10, max=100\r\n Connection: Keep-Alive\r\n Content-Type: text/html; charset=iso-8859-1\r\n \r\n data data data data data... Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 3

Διατήρηση κατάστασης χρήστηserver: Cookies 4 βασικά στοιχεία Cookie header line στο HTTP response message Cookie header line στο επόμενο HTTP request message Αρχείο cookie που αποθηκεύεται στον κόμβο του χρήστη και διαχειρίζεται από το browser Βάση δεδομένων στο server Παράδειγμα Η Susan έχει πρόσβαση στο διαδίκτυο από έναν υπολογιστή Επισκέπτεται ένα e- commerce site για πρώτη φορά Όταν το αρχικό HTTP request φθάνει στο site, το site: Δημιουργεί ένα μοναδικό ID Προσθέτει μια εγγραφή στη βάση δεδομένων για το συγκεκριμένο ID Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 4

Web caches (proxy server) Στόχος: ικανοποίηση αιτημάτων client χωρίς τη χρήση του αρχικού server Ο χρήστης θέτει στο browser: πρόσβαση στο διαδίκτυο μέσω cache Ο browser αποστέλλει όλα τα HTTP requests στο cache client proxy server Αρχικός server Αν υπάρχει το αντικείμενο στο cache: Το cache το στέλνει Αν δεν υπάρχει: Το cache το ζητάει από τον αρχικό server client Αρχικός server Το cache το στέλνει στο client 5

FTP: Διαχωρισμός συνδέσεων 2 συνδέσεις Ελέγχου (control) Δεδομένων (data) Διαδικασία Ο FTP client επικοινωνεί με τον FTP server στην πόρτα 21, χρησιμοποιώντας TCP Ο client εξουσιοδοτείται μέσω της σύνδεσης ελέγχου Ο client έχει πρόσβαση στο απομακρυσμένο σύστημα αρχείων, και αποστέλλει εντολές μέσω της σύνδεσης ελέγχου Όταν ο server λάβει εντολή μεταφοράς αρχείου, ο server ανοίγει τη δεύτερη σύνδεση TCP για μεταφορά δεδομένων προς το client FTP client TCP control connection, server port 21 Μετά τη μεταφορά ενός αρχείου ο server κλείνει τη σύνδεση δεδομένων Ο server ανοίγει νέα σύνδεση TCP για τη μεταφορά άλλου αρχείου Η σύνδεση ελέγχου (control connection) ονομάζεται out of band (το HTTP είναι in-band ) Ο FTP server διατηρεί καταστάσεις : τρέχων κατάλογος, εξουσιοδότηση χρήστη TCP data connection, server port 20 FTP server Η σύνδεση ελέγχου είναι persistent 6

Ηλεκτρονική αλληλογραφία: servers Mail servers Το mailbox περιλαμβάνει εισερχόμενα μηνύματα του χρήστη Το message queue περιλαμβάνει εξερχόμενα μηνύματα To πρωτόκολλο SMTP χρησιμοποιείται μεταξύ των mail servers για την αποστολή μηνυμάτων client: αποστολέας mail server server : παραλήπτης mail server mail server SMTP mail server user agent user agent SMTP SMTP user agent mail server user agent user agent user agent 7

Πρωτόκολλο SMTP [RFC 2821] Χρησιμοποιεί το TCP για αξιόπιστη μεταφορά μηνυμάτων από το client στο server, με χρήση της πόρτας 25 Άμεση μεταφορά: Αποστολέας server στον παραλήπτη server 3 φάσεις μεταφοράς Handshaking Μεταφορά μηνυμάτων Κλείσιμο Αλληλεπίδραση εντολών και απαντήσεων (όπως στα HTTP, FTP) Εντολές (commands): ASCII Απαντήσεις (responses): Κωδικός status και περιγραφή Τα μηνύματα πρέπει να είναι σε 7-bit ASCII 8

Σημερινή διάλεξη Σύνοψη 3ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 9

Παράδειγμα αλληλεπίδρασης 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 Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 10

Κωδικοί SMTP 220: Service ready 221: Service closing transmission channel 250: Requested mail action okay, completed 251: User not local; will forward to <forward-path> 354: Start mail input; end with <CRLF>.<CRLF>.. Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 11

Δοκιμή SMTP telnet <servername> 25 Λήψη απάντησης 220 από το server Εισαγωγή εντολών HELO, MAIL FROM, RCPT TO, DATA, QUIT Αποστολή mail χωρίς τη χρήση κάποιου προγράμματος Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 12

SMTP Σύνοψη Το SMTP χρησιμοποιεί persistent συνδέσεις Αποστολή όλων των μηνυμάτων στην ίδια σύνδεση TCP Το SMTP απαιτεί το μήνυμα (header & body) να είναι σε 7-bit ASCII Ο SMTP server χρησιμοποιεί CRLF.CRLF για τον ορισμό του τέλους του μηνύματος Σύγκριση με HTTP Και τα 2 έχουν ASCII εντολές/απαντήσεις και κωδικούς status HTTP: pull SMTP: push Το SMTP απαιτεί 7-βιτ ASCII Στο HTTP κάθε αντικείμενο «ενθυλακώνεται» στο δικό του response μήνυμα Στο SMTP πολλαπλά αντικείμενα αποστέλλονται σε πολλαπλά μηνύματα Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 13

Μορφή ηλεκτρονικού μηνύματος SMTP: Πρωτόκολλο για την ανταλλαγή μηνυμάτων RFC 822: Πρότυπο για μηνύματα κειμένου header lines, π.χ. To: From: Subject: διαφορετικό από τις εντολές SMTP MAIL FROM, RCPT TO! Body: το μήνυμα Μόνο ASCII χαρακτήρες header body Κενή γραμμή Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 14

Πρωτόκολλα πρόσβασης σε mail user agent SMTP SMTP πρωτόκολλο πρόσβασης (π.χ. POP, IMAP) user agent mail server αποστολέα mail server παραλήπτη SMTP: παράδοση στο server του παραλήπτη Πρωτόκολλα πρόσβασης (access) σε mail: ανάκτηση από το server POP: Post Office Protocol [RFC 1939]: εξουσιοδότηση, λήψη IMAP: Internet Mail Access Protocol [RFC 1730]: περισσότερες λειτουργίες (π.χ. διαχείριση αποθηκευμένων μηνυμάτων στο server) HTTP: gmail, Hotmail, Yahoo! Mail, κλπ Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 15

Πρωτόκολλο POP3 Φάση εξουσιοδότησης (authorization) Εντολές client user: όνομα χρήστη pass: συνθηματικό Απαντήσεις server +OK -ERR Φάση συναλλαγής (transaction) Εντολές client list: αριθμός και μέγεθος κάθε μηνύματος retr: ανάκτηση μηνύματος dele: διαγραφή quit: έξοδος S: +OK POP3 server ready C: user bob S: +OK C: pass hungry S: +OK user successfully logged on C: list S: 1 498 S: 2 912 S:. C: retr 1 S: <message 1 contents> S:. C: dele 1 C: retr 2 S: <message 1 contents> S:. C: dele 2 C: quit S: +OK POP3 server signing off

Πρωτόκολλα POP3 και IMAP POP3 2 τύποι λειτουργίας download and delete : Μη εφικτή ανάγνωση email από άλλο client αν ανακτηθούν από το server download-and-keep : Αντίγραφα μηνυμάτων διατηρούνται σε διαφορετικούς clients Το POP3 δεν διατηρεί καταστάσεις (εκτός από πληροφορία για μηνύματα προς διαγραφή) IMAP Διατήρηση όλων των μηνυμάτων σε ένα σημείο: στο server Επιτρέπει στο χρήστη να οργανώνει τα μηνύματα σε φακέλους Διατηρεί την κατάσταση του χρήστη Ονόματα φακέλων, αντιστοίχηση μηνυμάτων σε φακέλους 17

Σημερινή διάλεξη Σύνοψη 3ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 18

Domain Name System (DNS) Άνθρωποι: πολλά αναγνωριστικά Όνομα, ΑΔΤ, ΑΔ, ΑΜΚΑ.. Δικτυακοί κόμβοι Διευθύνσεις IP (32 bit): χρησιμοποιούνται για να κατευθύνονται τα datagrams Ονόματα (π.χ. www.yahoo.com): χρησιμοποιούνται από ανθρώπους Domain Name System: Κατανεμημένη βάση δεδομένων (distributed database) υλοποιημένη σε ιεραρχία πολλών name servers Πρωτόκολλο επιπέδου εφαρμογής (application-layer protocol): οι κόμβοι (name servers) επικοινωνούν για να καθορίσουν τα ονόματα (μετάφραση διεύθυνσης - ονόματος) Βασική λειτουργία του διαδικτύου που υλοποιείται ως πρωτόκολλο επιπέδου εφαρμογής Προσθέτει πολυπλοκότητα στις άκρες ( edge ) του δικτύου 19

DNS: Υπηρεσίες, δομή Υπηρεσίες DNS Μετάφραση ονόματος σε διεύθυνση IP Alias κόμβου Κανονικό (canonical), alias Alias mail server Κατανομή φόρτου (load distribution) Πολλαπλοί servers: πολλές διευθύνσεις IP αντιστοιχούν σε 1 όνομα (DNS rotation) Γιατί όχι ένα κεντρικό DNS? Δεν κλιμακώνεται! Μοναδικό σημείο σφαλμάτων (single point of failure) Όγκος κίνησης «Απομακρυσμένη» κεντρική βάση δεδομένων Υψηλό κόστος συντήρησης 20

Κατανεμημένη, ιεραρχική βάση δεδομένων Root DNS Servers Top-Level Domain com DNS servers org DNS servers edu DNS servers Authoritative yahoo.com DNS servers amazon.com DNS servers pbs.org DNS servers Ο client αναζητεί την IP του www.amazon.com poly.edu umass.edu DNS servers DNS servers Ο client ρωτάει το root server για να βρει τον com DNS server Ο client ρωτάει τον com DNS server για να βρει τον amazon.com DNS server Ο client ρωτάει τον amazon.com DNS server για να βρει τη διεύθυνση IP του www.amazon.com Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 2-21

Root name servers Οι local name servers επικοινωνούν μαζί τους όταν δεν μπορούν να βρουν κάποιο όνομα Root name server Επικοινωνεί με τον authoritative name server αν δεν γνωρίζει την αντιστοίχηση για το συγκεκριμένο όνομα Λαμβάνει την αντιστοίχηση Επιστρέφει την αντιστοίχηση στο local name server c. Cogent, Herndon, VA (5 other sites) d. U Maryland College Park, MD h. ARL Aberdeen, MD j. Verisign, Dulles VA (69 other sites ) k. RIPE London (17 other sites) i. Netnod, Stockholm (37 other sites) e. NASA Mt View, CA f. Internet Software C. Palo Alto, CA (and 48 other sites) a. Verisign, Los Angeles CA (5 other sites) b. USC-ISI Marina del Rey, CA l. ICANN Los Angeles, CA (41 other sites) m. WIDE Tokyo (5 other sites) 13 root name servers παγκοσμίως g. US DoD Columbus, OH (5 other sites) 22

TLD, authoritative servers Top-level domain (TLD) servers Υπεύθυνοι για com, org, net, edu, aero, jobs, museums, και όλα τα top-level domains των χωρών, π.χ.: gr, uk, fr, ca, jp H Network Solutions λειτουργεί τους servers για το.com TLD και η Educause για το.edu TLD Authoritative DNS servers DNS server(s) που ανήκουν σε οργανισμούς Παρέχουν αντιστοίχηση ονομάτων σε διευθύνσεις για τους κόμβους του οργανισμού Ο οργανισμός ή κάποιος πάροχος τους λειτουργεί 23

Local DNS name server Δεν ανήκει αυστηρά στην ιεραρχία Κάθε πάροχος ISP έχει έναν Επίσης ονομάζεται default name server Όταν κάποιος κόμβος κάνει ερώτημα DNS, το ερώτημα αποστέλλεται στο local DNS server Έχει local cache από πρόσφατες αντιστοιχήσεις ονομάτωνδιευθύνσεων (μπορεί όμως να μην είναι ενημερωμένες!) Λειτουργεί ως proxy, προωθώντας ερωτήματα στην ιεραρχία Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 24

Παράδειγμα εύρεσης ονόματος (1/2) Ο κόμβος στο cis.poly.edu ζητάει τη διεύθυνση IP του gaia.cs.umass.edu Επαναληπτικό ερώτημα (iterated query) Ο κάθε server απαντάει με το όνομα του server που πρέπει να επικοινωνήσει I don t know this name, but ask this server Local DNS server dns.poly.edu 1 2 8 Κόμβος με αίτημα cis.poly.edu Root DNS server 3 4 5 7 TLD DNS server 6 Authoritative DNS server dns.cs.umass.edu 25 gaia.cs.umass.edu

Παράδειγμα εύρεσης ονόματος (2/2) Αναδρομικό ερώτημα (recursive query) Πρέπει ο name server να απαντήσει για το συγκεκριμένο ερώτημα Μεγάλος φόρτος στα υψηλά επίπεδα της ιεραρχίας? Local DNS server dns.poly.edu 1 Root DNS server 2 8 7 6 5 3 4 TLD DNS server Κόμβος με αίτημα cis.poly.edu Authoritative DNS server dns.cs.umass.edu 26 gaia.cs.umass.edu

Caching, ανανέωση εγγραφών Όταν κάποιος name server ενημερωθεί για μια αντιστοίχηση, την αποθηκεύει (caches) Οι εγγραφές cache timeout (εξαφανίζονται) μετά από κάποιο χρονικό διάστημα (TTL) Οι TLD servers συνήθως αποθηκεύονται σε local name servers Δε χρησιμοποιούνται συχνά οι root name servers Οι εγγραφές μπορεί να μην είναι ενημερωμένες Αν ένας κόμβος αλλάξει διεύθυνση IP, δε θα είναι γνωστό μέχρι να λήξουν όλα τα TTLs Μηχανισμοί για ανανεώσεις έχουν προταθεί μέσω ενός προτύπου: RFC 2136 Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 27

Εγγραφές DNS (1/2) DNS: Κατανεμημένη βάση αποθήκευσης Resource Records (RR) Μορφή RR: (name, value, type, ttl) type=a name = όνομα κόμβου value = διεύθυνση IP type=ns name = domain (π.χ. foo.com) value = όνομα authoritative name server για αυτό το domain (π.χ. dns.foo.com) type=cname name = alias όνομα για κάποιο κανονικό όνομα (π.χ. www.ibm.com is really servereast.backup2.ibm.com) value = κανονικό όνομα type=mx name = alias όνομα value = όνομα mail server Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 28

Εγγραφές DNS (2/2) Authoritative server για κάποιο όνομα RR με Type A record για αυτό το όνομα Root / TLD server RR με Type A record? Ναι για caching! RR με Type NS record για το DNS server που περιλαμβάνει τον κόμβο Επίσης RR με Type A record για τη διεύθυνση IP του DNS server που εμφανίζεται στο Type NS record (umass.edu, dns.umass.edu, NS) (dns.umass.edu, 128.119.40.111, A) Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 29

Πρωτόκολλο και μηνύματα DNS (1/2) Μηνύματα αιτημάτων και απαντήσεων με την ίδια μορφή Header Identification Flags Αριθμός 16 bit ως αναγνωριστικό του αιτήματος, η απάντηση περιλαμβάνει τον ίδιο αριθμό Αίτημα (query) ή απάντηση (reply) Αναδρομή Επιθυμητή (recursion desired) Υποστηρίζεται (recursion available) 2 bytes 2 bytes identification flags # questions # answer RRs # authority RRs # additional RRs questions (variable # of questions) answers (variable # of RRs) authority (variable # of RRs) additional info (variable # of RRs)

Πρωτόκολλο και μηνύματα DNS (2/2) 2 bytes 2 bytes identification # questions # authority RRs flags # answer RRs # additional RRs Όνομα, τύπος questions (variable # of questions) RRs Εγγραφές για authoritative servers Π.χ. κανονικό όνομα mail server σε Type MX answers (variable # of RRs) authority (variable # of RRs) additional info (variable # of RRs) 31

Εισαγωγή εγγραφών στο DNS Παράδειγμα: Νέα εταιρεία Network Utopia Εγγραφή ονόματος networkuptopia.com σε DNS registrar (εταιρεία που βεβαιώνει τη μοναδικότητα του ονόματος π.χ. Network Solutions) Παρέχει ονόματα και διευθύνσεις IP addresses των authoritative name server (primary και secondary) Η registrar εισάγει 2 RRs στον.com TLD server (networkutopia.com, dns1.networkutopia.com, NS) (dns1.networkutopia.com, 212.212.212.1, A) Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 32

Σημερινή διάλεξη Σύνοψη 3ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 33

Αρχιτεκτονική P2P Τυχαίοι κόμβοι επικοινωνούν άμεσα Οι peers συνδέονται σποραδικά και αλλάζουν διευθύνσεις IP Παραδείγματα Διαμοιρασμός αρχείων (BitTorrent) Streaming (KanKan) VoIP (Skype) Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 2-34

Διαμοιρασμός αρχείων: client-server vs P2P Πόσος χρόνος απαιτείται για το διαμοιρασμό ενός αρχείου (μεγέθους F) από 1 server σε N peers? u s : server upload capacity Αρχείο, μέγεθος F server u s u 1 d 1 u 2 d 2 d i : peer i download capacity u N Δίκτυο d i u i d N u i : peer i upload capacity Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 35

Χρόνος διαμοιρασμού αρχείων: client-server Μετάδοση server: στέλνει σειριακά (upload) N αντίγραφα του αρχείου Χρόνος αποστολής 1 αντιγράφου: F/u s F u s d i Χρόνος για N αντίγραφα: NF/u s Client: κατεβάζει το αντίγραφο του αρχείου Δίκτυο u i d min = ελάχιστος ρυθμός λήψης Ελάχιστος χρόνος λήψης από client: F/d min Χρόνος διαμοιρασμού αρχείου F σε N clients με προσέγγιση client-server D c-s > max{nf/u s,,f/d min } αυξάνει γραμμικά με N 36

Χρόνος διαμοιρασμού αρχείων: P2P Μετάδοση server: ανεβάζει τουλάχιστον 1 αντίγραφο F u s Χρόνος αποστολής 1 αντιγράφου: F/u s 1 client: κάθε client κατεβάζει το αντίγραφο Δίκτυο d i u i Ελάχιστο χρόνος λήψης: F/d min Όλοι οι clients: χρειάζονται NF bits Μέγιστο upload rate είναι: u s + Su i Χρόνος διαμοιρασμού αρχείου F σε N clients με προσέγγιση P2P D P2P > max{f/u s,,f/d min,,nf/(u s + Su i )} αυξάνει γραμμικά με N 37 ομοίως, καθώς κάθε peer προσθέτει χωρητικότητα

Minimum Distribution Time Παράδειγμα client-server vs P2P Ρυθμός «ανεβάσματος» από client = u, F/u = 1 ώρα, u s = 10u, d min u s 3.5 3 2.5 P2P Client-Server 2 1.5 1 0.5 0 0 5 10 15 20 25 30 35 N 38

Σημερινή διάλεξη Σύνοψη 3ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 39

P2P διαμοιρασμός αρχείων: BitTorrent (1/2) Τα αρχεία μοιράζονται σε κομμάτια των 256Kb Οι peers σε ένα torrent στέλνουν / λαμβάνουν κομμάτια αρχείων tracker: Εντοπίζει τους peers που συμμετέχουν σε ένα torrent torrent: Σύνολο peers που ανταλλάσσουν κομμάτια ενός αρχείου Η Alice φθάνει λαμβάνει λίστα των peers από τον tracker ξεκινάει την ανταλλαγή Κομματιών με peers στο torrent 40

P2P διαμοιρασμός αρχείων: BitTorrent (2/2) Ένας peer συνδέονται / συμμετέχουν σε ένα torrent Δεν έχουν κομμάτια, μπορούν όμως να αποκτήσουν στο μέλλον από άλλους peers Εγγράφεται στον tracker ώστε να λάβει λίστα των peers, και συνδέεται σε κάποιους από αυτούς ( neighbors ) Όσο κατεβάζει κομμάτια, ο peer επίσης ανεβάζει σε άλλους peers Μπορεί να αλλάξει τους peers με τους οποίους ανταλλάσσει κομμάτια Δυναμική (churn): Οι peers μπορεί να συνδέονται / απο-συνδέονται Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 41

BitTorrent: ζήτηση και αποστολή κομματιών αρχείων Ζήτηση Κάθε στιγμή, διαφορετικοί peers έχουν διαφορετικά υποσύνολα των κομματιών ενός αρχείου Περιοδικά, η Alice ζητάει κάθε peer για τη λίστα των κομματιών τους Η Alice ζητάει τα κομμάτια που της λείπουν από άλλους peers, πρώτα τα σπανιότερα (rarest first) Αποστολή: tit-for-tat Η Alice στέλνει κομμάτια στους 4 peers που της στέλνουν στον υψηλότερο ρυθμό Οι άλλοι peers δεν λαμβάνουν αρχεία από την Alice (choked) Κάθε 10 secs επανεξετάζει τους 4 peers Κάθε 30 secs επιλέγει τυχαία κάποιον άλλο peer και αρχίζει να του στέλνει δεδομένα ( optimistically unchoke ) Ο νέος peer μπορεί να συμμετάσχει στους 4 «καλύτερους» 42

BitTorrent: tit-for-tat 1. Η Alice επιλέγει ( optimistically unchokes ) τον Bob 2. Η Alice γίνεται ένας από τους 4 καλύτερους peers του Bob; Ο Bob απαντάει 3. Ο Bob γίνεται ένας από τους 4 καλύτερους peers της Alice Υψηλότερος ρυθμός «ανεβάσματος»: εύρεση καλύτερων peers, γρηγορότερη λήψη αρχείου! 43

Σημερινή διάλεξη Σύνοψη 3ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 44

Απλή βάση δεδομένων Απλή βάση με ζευγάρια (key, value) Π.χ. key: όνομα; value: ΑΜΚΑ Key Value John Washington 132-54-3570 Diana Louise Jones 761-55-3791 Xiaoming Liu 385-41-0902 Rakesh Gopal 441-89-1956 Linda Cohen 217-66-5609. Lisa Kobayashi 177-23-0199 Π.χ. key: τίτλος ταινίας; value: διεύθυνση IP Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 45

Hash Table Πιο κατάλληλη η εύρεση και αναζήτηση σε αριθμητικές αναπαραστάσεις των κλειδιών key = hash(original key) Original Key Key Value John Washington 8962458 132-54-3570 Diana Louise Jones 7800356 761-55-3791 Xiaoming Liu 1567109 385-41-0902 Rakesh Gopal 2360012 441-89-1956 Linda Cohen 5430938 217-66-5609. Lisa Kobayashi 9290124 177-23-0199 Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 46

Distributed Hash Table (DHT) Κατανομή ζευγαριών (key, value) σε εκατομμύρια peers Τα ζευγάρια κατανέμονται εξίσου στους peers Κάθε peer μπορεί να αναζητήσει (query) τη βάση για κάποιο key Η βάση δεδομένων επιστρέφει το value για αυτό το key Για την επίλυση του ερωτήματος, μικρός αριθμός μηνυμάτων ανταλλάσσεται μεταξύ των peers Κάθε peer γνωρίζει μόνο για ένα μικρό αριθμό άλλων peers Ιδανικό για peers που (απο-) συνδέονται Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 47

Ανάθεση ζευγαριών key-value σε peers Κανόνας: ανάθεση ζευγαριού key-value στον peer που έχει το κοντινότερο (closest) ID Κοντινότερο είναι ο πρώτος (άμεσος) διάδοχος (immediate successor) του key Π.χ. ID στο εύρος {0,1,2,3,,63} Έστω 8 peers: 1,12,13,25,32,40,48,60 Για key = 51, ανάθεση στον peer 60 Για key = 60, ανάθεση στον peer 60 Για key = 61, ανάθεση στον peer 1 Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 48

Σημερινή διάλεξη Σύνοψη 3ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 49

Κυκλικό DHT Κάθε peer ξέρει μόνο τον πρώτο (άμεσο) διάδοχο και προκάτοχο του 1 60 12 13 48 25 40 32 overlay network 50

Επίλυση ερωτήματος (query) value 1 12 Ποιο είναι το value για το κλειδί 53? 60 13 48 Μέσο όρο O(N) μηνυμάτων για την επίλυση του ερωτήματος σε N peers 25 40 32 Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 51

Σημερινή διάλεξη Σύνοψη 3ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 52

Κυκλικό DHT με συντομεύσεις 60 48 40 value 1 32 Κάθε peer έχει πληροφορία για τις διευθύνσεις IP των διαδόχων, προκατόχων και συντομεύσεων του Μείωση μηνυμάτων από 6 σε 3 Είναι πιθανός ο ορισμός συντομεύσεων για με O(log N) γείτονες, O(log N) μηνύματα 53 12 25 Ποιο είναι το value για το κλειδί 53? 13

Έλευση / φυγή peer (1/2) 1 Διαδικασία 15 3 Κάθε peer γνωρίζει τις διευθύνσεις των 2 διαδόχων του 12 5 4 Κάθε peer ελέγχει περιοδικά τους διαδόχους του για να επαληθεύσει τη λειτουργία τους 10 8 Αν φύγει ο πρώτος διάδοχος, επιλέγεται ο επόμενος ως πρώτος Παράδειγμα: Ο peer 5 φεύγει Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 54

Έλευση / φυγή peer (2/2) 15 12 10 1 3 4 Διαδικασία Κάθε peer γνωρίζει τις διευθύνσεις των 2 διαδόχων του Κάθε peer ελέγχει περιοδικά τους διαδόχους του για να επαληθεύσει τη λειτουργία τους Αν φύγει ο πρώτος διάδοχος, επιλέγεται ο επόμενος ως πρώτος 8 Παράδειγμα: Ο peer 5 φεύγει Ο peer 4 ανακαλύπτει τη φυγή του peer 5 και κάνει τον 8 πρώτο του διάδοχο Ο 4 ζητάει από τον 8 τον πρώτο του διάδοχο ώστε να τον κάνει δεύτερο διάδοχό του

Σημερινή διάλεξη Σύνοψη 3ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 56

Προγραμματισμός sockets (1/2) Στόχος: Υλοποίηση εφαρμογών που επικοινωνούν με χρήση sockets Socket: Η «πόρτα» μεταξύ των διεργασιών και του πρωτοκόλλου μεταφοράς application process socket application process Διαχειρίζονται από τον προγραμματιστή transport transport network link Internet network link Διαχειρίζονται από το ΛΣ physical physical Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 57

Προγραμματισμός sockets (2/2) Υπάρχουν 2 τύποι socket types για 2 υπηρεσίες μεταφοράς UDP: μη αξιόπιστο datagram TCP: αξιόπιστο, byte stream-oriented Παράδειγμα Ένας client διαβάζει μια γραμμή χαρακτήρων (δεδομένα) από το πληκτρολόγιο και τα στέλνει στο server Ο server λαμβάνει τα δεδομένα και μετατρέπει τα γράμματα σε κεφαλαία Ο server στέλνει τα τροποποιημένα δεδομένα στο client Ο client λαμβάνει τα τροποποιημένα δεδομένα και τα εμφανίζει στην οθόνη Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 58

Σημερινή διάλεξη Σύνοψη 3ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 59

Προγραμματισμός sockets με UDP UDP: Χωρίς σύνδεση μεταξύ client & server Δεν υπάρχει διαδικασία handshaking πριν την αποστολή δεδομένων Ο αποστολέας επισυνάπτει τη διεύθυνση IP και τον αριθμό του port # του παραλήπτη σε κάθε πακέτο Ο παραλήπτης εξάγει τη διεύθυνση IP και τον αριθμό του port από το πακέτο που λαμβάνει Οπτική από την εφαρμογή Το UDP παρέχει ένα μη αξιόπιστο τρόπο μεταφοράς ομάδων δεδομένων (groups) bytes ( datagrams ) μεταξύ του client και του server Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 60

Αλληλεπίδραση client/server socket με UDP server (εκτελείται στο serverip) Δημιουργία socket, port= x: serversocket = socket(af_inet,sock_dgram) Ανάγνωση datagram από serversocket client Δηγμιουργία socket: clientsocket = socket(af_inet,sock_dgram) Δημιουργία datagram με server IP και port=x; αποστολή datagram, εσω clientsocket Απάντηση στο serversocket δηλώνοντας τη διεύθυνση του client, αριθμό port Ανάγνωση datagram από clientsocket Κλείσιμο clientsocket 61

Παράδειγμα UDP client Python socket library Δημιουργία UDP socket Λήψη input από το πληκτρολόγιο Προσθήκη server name, port στο message; Αποστολή στο socket Ανάγνωση απάντησης από το socket Εκτύπωση κειμένου και κλείσιμο socket Python UDPClient from socket import * servername = hostname serverport = 12000 clientsocket = socket(socket.af_inet, socket.sock_dgram) message = raw_input( Input lowercase sentence: ) clientsocket.sendto(message,(servername, serverport)) modifiedmessage, serveraddress = clientsocket.recvfrom(2048) print modifiedmessage clientsocket.close() Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 62

Παράδειγμα UDP server Python UDPServer Δημιουργία UDP socket Ανάθεση socket στο τοπικό port 12000 Διαρκές loop Ανάγνωση από το UDP socket και αποθήκευση στο message, λήψη διεύθυνσης client (IP και port) Αποστολή κεφαλαίων στον client from socket import * serverport = 12000 serversocket = socket(af_inet, SOCK_DGRAM) serversocket.bind(('', serverport)) print The server is ready to receive while 1: message, clientaddress = serversocket.recvfrom(2048) modifiedmessage = message.upper() serversocket.sendto(modifiedmessage, clientaddress) Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 63

Σημερινή διάλεξη Σύνοψη 3ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 64

Προγραμματισμός sockets με TCP Ο client πρέπει να επικοινωνήσει με το server Το server process πρέπει ήδη να εκτελείται Ο server πρέπει να έχει ήδη δημιουργήσει ένα (door) που θα περιμένει / καλωσορίσει την επικοινωνία του client Ο client επικοινωνεί με το server Δημιουργώντας ένα TCP socket, καθορίζοντας τη διεύθυνση IP, και το port του server process Όταν ο client δημιουργήσει το socket Το client TCP δημιουργεί τη σύνδεση με το server TCP Όταν λάβει κάποια επικοινωνία από το client, ο server TCP δημιουργεί ένα νέο socket ώστε το server process να επικοινωνήσει με το συγκεκριμένο client Επιτρέπει στο server να επικοινωνεί με πολλαπλούς clients Οι αριθμοί των port χρησιμοποιούνται για να διαφοροποιούνται οι clients Οπτική από την εφαρμογή To TCP παρέχει αξιόπιστη, σε σειρά μεταφορά ροής δεδομένων (byte-stream) μεταξύ client και server

Αλληλεπίδραση client/server socket με TCP server (εκτελείται στο hostid) Δημιουργία socket, port=x, για την εισερχόμενη αίτηση: serversocket = socket() client Αναμονή εισερχόμενης αίτησης σύνδεσης connectionsocket = serversocket.accept() Ανάγνωση αίτησης από connectionsocket TCP Δημιουργία σύνδεσης Δημιουργία socket, σύνδεση στο hostid, port=x clientsocket = socket() Αποστολή αίτησης με χρήση του clientsocket Απάντηση σε connectionsocket Κλείσιμο connectionsocket Ανάγνωση απάντησης από clientsocket Κλείσιμο clientsocket 66

Παράδειγμα TCP client Δημιουργία TCP socket για το server, απομακρυσμένη port 12000 Δε χρειάζεται η προσθήκη ονόματος server και port Python TCPClient from socket import * servername = servername serverport = 12000 clientsocket = socket(af_inet, SOCK_STREAM) clientsocket.connect((servername,serverport)) sentence = raw_input( Input lowercase sentence: ) clientsocket.send(sentence) modifiedsentence = clientsocket.recv(1024) print From Server:, modifiedsentence clientsocket.close() Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 67

Παράδειγμα TCP server Δημιουργία TCP socket καλωσορίσματος Ο server «ακούει» εισερχόμενες αιτήσεις TCP requests Διαρκές loop Ο server αναμένει accept() για εισερχόμενες αιτήσεις, και δημιουργεί νέο socket Ανάγνωση bytes από το socket (όχι τη διεύθυνση όπως στο UDP) Κλείσιμο σύνδεσης (όχι του socket καλωσορίσματος) Python TCPServer from socket import * serverport = 12000 serversocket = socket(af_inet,sock_stream) serversocket.bind((,serverport)) serversocket.listen(1) print The server is ready to receive while 1: connectionsocket, addr = serversocket.accept() sentence = connectionsocket.recv(1024) capitalizedsentence = sentence.upper() connectionsocket.send(capitalizedsentence) connectionsocket.close() Πρωτόκολλα Διαδικτύου, 4η Διάλεξη 68