National Technical University of AthensΤεχνολογίες Διαδικτύου Σύνοψη 1Αρχές διαδικτύου 1.1 Αναδρομή – εισαγωγή 1.2 Πρωτόκολλα TCP/IP Διαστρωμάτωση Μέσα Μετάδοσης 1.3 Το πρωτόκολλο IP Τάξεις Διευθύνσεων IP Δρομολόγηση IP Το πρωτόκολλο ICMP 1.4 Πρωτόκολλα Στρώματος Μεταφοράς Πρωτόκολλο Ελέγχου Μετάδοσης (Transmission Control Protocol, TCP) Πρωτόκολλο Πακέτων Χρήστη (User Datagram Protocol, UDP) 1.5 Η εξέλιξη της Τεχνολογίας του Διαδικτύου Το Διαδίκτυο Σήμερα Το Διαδίκτυο Επόμενης Γενιάς
Στρώμα Μεταφοράς Παρέχει λογική επικοινωνία μεταξύ εφαρμογών που τρέχουν σε διαφορετικά τερματικά Λογική Επικοινωνία σημαίνει ότι οι εφαρμογές «αντιλαμβάνονται» ότι τα τερματικά είναι απευθείας συνδεδεμένα μεταξύ τους Οι εφαρμογές χρησιμοποιούν αυτό το λογικό κανάλι επικοινωνίας προκειμένου να ανταλλάξουν μηνύματα χωρίς να έχουν και χωρίς να χρειάζεται να έχουν επίγνωση της υποκείμενης υποδομής National Technical University of AthensΤεχνολογίες Διαδικτύου
Πρωτόκολλα Στρώματος Μεταφοράς Τα πρωτόκολλα στρώματος μεταφοράς υλοποιούνται μόνο στα τερματικά όπου τρέχουν οι εφαρμογές Στην πλευρά του αποστολέα μετατρέπουν τα μηνύματα που λαμβάνουν από το στρώμα εφαρμογής σε πακέτα στρώματος μεταφοράς τα οποία ονομάζονται segments και τα προωθούν στο στρώμα δικτύου όπου ενθυλακώνονται σε πακέτα IP και προωθούνται προς τον παραλήπτη Στην πλευρά του παραλήπτη το στρώμα δικτύου απογυμνώνει το segment από το πακέτο IP και το προωθεί στο στρώμα μεταφοράς. Το στρώμα μεταφοράς επεξεργάζεται το segment και προωθεί τα δεδομένα του στην εφαρμογή για την οποία προορίζεται. Τα διαθέσιμα πρωτόκολλα μπορεί να είναι διαφορετικά και να παρέχουν διαφορετικές υπηρεσίες στρώματος μεταφοράς στις εφαρμογές. National Technical University of AthensΤεχνολογίες Διαδικτύου
Ένα πρακτικό παράδειγμα National Technical University of AthensΤεχνολογίες Διαδικτύου Δύο σπίτια σε διαφορετικές πόλεις στα οποία μένουν παιδιά που είναι ξαδέρφια Τα παιδιά αλληλογραφούν. Κάθε παιδί, κάθε εβδομάδα στέλνει ένα γράμμα σε ξεχωριστό φάκελο μέσω ταχυδρομείου σε κάθε ένα από τα ξαδέλφια του. Σε κάθε σπίτι υπάρχει πάντα κάποιο παιδί που αναλαμβάνει να μαζεύει τα γράμματα και να τα παραδίδει στο ταχυδρομείο και να παραλαμβάνει την αλληλογραφία από το ταχυδρομείο για να την μοιράσει στα υπόλοιπα παιδιά. Κάθε παιδί διαχειρίζεται την αλληλογραφία με διαφορετικό τρόπο (πιο συχνή συλλογή γραμμάτων, απώλεια ή μη γραμμάτων κλπ).
Η αναλογία με τη σχέση των στρωμάτων Μεταφοράς & Δικτύου National Technical University of AthensΤεχνολογίες Διαδικτύου Μηνύματα Εφαρμογών = Γράμματα στους Φακέλους Διεργασίες/Εφαρμογές = Ξαδέρφια Τερματικά = Σπίτια Πρωτόκολλο Στρώματος Μεταφοράς = Τα παιδιά που διαχειρίζονται την αλληλογραφία Πρωτόκολλο Στρώματος Δικτύου = Η Υπηρεσία του Ταχυδρομείου Μοντέλο υπηρεσίας του Στρώματος Μεταφοράς = Τρόπος Διαχείρισης της αλληλογραφίας
Το Στρώμα Μεταφοράς στο Διαδίκτυο Δύο διαθέσιμα πρωτόκολλα Στρώματος Μεταφοράς Transmission Control Protocol (TCP) Παρέχει αξιόπιστη υπηρεσία μεταφοράς με σύνδεση User Datagram Protocol (UDP) Παρέχει μη αξιόπιστη υπηρεσία μεταφοράς χωρίς σύνδεση Υπηρεσίες που παρέχουν: Μεταφορά δεδομένων μεταξύ διεργασιών/εφαρμογών (transport layer multiplexing and demultiplexing) Έλεγχο λαθών Αξιόπιστη μεταφορά δεδομένων (μόνο το TCP) Έλεγχο συμφόρησης (μόνο το TCP) National Technical University of AthensΤεχνολογίες Διαδικτύου
Μεταφορά δεδομένων μεταξύ διεργασιών/εφαρμογών Οι διεργασίες των εφαρμογών στέλνουν και λαμβάνουν προς και από το δίκτυο μηνύματα/δεδομένα μέσω προγραμματιστικών διεπαφών που ονομάζονται sockets. Μία διεργασία μπορεί να έχει ένα ή περισσότερα sockets. Κάθε socket έχει ένα μοναδικό αναγνωριστικό και η μορφή του εξαρτάται από το αν είναι UDP socket ή TCP socket. To Στρώμα Μεταφοράς αναλαμβάνει κάθε φορά που λαμβάνει ένα segment, εξετάζοντας τα πεδία του, να παραδώσει τα δεδομένα του στο σωστό socket demultiplexing. Η αντίστροφη διαδικασία ονομάζεται multiplexing. National Technical University of AthensΤεχνολογίες Διαδικτύου
Μεταφορά δεδομένων μεταξύ διεργασιών/εφαρμογών National Technical University of AthensΤεχνολογίες Διαδικτύου
Γενική Μορφή Segment National Technical University of AthensΤεχνολογίες Διαδικτύου Τα πεδία που προσδιορίζουν σε ποιο socket πρέπει να σταλεί ένα segment είναι τα source port number & destination port number Τα port numbers είναι αριθμοί των 16 bit με εύρος από 0 – Τα port numbers από 0 – 1023 είναι κρατημένα για χρήση από συγκεκριμένες εφαρμογές, π.χ. το HTTP χρησιμοποιεί το port 80. (RFC 3232)
Μεταφορά δεδομένων μεταξύ διεργασιών/ εφαρμογών χωρίς σύνδεση (UDP) National Technical University of AthensΤεχνολογίες Διαδικτύου Ο προορισμός ενός UDP segment καθορίζεται από ένα ζεύγος παραμέτρων Τερματικό προορισμού Port Number Προορισμού Το Port Number Πηγής «μετατρέπεται» σε Port Number Προορισμού σε περίπτωση που χρειαστεί να σταλεί κάποιο segment προς την πηγή. Segments από διαφορετικές πηγές αλλά με τον ίδιο προορισμό (τερματικό, port) παραδίδονται μέσω του ίδιου socket στην ίδια διεργασία.
Μεταφορά δεδομένων μεταξύ διεργασιών/ εφαρμογών με σύνδεση (TCP) National Technical University of AthensΤεχνολογίες Διαδικτύου Ο προορισμός ενός TCP segment καθορίζεται από μία τετράδα παραμέτρων Τερματικό Πηγή Port Number Πηγής Τερματικό Προορισμού Port Number Προορισμού Δύο segments που προέρχονται από διαφορετική πηγή παραδίδονται μέσω διαφορετικών sockets σε διαφορετικές διεργασίες
National Technical University of AthensΤεχνολογίες Διαδικτύου User Datagram Protocol (UDP) [RFC768] Το πρωτόκολλο UDP προσφέρει μια μη αξιόπιστη υπηρεσία μεταφοράς χωρίς σύνδεση, χρησιμοποιώντας το πρωτόκολλο IP για τη μεταφορά των μηνυμάτων μεταξύ τερματικών Δεν χρησιμοποιεί επιβεβαιώσεις, δεν αριθμεί τα μηνύματα και δεν ελέγχει τη ροή τους. Έτσι ένα μήνυμα UDP μπορεί να χαθεί ή να φτάσει σε δύο αντίγραφα, ή ακόμα να φτάσουν μηνύματα UDP σε λανθασμένη σειρά Κάθε μονάδα πληροφορίας του UDP ονομάζεται επίσης datagram
National Technical University of AthensΤεχνολογίες Διαδικτύου Γιατί χρησιμοποιείται το UDP? Δεν υπάρχει εγκατάσταση σύνδεσης που μπορεί να προκαλέσει επιπλέον καθυστέρηση Είναι απλό: δεν διατηρείται κατάσταση σύνδεσης στον αποστολέα, παραλήπτη Μικρή επικεφαλίδα Όχι έλεγχος συμφόρησης που μειώνει τον ρυθμό μετάδοσης των δεδομένων
National Technical University of AthensΤεχνολογίες Διαδικτύου Το πακέτο UDP Θύρα πηγής #Θύρα προορισμού # 32 bits Δεδομένα Μήκος Άθροισμα ελέγχου Μήκος του πακέτου UDP, μαζί με την επικεφαλίδα Το UDP χρησιμοποιείται από εφαρμογές που είναι ανεκτικές στις απώλειες πακέτων & ευαίσθητες στον ρυθμό μετάδοσης & στις καθυστερήσεις Streaming multimedia Internet Telephony Network Management (SNMP) Routing Protocol (RIP) Name Translation (DNS)
National Technical University of AthensΤεχνολογίες Διαδικτύου Transmission Control Protocol (TCP) (1) Το TCP εγκαθιστά ένα νοητό κύκλωμα μεταξύ των δύο σταθμών εργασίας (connection oriented) Διαδικασία handshaking μεταξύ του αποστολέα και παραλήπτη για εγκατάσταση και επιβεβαίωση σύνδεσης Η μεταφορά δεδομένων με TCP είναι full-duplex (αμφίδρομη), δηλαδή μπορούμε να έχουμε ταυτόχρονη μεταφορά δεδομένων και προς τις δύο κατευθύνσεις. Οι συνδέσεις είναι Point-to-point Ένας αποστολέας, ένας παραλήπτης. Δεν είναι δυνατό το “multicasting” πάνω από TCP. Η μονάδα πληροφορίας στο TCP ονομάζεται TCP segment Κάθε υποδίκτυο καθορίζει ένα Maximum Segment Size (MSS) που βασίζεται στο Maximum Transmission Unit (MTU)
National Technical University of AthensΤεχνολογίες Διαδικτύου Transmission Control Protocol (TCP) (2) Χρησιμοποιεί επιβεβαιώσεις, αριθμεί τα πακέτα Μη επιβεβαιωμένο πακέτο επαναμεταδίδεται Εάν ίδιο πακέτο επαναμεταδοθεί απορρίπτεται από τον παραλήπτη Περνά τα δεδομένα στον προορισμό με την ίδια σειρά με την οποία τα έστειλε η πηγή Πραγματοποιεί έλεγχο συμφόρησης. Ο αποστολέας δεν θα κατακλύσει τον παραλήπτη Αποταμιευτές στον αποστολέα και στον παραλήπτη RFCs: 793, 1122, 1323, 2018, 2581
Το πακέτο TCP Θύρα πηγής # Θύρα προορισμού # 32 bits Δεδομένα (μεταβλητό μήκος) Αριθμός ακολουθίας (Sequence #) Αριθμός επιβεβαίωσης (Acknowledgment #) Παράθυρο Δείκτης επείγον Άθροισμα ελέγχου F SR PAU Data Offset not used Επιλογές και Συμπλήρωμα (μεταβλητό μήκος) URG: πεδίο δείκτη επείγοντος ACK: πεδίο επιβεβαίωσης λήψης PSH: προωθεί τα δεδομένα τώρα RST, SYN, FIN: εγκατάσταση σύνδεσης (reset, συγχρονίζει, τερματίζει) αριθμό bytes που ο δέκτης επιθυμεί να δεχτεί Μετράνε αριθμό bytes (όχι segments!) Internet checksum 20 οκτάδες Δείχνει μετά από πόσες λέξεις 32-bit αρχίζουν δεδομένα
National Technical University of AthensΤεχνολογίες Διαδικτύου Τα πεδία Sequence & Acknowledgement number Εξασφαλίζουν αξιόπιστη μεταφορά των δεδομένων Το Sequence number αναφέρεται στον αριθμό των μεταδιδόμενων bytes για μια ροή πακέτων και όχι στη σειρά των μεταδιδόμενων segments Έστω αρχείο των bytes MSS είναι 1000Bytes και το πρώτο byte στην ροή δεδομένων αριθμείται ως 0 Έχουμε 500 segments, το πρώτο έχει sequence number 0, το δεύτερο 1000, το τρίτο
National Technical University of AthensΤεχνολογίες Διαδικτύου Τα πεδία Sequence & Acknowledgement number Καθώς το TCP είναι full duplex ένα τερματικό Α μπορεί να στέλνει στο Β αλλά και να λαμβάνει ταυτόχρονα από αυτό Κάθε segment που φτάνει από το Β έχει ένα sequence number To acknowledgment number που το τερματικό A βάζει στο segment είναι το sequence number του επόμενου byte που περιμένει να λάβει από τον B
National Technical University of AthensΤεχνολογίες Διαδικτύου Τα πεδία Sequence & Acknowledgement number Παράδειγμα 1 Έστω ότι ο A έχει λάβει τα bytes με αριθμούς από 0 έως 535 από τον B και θεωρούμε ότι πρόκειται να στείλει ένα segment στον B Με άλλα λόγια ο A περιμένει το byte 536 και όλα τα επόμενα bytes Επομένως ο A βάζει το 536 στο πεδίο acknowledgment number field του segment που στέλνει στο B Παράδειγμα 2 Ο Α έχει λάβει το τρίτο segment (bytes 900 έως 1.000) πριν λάβει το δεύτερο segment (bytes 536 έως 899) Έτσι το τρίτο segment έφτασε εκτός σειράς Τι κάνει λοιπόν ένα τερματικό όταν λάβει TCP segments εκτός σειράς?
National Technical University of AthensΤεχνολογίες Διαδικτύου Telnet: Sequence & Acknowledgment Numbers Seq. #’s: Αρίθμηση του πρώτου byte σε ένα segment ACKs: seq # του επόμενου byte που αναμένεται από την άλλη πλευρά Q: πως μπορούμε να χειριστούμε εκτός σειράς segments Απόρριψη Αποθήκευση αυτών μέχρι να έρθουν κομμάτια που λείπουν για να συμπληρώσουν τα κενά Host A Host B Seq=42, ACK=79, data = ‘C’ Seq=79, ACK=43, data = ‘C’ Seq=43, ACK=80 User types ‘C’ host ACKs receipt of echoed ‘C’ host ACKs receipt of ‘C’, echoes back ‘C’ time simple telnet scenario
National Technical University of AthensΤεχνολογίες Διαδικτύου TCP Εγκατάσταση Σύνδεσης (1) Σημείωση: ο αποστολέας και ο παραλήπτης εγκαθιστούν σύνδεση πριν ανταλλάξουν δεδομένα Αρχικοποίηση μεταβλητών TCP: seq. #s ενταμιευτές, πληροφορίας ελέγχου ροής (e.g. RcvWindow) client: ξεκινάει τη σύνδεση Socket clientSocket = new Socket("hostname","port number"); server: συνδέεται πελάτης Socket connectionSocket = welcomeSocket.accept();
National Technical University of AthensΤεχνολογίες Διαδικτύου TCP Εγκατάσταση Σύνδεσης (2) Three way handshake: Step 1: client host στέλνει TCP SYN segment στον server Προσδιορίζει αρχικό seq # (client_isn) Όχι δεδομένα Step 2: server host δέχεται το SYN Ο server αρχικοποιεί τους ενταμιευτές του Απαντά με SYNACK segment Θέτει το SYN field 1 Αρχικοποιεί το seq. # (server_isn) Θέτει το acknowledgment field client_isn+1 Step 3: client λαμβάνει SYNACK Αρχικοποιεί μεταβλητές και ενταμιευτές Απαντά με ένα ACK Θέτει το acknowledgment field (server_isn+1) Θέτει το SYN field 0 (connection established)
National Technical University of AthensΤεχνολογίες Διαδικτύου TCP Τερματισμός κλήσης Κλείσιμο σύνδεσης: client τερματίζει socket: clientSocket.close(); Step 1: client end system στέλνει TCP FIN control segment στον server Step 2: server λαμβάνει FIN, απαντά με ACK. Κλείνει σύνδεση, στέλνει FIN. Step 3: client λαμβάνει FIN, απαντά με ACK. Μπαίνει σε “timed wait” – θα απαντήσει με ACK Step 4: server, λαμβάνει ACK. Connection closed.
National Technical University of AthensΤεχνολογίες Διαδικτύου ΤCP Connection Management – TCP client lifecycle
National Technical University of AthensΤεχνολογίες Διαδικτύου ΤCP Connection Management – TCP server lifecycle
National Technical University of AthensΤεχνολογίες Διαδικτύου Εφαρμογές στο Διαδίκτυο ApplicationApplication-layer protocol Transport Protocol electronic mailSMTPTCP remote terminal access TelnetTCP WebHTTPTCP file transferFTPTCP remote file serverNFStypically UDP streaming multimediaProprietarytypically UDP Internet telephonyProprietarytypically UDP Network ManagementSNMPtypically UDP Routing ProtocolRIPtypically UDP Name TranslationDNStypically UDP