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

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

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

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

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

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

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

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

Network Address Translation (NAT)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

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

Εισαγωγή στους Υπολογιστές

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

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

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

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

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

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

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

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

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

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

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

Άσκηση 2 η Πρωτόκολλο επικοινωνίας TCP/IP

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

Εργαστηριακή Άσκηση 5

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

Μάθημα 5: To Μοντέλο Αναφοράς O.S.I.

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

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΗΛΕΚΤΡΟΝΙΚΕΣ ΥΠΗΡΕΣΙΕΣ

Τεχνολογίες Διαδικτύου. Server Side Scripting I PHP

α) η καταγραφή και η σύλληψη της δικτυακής κίνησης (capture) και β) η ανάλυση της δικτυακής κίνησης.

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

ΘΕΜΑ ΠΤΥΧΙΑΚΗΣ : ΜΗΧΑΝΙΣΜΟΙ ΣΥΛΛΟΓΗΣ ΣΤΟΙΧΕΙΩΝ ΣΤΟ ΔΙΑΔΥΚΤΙΟ (COOKIES)

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

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

Transcript:

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

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

Διεργασίες Διεργασία (process): Το πρόγραμμα που εκτελείται σε κάποιον κόμβο (host) Σε έναν κόμβο, 2 διεργασίες επικοινωνούν μέσω interprocess communication (καθορίζεται από το ΛΣ) Διεργασίες σε διαφορετικούς κόμβους επικοινωνούν με ανταλλαγή μηνυμάτων (messages) clients, servers client process: η διεργασία που αρχίζει την επικοινωνία server process: η διεργασία που αναμένει επικοινωνία Οι εφαρμογές με αρχιτεκτονικές P2P έχουν διεργασίες client & διεργασίες server Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 3

Sockets (1/2) Κάθε διεργασία αποστέλλει / λαμβάνει μηνύματα μέσω του socket της (διεπαφή λογισμικού software interface) Το socket είναι ανάλογο της πόρτας Η διεργασία αποστολής ωθεί το μήνυμα στην πόρτα Η διεργασία αποστολής βασίζεται στην υποδομή μεταφοράς (transport) εκτός της πόρτας για να παραδώσει το μήνυμα στο socket (πόρτα) της διεργασίας λήψης application process socket application process Διαχειρίζονται από τον προγραμματιστή transport transport network link Internet network link Διαχειρίζονται από το ΛΣ physical physical Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 4

Sockets (2/2) Socket: interface μεταξύ επιπέδου εφαρμογής και επιπέδου μεταφοράς Πλευρά socket επιπέδου μεταφοράς ελέγχεται από το επίπεδο μεταφοράς Προγραμματιστής εφαρμογών ελέγχει την πλευρά του socket επιπέδου εφαρμογής Επιλογή πρωτοκόλλου Ορισμός παραμέτρων επιπέδου πρωτοκόλλου (μέγιστο buffer, μέγιστο μέγεθος segment) Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 5

Διεργασίες διευθύνσεων Για τη λήψη μηνυμάτων, η διεργασία πρέπει να έχει ένα αναγνωριστικό (identifier) Κάθε κόμβος έχει μια μοναδική 32-bit διεύθυνση IP Αρκεί η διεύθυνση IP του κόμβου ώστε να αναγνωριστούν οι διεργασίες του? Όχι καθώς μπορεί να εκτελούνται πολλές διεργασίες στον ίδιο κόμβο O identifier περιλαμβάνει τόσο τη διεύθυνση IP όσο και τα port numbers που σχετίζονται με τη διεργασία Παράδειγμα port numbers HTTP server: 80 mail server: 25 Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 6

TCP / UDP Συνοπτικά TCP Αξιόπιστη μεταφορά δεδομένων μεταξύ διεργασιών αποστολής και λήψης Έλεγχος ροής (flow control) Έλεγχος συμφόρησης (congestion control) Δεν παρέχει: εγγυήσεις χρόνου, εγγύηση ελάχιστου throughput, ασφάλεια Απαιτεί σύνδεση (connection-oriented) UDP Μη αξιόπιστη μεταφορά δεδομένων Δεν παρέχει: flow control, congestion control, εγγυήσεις χρόνου, εγγύηση ελάχιστου throughput, ασφάλεια Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 7

Διαδίκτυο και HTTP Διαδίκτυο Κάθε σελίδα (web page) αποτελείται από αντικείμενα (objects) Αντικείμενα μπορεί να είναι αρχεία HTML, εικόνες JPEG, applet, αρχεία ήχου, Κάθε σελίδα αποτελείται από το βασικό αρχείο HTML το οποίο περιλαμβάνει διάφορα αντικείμενα Κάθε αντικείμενο είναι προσβάσιμο μέσω ενός URL www.someschool.edu/somedept/pic.gif host name path name Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 8

Πρωτόκολλο HTTP (1/2) HyperText Transfer Protocol Το πρωτόκολλο επιπέδου εφαρμογής του διαδικτύου Ακολουθεί το μοντέλο client/server client: Ο browser που ζητάει, λαμβάνει (μέσω του πρωτοκόλλου HTTP) και παρουσιάζει τα αντικείμενα server: Ο web server που αποστέλλει (μέσω του πρωτοκόλλου HTTP) αντικείμενα σε απάντηση των αιτημάτων PC με Firefox browser iphone με Safari browser server με Apache Web server Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 9

Πρωτόκολλο HTTP (2/2) Χρησιμοποιεί το TCP Ο client ξεκινάει τη σύνδεση TCP στο server, port 80 Ο server αποδέχεται τη σύνδεση TCP από τον client Μηνύματα HTTP (μηνύματα πρωτοκόλλου επιπέδου εφαρμογής) ανταλλάσσονται μεταξύ του browser (HTTP client) και του Web server (HTTP server) Η σύνδεση TCP κλείνει Το HTTP είναι stateless Ο server δεν διατηρεί πληροφορία σχετικά με προηγούμενα αιτήματα των clients (αν ξαναζητηθεί το ίδιο object o server το ξαναστέλνει) Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 10

Συνδέσεις HTTP Non-persistent HTTP Το πολύ 1 object αποστέλλεται πάνω από τη σύνδεση TCP Στη συνέχεια κλείνει η σύνδεση Η λήψη πολλών αντικειμένων απαιτεί πολλές συνδέσεις Persistent HTTP Πολλά objects μπορούν να αποσταλούν πάνω από 1 σύνδεση TCP μεταξύ client και server Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 11

Non-persistent HTTP: Χρόνος απόκρισης Round Trip Time (RTT) Ο χρόνος που χρειάζεται ένα μικρό πακέτο να φθάσει από το client στο server και να επιστρέψει στο client Χρόνος απόκρισης (response time) HTTP ( three-way handshake ) 1 RTT για την έναρξη της σύνδεσης TCP 1 RTT για το HTTP request και τη λήψη των πρώτων bytes του HTTP response Χρόνος μεταφοράς αρχείου Χρόνος απόκρισης non-persistent HTTP = 2RTT + χρόνος μεταφοράς αρχείου Έναρξη σύνδεσης TCP RTT Αίτηση αρχείου RTT Λήψη αρχείου χρόνος χρόνος Χρόνος μεταφοράς αρχείου Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 12

Persistent HTTP (1/2) Προβλήματα non-persistent HTTP Απαιτούνται 2 RTT για κάθε αντικείμενο (object) Πρόσθετος φόρτος στο ΛΣ για κάθε σύνδεση TCP Οι browsers συχνά «ανοίγουν» παράλληλες (5-10) συνδέσεις TCP για να λάβουν τα αναφερόμενα αντικείμενα Persistent HTTP O server αφήνει «ανοιχτή» τη σύνδεση αφού στείλει το response Επόμενα μηνύματα HTTP μεταξύ του ίδιου client/server στέλνονται μέσω της ίδιας σύνδεσης Ο client στέλνει requests όποτε βρίσκει κάποιο αναφερόμενο αντικείμενο Χρειάζεται 1 RTT για όλα τα αναφερόμενα αντικείμενα Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 13

Persistent HTTP (2/2) Αιτήσεις για αντικείμενα από ένα client μπορούν να γίνονται συνεχόμενα χωρίς αναμονή απαντήσεων από το server σχετικά με εκκρεμείς αιτήσεις (pipelining) Η σύνδεση κλείνει από το server όταν δε χρησιμοποιείται για κάποιο χρονικό διάστημα (μπορεί να καθοριστεί) Default για HTTP: Persistent με pipelining! Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 14

HTTP request message Υπάρχουν 2 τύποι μηνυμάτων HTTP messages: request, response HTTP request message ASCII Request line (εντολές GET, POST, HEAD) Header lines carriage return, line feed στην αρχή της γραμμής δηλώνει το τέλος των header lines!!! Χαρακτήρας carriage return (CR) Χαρακτήρας line-feed (LF) GET /index.html HTTP/1.1\r\n Host: www-net.cs.umass.edu\r\n User-Agent: Firefox/3.6.10\r\n Accept: text/html\r\n Accept-Language: en-us,en;q=0.5\r\n Accept-Encoding: gzip,deflate\r\n Accept-Charset: ISO-8859-1,utf-8;q=0.7\r\n Keep-Alive: close\r\n Connection: keep-alive\r\n \r\n Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 15

HTTP request message: Γενική μορφή method sp URL sp version cr lf header field name value cr lf ~ ~ request line header lines header field name cr lf value cr lf ~ entity body ~ body Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 16

Αποστολή δεδομένων φόρμας Μέθοδος POST Οι σελίδες συχνά περιλαμβάνουν περιεχόμενα σε φόρμες Τα περιεχόμενα αποστέλλονται στο server μέσα στο entity body Λαμβάνει τελικά περιεχόμενο ο client? Μέθοδος GET ή URL Χρήση της μεθόδου GET Τα περιεχόμενα αποστέλλονται μέσω του πεδίου URL www.somesite.com/animalsearch?monkeys&banana Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 17

Σημερινή διάλεξη Σύνοψη 2ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλο HTTP Συνδέσεις HTTP Διατήρηση κατάστασης χρήστη-server: Cookies Web caches (proxy server) Πρωτόκολλο FTP Διαχωρισμός συνδέσεων Ηλεκτρονική αλληλογραφία Πρωτόκολλο SMTP Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 18

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... Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 19

Κωδικοί status του HTTP response Εμφανίζεται στην 1 η γραμμή του μηνύματος από το server στο client Παραδείγματα 200 OK Η αίτηση πέτυχε, το ζητούμενο αντικείμενο θα σταλεί αργότερα σε αυτό το μήνυμα 301 Moved Permanently Το ζητούμενο αντικείμενο έχει μεταφερθεί. Η νέα τοποθεσία ορίζεται αργότερα σε αυτό το μήνυμα (Location:) 400 Bad Request Η αίτηση δεν έγινε κατανοητή από το server 404 Not Found Το ζητούμενο αντικείμενο δε βρέθηκε στο server 505 HTTP Version Not Supported 20

Δοκιμή του HTTP (client side) 1. Telnet σε κάποιο Web server telnet cis.poly.edu 80 Άνοιγμα σύνδεσης TCP connection στην πόρτα 80 (default HTTP server port) στο cis.poly.edu. Ότι γράψετε θα αποσταλεί στην πόρτα 80 του cis.poly.edu 2. Γράψτε ένα GET HTTP request GET /~ross/ HTTP/1.1 Host: cis.poly.edu (Δυο φορές carriage return στο τέλος) Αποστολή του GET request στο HTTP server 3. Δείτε την απάντηση (response message) του HTTP server! Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 21

Σημερινή διάλεξη Σύνοψη 2ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλο HTTP Συνδέσεις HTTP Διατήρηση κατάστασης χρήστη-server: Cookies Web caches (proxy server) Πρωτόκολλο FTP Διαχωρισμός συνδέσεων Ηλεκτρονική αλληλογραφία Πρωτόκολλο SMTP Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 22

Διατήρηση κατάστασης χρήστηserver: Cookies (1/3) 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 Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 23

Διατήρηση κατάστασης χρήστηserver: Cookies (2/3) client ebay 8734 cookie file ebay 8734 amazon 1678 1 εβδομάδα αργότερα: ebay 8734 amazon 1678 Τυπικό http request Τυπικό http response set-cookie: 1678 Τυπικό http request cookie: 1678 Τυπικό http response Τυπικό http request cookie: 1678 Τυπικό http response cookiespecific action server Amazon server δημιουργεί ID 1678 για το χρήστη Δημιουργία εγγραφής cookiespecific action πρόσβαση πρόσβαση Βάση δεδομένων Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 24

Διατήρηση κατάστασης χρήστηserver: Cookies (3/3) Χρήση cookies Εξουσιοδότηση (authorization) Καλάθια αγορών (shopping carts one click shopping ) Προτάσεις αγοράς (recommendations) Κατάσταση session χρήστη (Web e-mail) Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 25

Σημερινή διάλεξη Σύνοψη 2ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλο HTTP Συνδέσεις HTTP Διατήρηση κατάστασης χρήστη-server: Cookies Web caches (proxy server) Πρωτόκολλο FTP Διαχωρισμός συνδέσεων Ηλεκτρονική αλληλογραφία Πρωτόκολλο SMTP Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 26

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

Web caches (proxy server) (2/2) Ο cache ενεργεί τόσο ως client όσο και ως server server για τον client που ζητάει ένα αντικείμενο client προς τον αρχικό server Συνήθως υλοποιείται από ISP Γιατί caching? Μειώνει το χρόνο απόκρισης για τα αιτήματα του client Μειώνει την κίνηση στο access link ενός οργανισμού Επιτρέπει σε «μικρούς» παρόχους περιεχομένου να παραδίδουν το περιεχόμενο αποτελεσματικά Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 28

Παράδειγμα caching Υποθέσεις Μέσο μέγεθος object: 1 Mbits Μέσος ρυθμός ζήτησης από τους browsers προς τους αρχικούς servers: 15/sec Μέσο data rate προς τους browsers: 15 Mbps RTT από το router του οργανισμού στους servers: 2 sec (internet delay) Access link rate: 15 Mbps Αποτέλεσμα Χρήση LAN: 15% Χρήση access link = 99% Συνολική καθυστέρηση Internet delay + access delay + LAN delay = 2 sec + minutes + usecs Πρόβλημα Internet delay 2 secs Δίκτυο οργανισμού Internet 15 Mbps access link 100 Mbps LAN Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 29

Παράδειγμα caching: Μεγαλύτερο access link Υποθέσεις Μέσο μέγεθος object: 1 Mbits Μέσος ρυθμός ζήτησης από τους browsers προς τους αρχικούς servers: 15/sec Μέσο data rate προς τους browsers: 15 Mbps RTT από το router του οργανισμού στους servers: 2 sec (internet delay) Access link rate: 15 Mbps Αποτέλεσμα Χρήση LAN: 15% Χρήση access link = 99% Συνολική καθυστέρηση Internet delay + access delay + LAN delay = 2 sec + minutes + usecs 150 Mbps 9.9% Δίκτυο οργανισμού Internet 15 Mbps access link msecs Κόστος: Μεγάλο για υψηλή ταχύτητα στο access link Αρχικοί servers 100 Mbps LAN 150 Mbps 30

Παράδειγμα caching: Εγκατάσταση τοπικού (local) cache (1/2) Υποθέσεις Μέσο μέγεθος object: 1 Mbits Μέσος ρυθμός ζήτησης από τους browsers προς τους αρχικούς servers: 15/sec Μέσο data rate προς τους browsers: 15 Mbps RTT από το router του οργανισμού στους servers: 2 sec (internet delay) Access link rate: 15 Mbps Αποτέλεσμα Χρήση LAN: 15% Χρήση access link = Συνολική καθυστέρηση = Υπολογισμός χρήσης link και καθυστέρησης? Κόστος: Μικρό?? Δίκτυο οργανισμού Internet 15 Mbps access link Αρχικοί servers 100 Mbps LAN Τοπικός web cache 31

Παράδειγμα caching: Εγκατάσταση τοπικού (local) cache (2/2) Υπολογισμός χρήσης link και καθυστέρησης Έστω ότι το ποσοστό επιτυχίας του cache είναι 0.4 40% των αιτημάτων ικανοποιούνται από το cache, 60% των αιτημάτων από τους αρχικούς servers Χρήση access link 60% των αιτημάτων χρησιμοποιεί το access link Data rate από τους browsers στο access link = 0.6*15 Mbps = 9 Mbps Χρήση = 9/15 = 0.6 Συνολική καθυστέρηση = 0.6 * (καθυστέρηση από αρχικούς servers) + 0.4 * (καθυστέρηση όταν ικανοποιούνται τα αιτήματα από το cache) = 0.6 * (2secs) + 0.4 * (~msecs) = ~ 1.2 secs Λιγότερο από το 150 Mbps link (και φθηνότερο!) Δίκτυο οργανισμού Internet 15 Mbps access link Αρχικοί servers 100 Mbps LAN Τοπικός web cache 32

Conditional GET Στόχος: Μη αποστολή ενός object αν το cache έχει ενημερωμένη έκδοση Αποφεύγεται η καθυστέρηση μετάδοσης Μικρότερη χρήση του link Cache: δηλώνει ημερομηνία του αποθηκευμένου αντιγράφου στο HTTP request client HTTP request If-modified-since: <date> HTTP response HTTP/1.0 304 Not Modified server Το αντικείμενο δεν έχει αλλάξει πριν <date> If-modified-since: <date> Server: το response δεν περιλαμβάνει ένα object εάν το αποθηκευμένο αντίγραφο είναι ενημερωμένο HTTP/1.0 304 Not Modified HTTP request If-modified-since: <date> HTTP response HTTP/1.0 200 OK <δεδομένα> Το αντικείμενο έχει αλλάξει μετά <date>

Σημερινή διάλεξη Σύνοψη 2ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλο HTTP Συνδέσεις HTTP Διατήρηση κατάστασης χρήστη-server: Cookies Web caches (proxy server) Πρωτόκολλο FTP Διαχωρισμός συνδέσεων Ηλεκτρονική αλληλογραφία Πρωτόκολλο SMTP Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 34

FTP: File Transfer Protocol Χρήστης FTP user interface FTP client Τοπικό σύστημα αρχείων Μεταφορά αρχείου FTP server Απομακρυσμένο σύστημα αρχείων Μεταφορά αρχείου από / προς απομακρυσμένο κόμβο Μοντέλο client/server client: αρχικοποιεί τη μεταφορά (είτε από είτε προς τον απομακρυσμένο κόμβο) server: remote απομακρυσμένο κόμβος ftp: RFC 959 ftp server: port 21 Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 35

Διαχωρισμός συνδέσεων 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 36

Εντολές και απαντήσεις FTP Εντολές (commands) Αποστέλλονται ως ASCII text στο κανάλι ελέγχου USER: όνομα χρήστη PASS: συνθηματικό LIST: λίστα αρχείων στο συγκεκριμένο φάκελο RETR filename: λήψη αρχείου STOR filename: αποθήκευση αρχείου Απαντήσεις (return codes) 331 Username OK, password required 125 data connection already open; transfer starting 425 Can t open data connection 452 Error writing file Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 37

Σημερινή διάλεξη Σύνοψη 2ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλο HTTP Συνδέσεις HTTP Διατήρηση κατάστασης χρήστη-server: Cookies Web caches (proxy server) Πρωτόκολλο FTP Διαχωρισμός συνδέσεων Ηλεκτρονική αλληλογραφία Πρωτόκολλο SMTP Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 38

Ηλεκτρονική αλληλογραφία 3 βασικά στοιχεία: Προγράμματα χρήστη (user agents) Εξυπηρετητές (mail servers) Πρωτόκολλο Simple Mail Transfer Protocol (SMTP) User Agent Δημιουργία, σύνταξη, ανάγνωση μηνυμάτων Π.χ. Outlook, Thunderbird, iphone mail Τα εξερχόμενα μηνύματα αποθηκεύονται στο server mail server SMTP mail server user agent user agent SMTP SMTP user agent Ουρά εξερχόμενων Mailbox χρήστη mail server user agent user agent user agent 39

Ηλεκτρονική αλληλογραφία: 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 Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 40

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

Σενάριο: Η Alice στέλνει ένα μήνυμα στον Bob 1. Η Alice συντάσσει ένα μήνυμα to bob@someschool.edu 2. Η Alice αποστέλλει το μήνυμα στο mail server της, το μήνυμα τοποθετείται στην ουρά 3. Η client μεριά του SMTP ανοίγει μια σύνδεση TCP με το mail server του Bob 4. Ο SMTP client αποστέλλει το μήνυμα της Alice πάνω από τη σύνδεση TCP 5. Ο mail server του Bob τοποθετεί το μήνυμα στο mailbox του Bob 6. Ο Bob διαβάζει το μήνυμα μέσω του προγράμματος (user agent) που χρησιμοποιεί 1 user agent mail server 2 3 4 mail server 6 user agent Alice s mail server 5 Bob s mail server 42

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

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

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 πολλαπλά αντικείμενα αποστέλλονται σε πολλαπλά μηνύματα Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 45

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

Σημερινή διάλεξη Σύνοψη 2ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλο HTTP Συνδέσεις HTTP Διατήρηση κατάστασης χρήστη-server: Cookies Web caches (proxy server) Πρωτόκολλο FTP Διαχωρισμός συνδέσεων Ηλεκτρονική αλληλογραφία Πρωτόκολλο SMTP Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 47

Πρωτόκολλα πρόσβασης σε 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, κλπ Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 48

Πρωτόκολλο 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 Επιτρέπει στο χρήστη να οργανώνει τα μηνύματα σε φακέλους Διατηρεί την κατάσταση του χρήστη Ονόματα φακέλων, αντιστοίχηση μηνυμάτων σε φακέλους 50

Σημερινή διάλεξη Σύνοψη 2ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλο HTTP Συνδέσεις HTTP Διατήρηση κατάστασης χρήστη-server: Cookies Web caches (proxy server) Πρωτόκολλο FTP Διαχωρισμός συνδέσεων Ηλεκτρονική αλληλογραφία Πρωτόκολλο SMTP Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 51

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

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

Κατανεμημένη, ιεραρχική βάση δεδομένων 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 Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 2-54

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) 55

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) που ανήκουν σε οργανισμούς Παρέχουν αντιστοίχηση ονομάτων σε διευθύνσεις για τους κόμβους του οργανισμού Ο οργανισμός ή κάποιος πάροχος τους λειτουργεί Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 56

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

Παράδειγμα εύρεσης ονόματος (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 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 gaia.cs.umass.edu

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

Εγγραφές DNS (1/2) DNS: Κατανεμημένη βάση αποθήκευσης Resource Records (RR) type=a type=ns Μορφή RR: (name, value, type, ttl) name = όνομα κόμβου value = διεύθυνση IP 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 Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 61

Εγγραφές 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) Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 62

Πρωτόκολλο και μηνύματα 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) 64

Εισαγωγή εγγραφών στο 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) Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 65

Σημερινή διάλεξη Σύνοψη 2ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλο HTTP Συνδέσεις HTTP Διατήρηση κατάστασης χρήστη-server: Cookies Web caches (proxy server) Πρωτόκολλο FTP Διαχωρισμός συνδέσεων Ηλεκτρονική αλληλογραφία Πρωτόκολλο SMTP Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 66

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

Διαμοιρασμός αρχείων: 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 Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 68

Χρόνος διαμοιρασμού αρχείων: 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 69

Χρόνος διαμοιρασμού αρχείων: 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 ομοίως, καθώς κάθε 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 71

Σημερινή διάλεξη Σύνοψη 2ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλο HTTP Συνδέσεις HTTP Διατήρηση κατάστασης χρήστη-server: Cookies Web caches (proxy server) Πρωτόκολλο FTP Διαχωρισμός συνδέσεων Ηλεκτρονική αλληλογραφία Πρωτόκολλο SMTP Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 72

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

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

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 «καλύτερους» 75

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

Σημερινή διάλεξη Σύνοψη 2ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλο HTTP Συνδέσεις HTTP Διατήρηση κατάστασης χρήστη-server: Cookies Web caches (proxy server) Πρωτόκολλο FTP Διαχωρισμός συνδέσεων Ηλεκτρονική αλληλογραφία Πρωτόκολλο SMTP Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 77

Απλή βάση δεδομένων Απλή βάση με ζευγάρια (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 Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 78

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 Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 79

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

Ανάθεση ζευγαριών 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 Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 81

Σημερινή διάλεξη Σύνοψη 2ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλο HTTP Συνδέσεις HTTP Διατήρηση κατάστασης χρήστη-server: Cookies Web caches (proxy server) Πρωτόκολλο FTP Διαχωρισμός συνδέσεων Ηλεκτρονική αλληλογραφία Πρωτόκολλο SMTP Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 82

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

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

Σημερινή διάλεξη Σύνοψη 2ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλο HTTP Συνδέσεις HTTP Διατήρηση κατάστασης χρήστη-server: Cookies Web caches (proxy server) Πρωτόκολλο FTP Διαχωρισμός συνδέσεων Ηλεκτρονική αλληλογραφία Πρωτόκολλο SMTP Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 85

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

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

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

Σημερινή διάλεξη Σύνοψη 2ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλο HTTP Συνδέσεις HTTP Διατήρηση κατάστασης χρήστη-server: Cookies Web caches (proxy server) Πρωτόκολλο FTP Διαχωρισμός συνδέσεων Ηλεκτρονική αλληλογραφία Πρωτόκολλο SMTP Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 89

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

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

Σημερινή διάλεξη Σύνοψη 2ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλο HTTP Συνδέσεις HTTP Διατήρηση κατάστασης χρήστη-server: Cookies Web caches (proxy server) Πρωτόκολλο FTP Διαχωρισμός συνδέσεων Ηλεκτρονική αλληλογραφία Πρωτόκολλο SMTP Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 92

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

Αλληλεπίδραση 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 94

Παράδειγμα 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() Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 95

Παράδειγμα 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) Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 96

Σημερινή διάλεξη Σύνοψη 2ης διάλεξης Επίπεδο εφαρμογής Πρωτόκολλο HTTP Συνδέσεις HTTP Διατήρηση κατάστασης χρήστη-server: Cookies Web caches (proxy server) Πρωτόκολλο FTP Διαχωρισμός συνδέσεων Ηλεκτρονική αλληλογραφία Πρωτόκολλο SMTP Πρωτόκολλα πρόσβασης σε mail Domain Name System (DNS) Αρχιτεκτονική P2P Πρωτόκολλο BitTorent Distributed Hash Table Κυκλικό DHT Κυκλικό DHT με συντομεύσεις Προγραμματισμός sockets Προγραμματισμός sockets με UDP Προγραμματισμός sockets με TCP Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 97

Προγραμματισμός 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 99

Παράδειγμα 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() Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 100

Παράδειγμα 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() Πρωτόκολλα Διαδικτύου, 3η Διάλεξη 101