INTERNET Βασισμένο στην δεύτερη έκδοση του βιβλίου του J. Walrand
Σύντομη Ιστορία 1962: Ο Paul Baran της Rand Corporation εισάγει τη μεταγωγή πακέτων 1969: Το DARPA (Department of Defense Advanced Research Projects Agency) εγκαθιστεί το πρώτο δίκτυο με μεταγωγή πακέτων, το ARPANET, που ξεκινά με 4 κόμβους 1974: Ο Vint Cerf κι ο Bob Kahn δημιουργούν τους βασικούς μηχανισμούς του TCP 1982: Ορίζεται η ακολουθία πρωτοκόλλων TCP/IP για το ARPANET 1984: Εισάγεται το σύστημα Ονομάτων Πεδίων (Domain Name) 1986: Δημιουργείται το NSFNET, ο πρώτος κορμός (56 kbps) του Internet, από το NSF (National Science Foundation) 1992: Ο Παγκόσμιος Ιστός - World-Wide Web (WWW) σχεδιάζεται από τον Tim Berners-Lee στο CERN, την Ευρωπαϊκή Οργάνωση Πυρηνικής Έρευνας
Σχεδιάγραμμα του Internet γύρω στο 1990
Σχεδιάγραμμα του Internet το 1997
Η Αρχιτεκτονική των Δικτύων TCP/IP
Το Στρώμα Ζεύξης Τοπικού Δικτύου (LAN-Link) Το στρώμα ζεύξης τοπικού δικτύου (LAN-link) μεταδίδει πακέτα μεταξύ κόμβων που επικοινωνούν με κάποιο κοινό κανάλι. Για παράδειγμα, όταν συνδέεται κανείς με modem από το σπίτι του, χρησιμοποιεί κάποιο πρωτόκολλο ζεύξης, όπως το PPP ή το SLIP. Τα βασικά χαρακτηριστικά μεγέθη της απόδοσης της λειτουργίας του στρώματος ζεύξης τοπικού δικτύου είναι: Η Μέγιστη Μονάδα Μεταφοράς MTU (Maximum Transfer Unit) Ο Ρυθμός Σφαλμάτων Πακέτων PER (Packet Error Rate) Ο Ρυθμός Μετάδοσης (Transmission Rate)
Παραδείγματα Για το Ethernet: Η MTU είναι 1500 bytes Ο Ρυθμός Μετάδοσης είναι 1 Gbps (για το gigabit Ethernet) Για το SLIP: Η MTU είναι 512 bytes Ο Ρυθμός Μετάδοσης είναι 9600 bps Για ATM LAN: Ο Ρυθμός Μετάδοσης είναι 622 Mbps Συνήθως το PER είναι πολύ μικρό (περίπου 0.1%) για ενσύρματες ζεύξεις, ενώ είναι μεγαλύτερο για ασύρματες.
Το Στρώμα Δικτύου Το Πρωτόκολλο του Internet IP (Internet Protocol) υλοποιεί την διανομή των πακέτων (μέχρι 64 kbytes) Όταν ένα πακέτο είναι μεγαλύτερο του MTU της σύνδεσης, το ΙΡ το τεμαχίζει και μεταδίδει τα τμήματα του ένα-ένα. Το ΙΡ επιτηρεί την διευθυνσιοδότηση των κόμβων και την δρομολόγηση των πακέτων Στους κόμβους το ICMP (Internet Control Message Protocol) επιτηρεί την παράδοση των πακέτων Οι δρομολογητές (routers) χρησιμοποιούν τη μέθοδο της διακίνησης αυτοδύναμων πακέτων (datagrams) Οι δρομολογητές ΑΤΜ χρησιμοποιούν μεταγωγή πακέτων με ιδεατά κυκλώματα (virtual circuits) Διαβάστε ΚΑΛΑ την παράγραφο 2.5 στις σελίδες 39-47 του βιβλίου
Το Στρώμα Διακίνησης (Transport Layer) Το στρώμα διακίνησης υλοποιείται στα δυο ακραία συστήματα και δεν γίνεται αισθητό από τους routers. Το ΙΡ χρησιμοποιεί δυο πρωτόκολλα στρώματος διακίνησης: Το Πρωτόκολλο Ελέγχου Διακίνησης TCP (Transmission Control Protocol): Δυο είναι οι κύριες λειτουργίες του: έλεγχος σφαλμάτων (με την επαναποστολή των λανθασμένων πακέτων) κι έλεγχος ροής πακέτων (με την επιβράδυνση της διακίνησης όταν συμβαίνουν συμφορήσεις). Προσοχή: Οι λειτουργίες αυτές ελέγχου γίνονται από τα τελικά συστήματα, όχι τους routers! Το Χωρίς Σύνδεση Πρωτόκολο Αυτοδύναμων Πακέτων UDP (User Datagram Protocol): Αυτό παραδίδει τα πακέτα από την πηγή τους στον τελικό παραλήπτη. Ο μόνος έλεγχος που κάνει είναι αν τα πακέτα φθάσαν σωστά, διαφορετικά τα παραβλέπει.
Το Στρώμα Εφαρμογών FTP Το Πρωτόκολλο Μεταφοράς Αρχείων FTP (File Transfer Protocol) χρησιμοποιείται για τη μεταφορά αρχείων από υπολογιστή σε υπολογιστή. Επιτρέπει μεταφορά, μετάβαση, δημιουργία και μεταβολή σε αρχεία και καταλόγους εξ αποστάσεως. Χρησιμοποιεί 3 τρόπους μεταφοράς: stream: είναι ο default τρόπος και δεν αλλάζει τίποτε στα μεταφερόμενα αρχεία block: διαμερίζει τα μεταφερόμενα αρχεία σε block compressed: συμπιέζει τα αρχεία Το FTP χρησιμοποιεί δυο συνδέσεις TCP: μια για εντολές/απαντήσεις και μια για μεταφορές/αναγνωρίσεις δεδομένων. Ένας FTP server έχει ανοικτή την πόρτα 21 κι όταν έρχεται αίτημα σύνδεσης από έναν πελάτη (client) μπορεί να ζητήσει πιστοποίηση κωδικού (password) ή να επιτρέπει ανώνυμη μεταφορά.
SMTP Το Πρωτόκολο Απλής Μεταφοράς Ταχυδρομείου SMTP (Simple Mail-Transfer Protocol) χρησιμοποιείται για την ανταλλαγή μηνυμάτων ηλεκτρονικού ταχυδρομείου (e-mails) μεταξύ hosts. Όταν το SMTP παίρνει ένα μήνυμα, το στέλνει σ’ όλες τις διευθύνσεις προορισμού. Αν το μήνυμα στέλνεται σε διάφορους παραλήπτες του ιδίου host, τότε πηγαίνει σε έναν-έναν. Όταν η αποστολή του μηνύματος αποτυχαίνει, το SMTP θα δοκιμάσει να το ξαναστείλει σε επόμενες προσπάθειες, μέχρις ότου παραιτηθεί, οπότε θα δηλώσει την αδυναμία παράδοσης στον αποστολέα του μηνύματος.
TELNET RCP = Remote File Copy, από απόσταση αντιγραφή αρχείων Το TELNET επιτρέπει στον χρήστη να προσομοιώσει μια απευθείας σύνδεση από το τερματικό του σ’ έναν απομακρυσμένο host. Αυτό γίνεται με τον ορισμό ενός δικτυακού στάνταρντ κώδικα χαρακτήρων, τον ASCII (που αποτελείται από τα σύνηθη σύμβολα συν κάποιους κώδικες ελέγχου). Αυτός ο κώδικας συνιστά ένα δυνητικό τερματικό (virtual terminal), με το οποίο υποτίθεται μπορούν να αλληλεπιδράσουν όλοι οι hosts. Η αλληλεπίδραση υλοποιείται με τη μετατροπή των χαρακτήρων που στέλνονται από το πραγματικό τερματικό στο δικτυακό στάνταρντ. Παράλληλα, τα εισαγόμενα δεδομένα από το δυνητικό τερματικό μεταφράζονται σε δεδομένα που μπορεί να διαβάσει ο host. RCP = Remote File Copy, από απόσταση αντιγραφή αρχείων RSH = Remote Shell, από απόσταση εκτέλεση εντολών RLOGIN = Από απόσταση login χωρίς password
TFTP Το TFTP (Trivial File Transfer Protocol) επιτρέπει τη μεταφορά αρχείων μεταξύ δυο διαδικασιών πάνω από το UDP, τεμαχίζοντας τα πακέτα σε blocks μέχρι 512 bytes. HTTP Το HTTP (Hypertext Transfer Protocol) χρησιμοποιεί το TCP για να μεταφέρει υλικό του web από έναν web server (πχ., Apache) σ’ έναν web client (όπως, πχ., Internet Explorer ή Netscape). RTP Το RTP (Real-Time Transfer Protocol) μεταφέρει ήχο και video στο Internet. Ο πομπός συμπιέζει τα δεδομένα των πακέτων, ενώ ο δέκτης τα αποθηκεύει προσωρινά (buffer), τα αποσυμπιέζει και στη συνέχεια τα παίζει.
ΟΝΟΜΑΤΑ ΤΩΝ HOSTS ΤΟΥ INTERNET Domains (Πεδία), όπως: .edu για Πανεπιστήμια των ΗΠΑ .gov για κυβερνητικές υπηρεσίες των ΗΠΑ .mil για τον στρατό των ΗΠΑ .com για εταιρείες .net για παροχείς δικτυακών υπηρεσιών .org για οργανισμούς .gr για την Ελλάδα .uk για το Ηνωμένο Βασίλειο .de για την Γερμανία .fr για την Γαλλία κοκ. Subdomains (Υποπεδία), όπως, για παράδειγμα: berkeley.edu upatras.gr
Διαδικασία Εύρεσης Διεύθυνσης IP από το Όνομα Αναζήτηση στο τοπικό cache του host Ερώτηση στον τοπικό name server Ερώτηση στον root name server (για την διεύθυνση του domain name server) Ερώτηση στον domain name server (για την διεύθυνση του subdomain name server) Ερώτηση στον subdomain name server (για την διεύθυνση του host)
ΔΙΕΥΘΥΝΣΕΙΣ ΙΡ ΤΩΝ HOSTS ΤΟΥ INTERNET Ορισμένες με το Σύστημα Κλάσεων (Classes) Ορισμένες με Υποδίκτυα (Subnetting) Ορισμένες με το Σύστημα CIDR
ΚΛΑΣΕΙΣ (CLASSES) ΔΙΕΥΘΥΝΣΕΩΝ Γενική μορφή διεύθυνσης IP: “network.host” (“δίκτυο.υπολογιστής”) Πλήθος ψηφίων (bits) διευθύνσεων ΙΡ: 4 bytes (χωρισμένα με τελείες) 1 byte = 8 bits, δηλαδή, συνολικά 24 bits, όπου: 1 byte = ένας αριθμός (στο δεκαδικό σύστημα) από 0 ως 255 Διανομή των 4 bytes στα τμήματα “network” και “host”: Class A: network = 8 bits (1 byte), host = 24 bits (3 bytes) Class B: network = 16 bits (2 bytes), host = 16 bits (2 bytes) Class C: network = 24 bits (3 bytes), host = 8 bits (1 byte)
Πλήθος Διευθύνσεων σε κάθε Κλάση (Class): Class A: Μικρό πλήθος δικτύων το καθένα με πολλούς hosts Class B: Μέσο πλήθος δικτύων το καθένα με μέσο πλήθος hosts Class C: Μεγάλο πλήθος δικτύων το καθένα με λίγα hosts
ΧΩΡΙΣΜΟΣ ΣΕ ΥΠΟΔΙΚΤΥΑ (SUBNETTING) Συνήθως διασπώνται σε υποδίκτυα οι διευθύνσεις κλάσης Β: Το πρώτο byte δηλώνει την τάξη (class) Το υποδίκτυο δηλώνεται στο τρίτο byte Ο host δηλώνεται στο τέταρτο byte (εκτός αν ο αριθμός του host απαιτεί περισσότερα από 8 bits οπότε παίρνει και κάποια bits κι από το τρίτο byte) Το πλήθος των hosts φανερώνεται όταν γίνει γνωστή η μάσκα (mask), που αποτελείται από μια σειρά από 1 ακολοθούμενη από μια σειρά από 0, οπότε το πλήθος των 0 είναι στο δυαδικό σύστημα το πλήθος των hosts του υποδικτύου. Παράδειγμα: IP = 128.32.134.56 και Mask = 255.255.255.0 128 σε δυαδική γραφή => διεύθυνση class B. Η Mask έχει στο τέλος 8 bits με 0 => το πλήθος των hosts του υποδικτύου είναι 256 (56 είναι ο συγκεκριμένος host) κι η διεύθυνση του υποδικτύου είναι 128.32.134 Ερώτηση: Ποιά είναι η μάσκα ενός υποδικτύου με μόνο 16 hosts;
ΤΟ ΣΥΣΤΗΜΑ ΔΙΕΥΘΥΝΣΕΩΝ CIDR Η γενική ιδέα του συστήματος CIDR (Classless Interdomain Routing) είναι η χρήση προθέματος, δηλαδή, του μεγαλύτερου αρχικού τμήματος της διεύθυνσης που ορίζει το πεδίο (domain) της διεύθυνσης όταν συντομευόμενο δεν ορίζει κανένα άλλο πεδίο. Παράδειγμα: Το παρακάτω σχήμα δείχνει 3 υπερδίκτυα, το πρώτο αποτελούμενο από hosts με διευθύνσεις τέτοιες ώστε όλες να αρχίζουν με XYZ, το δεύτερο με XYZ’0 και το τρίτο με XYZ’1.
ΤΟ ΠΡΩΤΟΚΟΛΛΟ ΤΟΥ INTERNET (IP) Το πρωτόκολλο του Internet (ΙΡ) χειρίζεται την δρομολόγηση πακέτων προς τους προορισμούς τους. Ο έλεγχος των μηνυμάτων από τους κόμβους του Internet γίνεται με το πρωτόκολλο ICMP (Internet Control Message Protocol). Η δρομολόγηση (routing) στο Internet είναι ιεραρχική και στηρίζεται στον διαχωρισμό των κόμβων σε δυο συστήματα: Τα Αυτόνομα Συστήματα ASs (Autonomous Systems), που είναι υποδίκτυα που ανήκουν σε κάποιον οργανισμό (πχ., πανεπιστήμιο ή εταιρεία). Μέσα σ’ ένα AS η δρομολόγηση γίνεται από τον αλγόριθμο OSPF (ενώ παλαιότερα χρησιμοποιούταν ο αλγόριθμος RIP). Τις Οριακές Πύλες BGs (Border Gateways), που συνδέουν τα ASs και για την δρομολόγηση χρησιμοποιούν τον αλγόριθμο BGP.
ΛΕΙΤΟΥΡΓΙA ΤΟΥ ΠΡΩΤΟΚΟΛΛΟΥ ΤΟΥ INTERNET (IP) Το ΙΡ είναι πρωτόκολλο αυτοδύναμων πακέτων (datagrams), δηλαδή, προωθεί πακέτα μεγέθους ως 64 kbytes το ένα ανεξάρτητα από τα άλλα. Έτσι, κάθε πακέτο μπορεί να ακολουθεί διαφορετική διαδρομή. Φυσικά, κάθε πακέτο φέρει την διεύθυνση προορισμού του. Όταν κάτι πάει στραβά, πχ., όταν ο προορισμός απρόσιτος ή όταν κάποια πακέτα χάνονται, γιατί τυχαίνει να κάνουν συνεχείς κύκλους (loops), τότε το Πρωτόκολλο του Internet του Ελέγχου των Μηνυμάτων ICMP (Internet Control Message Protocol) ειδοποιεί τον host να κάνει κάτι, πχ., να διορθώσει την δρομολόγηση.
ΕΠΙΚΕΦΑΛΙΔΑ ΙΡ Η επικεφαλίδα ΙΡ (IP header) περιλαμβάνει τις εξής πληροφορίες: έκδοσης (version) του πρωτοκόλλου ΙΡ συνολικού μήκους (Inter Header Length ή IHL) τύπου επιθυμητής υπηρεσίας (Service), πχ., γρήγορη, ψηλής αξιοπιστίας κλπ. αναγνώρισης (Identification), σημαίας-δείκτη (Flag), θέσης τεμαχίου (Fragment offset) των πακέτων χρόνου ζωής (Time to live) των πακέτων στο δίκτυο πρωτόκολλου (Protocol) στο ψηλότερο επίπεδο (πχ., TCP, UDP ή ICMP) ελέγχου αθροίσματος των bytes της επικεφαλίδας (Header checksum)
ΤΕΜΑΧΙΣΜΟΣ (FRAGMENTATION) Οι συνδέσεις του Internet έχουν κάποιο μέγιστο μέγεθος πακέτων που μπορούν να μεταφέρουν, που καθορίζεται από τη μέγιστη μονάδα μεταφοράς MTU της σύνδεσης. Αν ένα πακέτο φθάνει στον δρομολογητή (router) σε μέγεθος μεγαλύτερο της MTU της εξερχόμενης σύνδεσης, τότε ο router το τεμαχίζει σε μικρότερα κομμάτια, τα οποία ανασυντίθενται στον host του προορισμού τους. Παράδειγμα: Έστω ένα αυτοδύναμο πακέτο με αριθμό αναγνώρισης Χ και μήκος L. Υποθέτουμε ότι αρχικά ο router το τεμαχίζει σε τέσσερα κομμάτια μήκους Κ, Κ, Κ και Κ’, αντιστοίχως, όπου Κ είναι η MTU της εξερχόμενης σύνδεσης και Κ’ = L – 3K ≤ K. Το πρώτο τεμάχιο συμβολίζεται σαν (Χ, 0), το δεύτερο σαν (Χ, Κ), το τρίτο σαν (Χ, 2Κ) και το τέταρτο σαν (Χ, 3Κ), έτσι ώστε να δηλώνεται η ταυτότητα Χ του αρχικού πακέτου κι η θέση τεμαχισμού. Στη συνέχεια υποθέτουμε ότι τα τεμαχισμένα αυτά πακέτα πηγαίνουν σ’ ένα router του οποίου η εξερχόμενη σύνδεση έχει MTU ίση με Μ, όπου Μ < Κ. Έστω ότι 2Μ < Κ = 2Μ + Μ’ < 3Μ. Τότε το τρίτο τεμάχιο (Χ,2Κ) του αρχικού πακέτου πρέπει να σπάσει 3 κομμάτια μήκους Μ, Μ και Μ’, αντιστοίχως, τα οποία συμβολίζονται σαν (Χ, 2Κ), (Χ, 2Κ+Μ) και (Χ, 2Κ+2Μ), αντιστοίχως.
ΠΡΩΤΟΥ ΑΝΟΙΚΤΟΥ ΣΥΝΤΟΜΟΤΕΡΟΥ ΔΡΟΜΟΥ OSPF (OPEN SHORTEST PATH FIRST) ΔΡΟΜΟΛΟΓΗΣΗ ΠΡΩΤΟΥ ΑΝΟΙΚΤΟΥ ΣΥΝΤΟΜΟΤΕΡΟΥ ΔΡΟΜΟΥ OSPF (OPEN SHORTEST PATH FIRST) Ο ΑΛΓΟΡΙΘΜΟΣ ΣΥΝΤΟΜΟΤΕΡΟΥ ΔΡΟΜΟΥ ΤΟΥ DIJKSTRA Το πρόβλημα: Έστω ένα σύνολο κόμβων, κάποιοι από τους οποίους είναι μεταξύ τους συνδεδεμένοι με θετικά ‘μήκη’ συνδέσεων. Θέλουμε να βρούμε τη συντομότερη απόσταση από τον κόμβο 1 προς οποιονδήποτε άλλον κόμβο (όπου η συντομότερη απόσταση είναι εκείνη που ελαχιστοποιεί το άθροισμα των μηκών κατά μήκος κάποιου δρόμου, που ονομάζεται ‘συντομότερος δρόμος’). Βασική ιδέα: Αρχικά βρίσκουμε τον κόμβο Κ που συνδέεται με τον 1 με το μικρότερο μήκος σύνδεσης. Στη συνέχεια, ο συντομότερος δρόμος θα περιλαμβάνει είτε έναν άλλο κόμβο Κ’ που συνδέεται με τον 1 είτε έναν άλλον κόμβο Κ’’ που συνδέεται με το Κ’, αναλόγως του ποιο από τα δυο είναι μικρότερο: d(K,K’) ή d(K,K’) + d(K’,K’’). Κοκ.
Αλγόριθμος Dijkstra Συμβολίζουμε με dij το μήκος της σύνδεσης των i και j (όπου υποθέτουμε ότι dij = , αν οι i και j δεν συνδέονται). Αρχικά: P = {1}, D1 = 0, Dj = dj1, j 1. Βήμα 1: Βρείτε i P τέτοιο ώστε Di = minjPDj. Θέσατε P := P {i}. Αν Ρ = S, τερματίστε. Βήμα 2: Για κάθε j P, θέσατε Dj = min[Dj, dji + Di]. Πάτε στο βήμα 1.
Παράδειγμα Εφαρμογής Αλγόριθμου Dijkstra B 6 C 2 8 1 A 3 1 1 2 F 2 6 D E 2 8 Βήμα A B C D E F Προστιθέμενος Κόμβος Προστιθέμενο Τόξο 1 2 6 Β AB 8 5 BD 3 7 13 DC 4 15 CE 10 EF
ΠΡΩΤΟΚΟΛΛΟ ΠΛΗΡΟΦΟΡΙΑΣ ΔΡΟΜΟΛΟΓΗΣΗΣ RIP (ROUTING INFORMATION PROTOCOL) Ο ΑΛΓΟΡΙΘΜΟΣ BELLMAN-FORD Το Πρόβλημα: Υποθέτουμε ότι ο κόμβος 1 είναι ο κόμβος ‘προορισμού’ και θέλουμε να βρούμε το συντομότερο δρόμο από κάθε κόμβο προς τον 1. Ο Αλγόριθμος: Πάλι υποθέτουμε ότι dij = , αν οι κόμβοι i και j δεν συνδέονται. Έστω Dih η συντομότερη απόσταση από τον 1 του κόμβου i, που περνά από h τόξα του γράφου (D1h = 0, για κάθε h). Παράγουμε την ακολουθία Dih ως εξής: Dih+1 = minj[dij + Dih], με αρχική συνθήκη Di0 = , για κάθε i 1. Τότε η ακολουθία Dih δίνει τις συντομότερες αποστάσεις από τον κόμβο i μέχρι τον κόμβο 1.
Παράδειγμα Εφαρμογής Αλγόριθμου Bellman-Ford 6 C 2 8 1 A 3 1 1 2 F 2 6 D E 2 8 Βήμα F E C D B A Προστιθέμενος Κόμβος Προστιθέμενο Τόξο 1 2 8 FE 3 10 14 EC 5 9 16 CD 4 15 DB BA
Ο ΑΛΓΟΡΙΘΜΟΣ ΤΟΥ ΕΛΑΧΙΣΤΟΥ ΕΚΤΕΤΑΜΕΝΟΥ ΔΕΝΔΡΟΥ (MINIMUM SPANNING TREE) ΤΟΥ PRIM Ένα εκτεταμένο δένδρο σ’ ένα γράφο είναι ένας υπογράφος που επεκτείνεται σ’ όλους τους κόμβους και δεν έχει κύκλους (loops). Το ελάχιστο εκτεταμένο δένδρο είναι το εκτεταμένο δένδρο με το ελάχιστο άθροισμα των μηκών των συνδέσεων. Παράδειγμα:
ΤΟ ΠΡΩΤΟΚΟΛΛΟ ΤΩΝ ΟΡΙΑΚΩΝ ΠΥΛΩΝ BGP Το Πρωτόκολλο των Οριακών Πυλών BGP (Border Gateway Protocol) ρυθμίζει την δρομολόγηση (routing) μεταξύ αυτονόμων συστημάτων (ASs). Αντίθετα με το OSPF, BGP είναι ένα κατανεμημένο πρωτόκολλο. Επιπλέον, το BGP χρησιμοποιεί έναν αλγόριθμο προτιμούμενου δρόμου, ενώ ο αλγόριθμος του OSPF είναι μετρικός.
Παράδειγμα Λειτουργίας του BGP Έστω το αυτόνομο σύστημα (AS) X, συνδεδεμένο με το AS Y και με το AS U. Υποθέτουμε ότι το Χ θέλει να στείλει ένα μήνυμα στον host D που επικοινωνεί εμμέσως και με το Υ και με το U. Το AS Y κάνει γνωστό στο X τον δρόμο που το Y προτιμά για να φθάσει το D: [Y,X,U;17], όπου (Y,X,U) είναι ο προτιμούμενος από το Υ δρόμος και 17 η εκτιμούμενη απόσταση του δρόμου. Παράλληλα, το AS U κάνει γνωστό στο X τον προτιμούμενο δρόμο προς το D: [U;18]. Αν το Χ επιλέξει τον δρόμο μέσω του Υ (ενδεχομένως επειδή έχει μικρότερη απόσταση), τα πακέτα θα κάνουν κύκλους (loops) μεταξύ του Υ και του Χ και ποτέ δεν θα φθάσουν στο D. Επομένως, το Χ οφείλει να επιλέξει τον δρόμο μέσω του U, ο οποίος όμως θα είναι της μορφής [X,U;23], όπου η απόσταση 23 προήλθε αυξάνοντας την απόσταση 18 του U από το D κατά 5, που είναι η απόσταση του Χ από το U.
ΤΟ ΣΤΡΩΜΑ ΜΕΤΑΦΟΡΑΣ ΤΟΥ INTERNET Το στρώμα μεταφοράς εποπτεύει τα εξής πεδία της διακίνησης των πακέτων: τον έλεγχο λαθών τον έλεγχο της ροής και την αποφυγή συμφορήσεων Λάθη: λόγω χαλασμένων πακέτων λόγω απόρριψης πακέτων, όταν έχει γεμίσει η προσωρινή αποθήκη (buffer) του router Έλεγχος ροής είναι η διαδικασία που ενεργοποιείται στον πομπό για τη ρύθμιση του ρυθμού μετάδοσης έτσι ώστε να μην μπλοκαρισθεί ο δέκτης. Στο TCP, ο δέκτης γνωστοποιεί στον πομπό τον αριθμό των πακέτων που μπορεί να δεχθεί. Έλεγχος συμφόρησης είναι ο μηχανισμός που ενεργοποιεί ο πομπός για να περιορίσει τη συμφόρηση στους επόμενους κόμβους του δικτύου. Στο TCP, ο πομπός υποψιάζεται πιθανές συμφορήσεις από τις καθυστερήσεις επιβεβαιώσεων και ανάλογα ρυθμίζει το παράθυρο των αναμεταδόσεων.
Η ΑΝΑΜΕΤΑΔΟΣΗ ΠΑΚΕΤΩΝ Αυτή γίνεται με το Πρωτόκολλο Επιλεκτικής Επανάληψης SRP (Selective Repeat Protocol), το οποίο επιχειρεί την αναμετάδοση των πακέτων που απέτυχαν να φθάσουν στον προορισμό τους. Όταν ο πομπός στέλνει ένα πακέτο, ξεκινά έναν χρονομέτρη. Ο δέκτης στέλνει μια επιβεβαίωση για κάθε σωστό πακέτο που δέχεται. Ο πομπός υποθέτει ότι ένα πακέτο απέτυχε να πάει στον προορισμό του όταν η επιβεβαίωση δεν έρχεται εντός κάποιου χρονικού διαστήματος (που λέγεται timeout). Τότε ο πομπός ξαναστέλνει το πακέτο.
Με περισσότερες λεπτομέρειες: Ο πομπός χρησιμοποιεί ένα παράθυρο μεγέθους W για να στέλνει πακέτα, δηλαδή, στέλνει διαδοχικά τα πακέτα 1, 2, ..., W και μετά περιμένει για την επιβεβαίωση ότι παραδόθηκε το πακέτο 1 πριν στείλει το πακέτο W + 1. Ο δέκτης, όταν παίρνει ένα σωστό πακέτο, αμέσως στέλνει στον πομπό μια επιβεβαίωση με αύξοντα αριθμό ίσο προς Κ + 1 αν έχει πάρει τα πακέτα 1, 2, ..., Κ αλλά όχι ακόμη το Κ + 1. Έτσι, αν ο δέκτης έχει πάρει τα πακέτα 1, 2, ..., Κ, Κ + 2, Κ + 3, Κ + 4, τότε στέλνει τις επιβεβαιώσεις με αριθμούς 2, 3, ..., Κ + 1, Κ + 1, Κ + 1, Κ + 1. Σε μια τέτοια περίπτωση λέμε ότι οι τελευταίες τρεις επιβεβαιώσεις είναι διπλότυπες επιβεβαιώσεις (duplicate acknowledgments). Στη συνέχεια, ο δέκτης προωθεί τα πακέτα 1, 2, ..., Κ, που πήρε σωστά (στον επόμενο κόμβο για να φθάσουν στον τελικό προορισμό τους), κι αποθηκεύει τα πακέτα Κ + 2, Κ + 3, Κ + 4, για να μπορέσει να τα προωθήσει αργότερα αφού πρώτα παραλάβει το καθυστερημένο πακέτο Κ + 1. Όταν ο πομπός δει τρεις διπλότυπες επιβεβαιώσεις, υποψιάζεται ότι το πακέτο Κ + 1 έχει χαθεί και το ξαναστέλνει αμέσως, χωρίς να περιμένει τον χρόνο timeout του πακέτου Κ + 1 από την πρώτη αποστολή του. Ο μηχανισμός αυτός ονομάζεται ταχεία αναμετάδοση (fast retransmit).
Η ΛΕΙΤΟΥΡΓΙΑ ΤΟΥ TCP Το TCP πραγματοποιεί μια πλήρως αμφίδρομη (full-duplex) επικοινωνία μεταξύ των δυο ακραίων υπολογιστών. Οι συνδέσεις του TCP γίνονται από συγκεκριμένες πόρτες κι ένας host μπορεί ταυτόχρονα να ανοίξει περισσότερες από μια τέτοιες συνδέσεις σε διαφορετικές πόρτες.
Με άλλα λόγια, το TCP ανοίγει δυο συνδέσεις, μια από τον client στον server και μια από τον server στον client. Τα τυπικά βήματα στις συνδέσεις αυτές είναι τα εξής: Ο client ξεκινά μια αμφίδρομη σύνδεση με τον server και ζητά κάποια δεδομένα Ο server στέλνει τα δεδομένα στον client Ο server κλείνει τη σύνδεση με τον client Ο client κλείνει τη σύνδεση με τον server Όταν ο server στέλνει τα δεδομένα στον client, ο server στέλνει μια συνεχή ροή (stream) από bytes στο TCP. Τα bytes αυτά φυλάσσονται σε μια προσωρινή αποθήκη (buffer) και το TCP βάζει μια ομάδα από αυτά τα bytes σ’ ένα τμήμα (segment) που το δίνει στο IP όταν η αποθήκη γεμίσει. Το μέγεθος της αποθήκης ονομάζεται Μέγιστο Μέγεθος Τμήματος MSS (Maximum Segment Size). Η προκαθορισμένη (default) τιμή του MSS είναι 536 bytes για τις περισσότερες συνδέσεις (για το Ethernet είναι 1460 bytes). Ο πομπός μπορεί να εκδώσει την εντολή PUSH στο TCP, για να αποφύγει την αναμονή μέχρις ότου γεμίσει το buffer, οπότε το TCP βγάζει αμέσως όλα τα bytes από το buffer και τα βάζει σ’ ένα τμήμα που το δίνει στο ΙΡ για τα περαιτέρω.
Μια τυπική ακολουθία μεταβιβάσεων του TCP: Βασικές εντολές: SYN = έναρξη σύνδεσης, SYN.ack = επιβεβαίωση έναρξης σύνδεσης, FIN = τερματισμός σύνδεσης, FIN.ack = επιβεβαίωση τερματισμού σύνδεσης. Μορφή επικεφαλίδας TCP: [S.port | D.port | Seq | Ack | FLAG | Window | CKS | URG] S.port, D.port = πόρτες πομπού (S) και δέκτη (D), αντιστοίχως. Seq, Ack = οι αύξοντες αριθμοί των πακέτων και των επιβεβαιώσεων, αντιστοίχως. Window = μέγεθος παράθυρου (πλήθους πακέτων) που ο δέκτης δέχεται. CKS = το άθροισμα ελέγχου (checksum) του πομπού για όλο το πακέτο TCP (μαζί με data) URG = δείκτης του τελευταίου επείγοντος byte στη ροή δεδομένων του πομπού. FLAG = δήλωση της κατάστασης σύνδεσης, όπως: FLAG=SYN αρχή σύνδεσης, FLAG=SYN.ack επιβεβαίωση αρχής σύνδεσης, FLAG=Urgent επείγον πακέτο, FLAG=PUSH χωρίς αποθήκευση στον buffer, FLAG=FIN τερματισμός σύνδεσης, FLAG=FIN.ack επιβεβαίωση τερματισμού σύνδεσης, FLAG=reset εξαναγκασμός τερματισμού σύνδεσης για την επαναφορά στις αρχικές ρυθμίσεις (reset).