Πρωτόκολλο Ελέγχου Μετάδοσης/Πρωτόκολλο Διαδικτύου

Το Πρωτόκολλο Ελέγχου Μετάδοσης/Πρωτόκολλο Διαδικτύου (Αγγλικά: Transmission Control Protocol/Internet Protocol (TCP/IP),  είναι μια συλλογή πρωτοκόλλων επικοινωνίας στα οποία βασίζεται το Διαδίκτυο αλλά και μεγάλο ποσοστό των εμπορικών δικτύων. Η ονομασία TCP/IP προέρχεται από τις συντομογραφίες των δυο κυριότερων πρωτοκόλλων της συλλογής: το Πρωτόκολλο Ελέγχου Μετάδοσης (Αγγλ. Transmission Control Protocol) και το Πρωτόκολλο Διαδικτύου (Αγγλ. Internet Protocol).

Αυτή η συλλογή πρωτοκόλλων είναι οργανωμένη σε επίπεδα (Αγγλικά: layers). Το καθένα τους απαντά σε συγκεκριμένα προβλήματα μεταφοράς δεδομένων και παρέχει μια καθορισμένη υπηρεσία στα υψηλότερα επίπεδα. Τα ανώτερα επίπεδα είναι πιο κοντά στη λογική του χρήστη και εξετάζουν πιο αφηρημένα δεδομένα. Στηρίζονται στα πρωτόκολλα των χαμηλοτέρων επιπέδων για την μετάφραση δεδομένων σε μορφές οι οποίες είναι δυνατόν να διαβιβαστούν με φυσικά μέσα.

Το μοντέλο OSI, το οποίο παραμένει έως σήμερα μόνο θεωρητικό, προτείνει την κατάταξη των πρωτοκόλλων δικτύων σε έναν οργανωμένο σωρό επτά επιπέδων. Συγκρίσεις ανάμεσα στο μοντέλο OSI και τo TCP/IP δείχνουν τη σημασία των πρωτοκόλλων που περιέχονται στην συλλογή IP, από την άλλη πλευρά όμως μπορεί να προκληθεί σύγχυση, καθώς το TCP/IP αποτελείται από μόνο τέσσερα επίπεδα.

Επίπεδα της συλλογής TCP/IP 

Τα πρωτόκολλα Διαδικτύου κάνουν χρήση της ενθυλάκωσης (encapsulation) για να παρέχουν γενικά πρωτόκολλα και υπηρεσίες. Ένα πρωτόκολλο υψηλού στρώματος χρησιμοποιεί τα πρωτόκολλα των κατωτέρων για να λειτουργήσει.

Το παρακάτω σχεδιάγραμμα τοποθετεί τα διάφορα πρωτόκολλα του TCP/IP με βάση τα κριτήρια του μοντέλου OSI:

Τα τρία ανώτερα επίπεδα του μοντέλου OSI (Εφαρμογής, Παρουσίασης και Συνεδρίας) αποτελούν ένα ενιαίο στρώμα στο TCP/IP, το επίπεδο Εφαρμογής. Τα χαρακτηριστικά του στρώματος Συνεδρίας αναλαμβάνονται από τις ίδιες εφαρμογές ή απλώς αγνοούνται. Ένα απλουστευμένο σχεδιάγραμμα της στοίβας του μοντέλου TCP/IP είναι το εξής:

Αυτά τα 4 επίπεδα, συναποτελούν το Μοντέλο Διαστρωμάτωσης (ή Αναφοράς) του Internet.

Ανάλυση των επιπέδων

Εφαρμογής 

Το στρώμα εφαρμογής χρησιμοποιείται από την πλειοψηφία των δικτυομένων προγραμμάτων. Το πρόγραμμα παραδίδει τα δεδομένα σε μια μορφή που ορίζει το ίδιο.

Εφ'όσον το TCP/IP δεν παρέχει στρώματα μεταξύ των στρωμάτων εφαρμογής και μεταφοράς, όλες οι λειτουργίες παρουσίασης και συνεδρίας (βλέπε μοντέλο OSI) πρέπει να υλοποιηθούν σ'αυτό το επίπεδο. Αυτή η διαδικασία διευκολύνεται με τη χρήση βιβλιοθηκών.

Μεταφοράς 
Το στρώμα μεταφοράς είναι υπεύθυνο για την μεταφορά μηνυμάτων, ανεξαρτήτως του υποκείμενου δικτύου, με έλεγχο σφαλμάτων (error control), κατάτμηση (fragmentation) και ρύθμιση ροής (flow control). Η μετάδοση μηνυμάτων μεταξύ δυο οντοτήτων μπορεί να κατηγοριοποιηθεί ως εξής:
 connection-oriented, π.χ. TCP
 connectionless, π.χ. UDP
Η λειτουργία του στρώματος αυτού μπορεί να συγκριθεί με αυτή οποιουδήποτε μηχανισμού/μέσου μεταφοράς, π.χ. ένα όχημα που πρέπει να εξασφαλίζει την πλήρη και ασφαλή διακίνηση του φορτίου του.
Το στρώμα μεταφοράς παρέχει αυτή την υπηρεσία σύνδεσης εφαρμογών μεταξύ τους, κάνοντας χρήση θυρών (ports). Καθώς το IP προσφέρει μόνο παράδοση όσο το δυνατόν καλύτερα (best effort delivery), το στρώμα μεταφοράς είναι το πρώτο επίπεδο όπου λαμβάνεται υπόψιν το θέμα της αξιοπιστίας.

Παραδείγματος χάρη, σε μια προσπάθεια αξιόπιστης μετακίνησης δεδομένων, το TCP που είναι ένα connection-oriented πρωτόκολλο, έχει τα εξής χαρακτηριστικά:
 τα δεδομένα έρχονται στην ίδια σειρά με την οποία στάλθηκαν 
 ελάχιστος έλεγχος σφαλμάτων
 ανεπιθύμητα αντίγραφα απορρίπτονται
 χαμένα/απορριφθέντα πακέτα ξαναστέλνονται
 έλεγχος κυκλοφοριακής συμφόρησης (congestion control)

Τα πρωτόκολλα δυναμικής δρομολόγησης (dynamic routing), που κανονικά θα έπρεπε να βρίσκονται σε αυτό το στρώμα του TCP/IP (αφού λειτουργούν πάνω από το IP) αντιμετωπίζονται συχνά ως τμήματα του επίπεδου δικτύου (π.χ. το OSPF).

Το νέο SCTP είναι επίσης ένας "αξιόπιστος", connection-oriented μηχανισμός μεταφοράς. Είναι stream-oriented, όχι byte-oriented όπως το TCP, και προσφέρει την δυνατότητα multiplexing πολλών ρευμάτων (stream) σε μια μόνο σύνδεση. Προτείνει υποστήριξη multi-homing, την δυνατότητα δηλαδή για μια οντότητα να μπορέσει, στα πλαίσια μιας συγκεκριμένης σύνδεσης, να χρησιμοποιεί πολλαπλές (εφόσον υπάρχουν) διευθύνσεις IP που αντιπροσωπεύουν πολλαπλές interfaces (διασυνδετικές διατάξεις), έτσι ώστε αν κάποια παρουσιάσει βλάβη, να μη χαθεί η σύνδεση.

Το UDP είναι ένα connectionless πρωτόκολλο διαγραμμάτων δεδομένων (datagrams). Όπως και το IP, είναι ένα best effort ή "αναξιόπιστο" πρωτόκολλο: ο έλεγχος σφαλμάτων είναι αδύναμος (απλό checksum). Χρησιμοποιείται κυρίως σε εφαρμογές streaming μέσων (ήχος, βίντεο, κλπ.) όπου η έγκαιρη άφιξη των δεδομένων είναι πιο σημαντική από την ακεραιότητα τους. Ο χρόνος που κερδίζεται σε σχέση με τα connection-oriented πρωτόκολλα, που πρέπει να καθιερώσουν μια αξιόπιστη σύνδεση, το καθιστά ιδανικό για απλές ερώτημα/απάντηση εφαρμογές (π.χ. DNS).

Το TCP και το UDP εκμεταλλεύονται από εφαρμογές που διακρίνονται (στο επίπεδο του δικτύου) από την θύρα TCP ή UDP τους. Ορισμένοι αριθμοί θυρών είναι κλειστοί και αναφέρονται σε πολύ συγκεκριμένες εφαρμογές (βλ. well known port numbers).

Το RTP είναι ένα πρωτόκολλο διαγραμμάτων δεδομένων σχεδιασμένο για στοιχεία πραγματικού χρόνου (real-time) όπως τα streaming audio και video. Αν και παρουσιάζεται στο στρώμα μεταφοράς (αντί για το επίπεδο συνεδρίας), βασίζεται στο UDP για τη λειτουργία του.

Δικτύου 
Ο σκοπός του στρώματος δικτύου είχε αρχικά καθοριστεί ως η μεταφορά πακέτων μέσω ενός ενιαίου δικτύου.

Με την εμφάνιση πιο σύνθετων μορφών δικτύων, προστέθηκαν επιπλέον χαρακτηριστικά στο στρώμα αυτό, έτσι ώστε ο ρόλος του να είναι πια η διακίνηση δεδομένων από το δίκτυο-αποστολέα στο δίκτυο-παραλήπτη. Αυτό προϋποθέτει συνήθως τη δρομολόγηση πακέτων διαμέσου ενός δικτύου δικτύων (internetwork) ή διαδικτύου (με μικρά γράμματα).

Στην σουίτα πρωτοκόλλων Διαδικτύου, το IP μεταφέρει τα πακέτα δεδομένων από τον αποστολέα στον παραλήπτη. Το IP μπορεί να εξυπηρετήσει διάφορα πρωτόκολλα ανωτέρων επιπέδων (upper layer protocols) ˙ το καθένα τους προσδιορίζεται με έναν αποκλειστικό αριθμό πρωτοκόλλου: π.χ. το ICMP και το IGMP έχουν τους αριθμούς 1 και 2 αντίστοιχα.

Μερικά πρωτόκολλα που στηρίζονται στο IP, π.χ. το ICMP (χρησιμοποιείται για την διάδοση διαγνωστικών πληροφοριών σχετικά με την μεταφορά πακέτων μέσω IP) παρουσιάζονται πάνω από το IP αλλά παρέχουν υπηρεσίες επιπέδου διαδικτύου, απεικονίζοντας έτσι την ασυμβατότητα μεταξύ του Διαδικτύου, των πρωτοκόλλων Διαδικτύου και του μοντέλου OSI. Όλα τα πρωτόκολλα δρομολόγησης (π.χ. BGP, OSPF, RIP, κλπ.) ανήκουν επίσης στο στρώμα δικτύου, αν και θα μπορούσαν να τοποθετηθούν σε ανώτερα επίπεδα.

Διασύνδεσης Δικτύου 
Το στρώμα αυτό, ρόλος του οποίου είναι η διακίνηση πακέτων του επιπέδου δικτύου μεταξύ δυο οντοτήτων, δεν είναι στην ακρίβεια μέρος της σουίτας πρωτοκόλλων Διαδικτύου, διότι το IP λειτουργεί με διάφορα στρώματα συνδέσμου. Η διαδικασία διαβίβασης (αντ. λήψης) πακέτων σε (αντ. από) ένα συγκεκριμένο επίπεδο συνδέσμου μπορεί να ελέγχεται είτε από τον οδηγό του interface, είτε το firmware ή σύνολο εξειδικευμένων κυκλωμάτων (chipsets), είτε τέλος από ένα συνδυασμό των προ-αναφερθέντων. Αυτά θα εκτελέσουν τις λειτουργίες σύνδεσης δεδομένων (data link), όπως π.χ. την πρόσθεση επικεφαλίδας (packet header) πριν την αποστολή, την ίδια τη διαβίβαση του πλαισίου (frame) με τη χρήση ενός φυσικού μέσου.

Για συνδέσεις μέσω μόντεμ (σε γραμμή τηλεφώνου), τα πακέτα IP μεταφέρονται συνήθως χρησιμοποιόντας το PPP. Σε ευρυζωνικές συνδέσεις (π.χ. ADSL) συναντάμε το PPPoE. Σε τοπικά δίκτυα, τα πρωτόκολλα Ethernet ή IEEE 802.11 (για ενσύρματα ή ασύρματα δίκτυα αντίστοιχα) είναι πιο κοινά. Για δίκτυα ευρείας περιοχής (WAN) χρησιμοποιούνται συχνά το PPP πάνω σε γραμμές T-carrier ή E-carrier, το Frame relay, το ATM ή το Packet over SONET/SDH (POS).

Το στρώμα συνδέσμου είναι επίσης το επίπεδο όπου τα πακέτα μπορούν να αναχαιτιστούν για να σταλθούν σ'ένα Εικονικό Ιδιωτικό Δίκτυο (Virtual Private Network, VPN). Σ'αυτήν την περίπτωση, τα δεδομένα του επιπέδου αυτού αντιμετωπίζονται ως δεδομένα εφαρμογής, και "ξανακατεβαίνουν" τη στοίβα πρωτοκόλλων Διαδικτύου για να σταλθούν. Στη λαμβάνουσα πλευρά, τα δεδομένα ανεβαίνουν δυο φορές τη στοίβα (μια για το VPN και μια δεύτερη για τη δρομολόγηση).

Το φυσικό επίπεδο, που αποτελείται από τα φυσικά στοιχεία του δικτύου (π.χ. hubs, repeaters, καλώδια δικτύου, οπτικές ίνες, ομοαξονικά καλώδια, κάρτες δικτύων) και τις προδιαγραφές χαμηλού επιπέδου των σημάτων (τάση, συχνότητα, κλπ.), θεωρείται συχνά ως μέρος του στρώματος συνδέσμου.

Υλοποιήσεις 
Η πλειονότητα των λειτουργικών συστημάτων (Unix, Linux, οι διάφορες παραλλαγές BSD, Mac OS X, Microsoft Windows και οι εκδόσεις Windows Server) περιλαμβάνουν την στοίβα TCP/IP εξ ορισμού ˙ η αναζήτηση υλοποιήσεων αφορά μόνο ένα μικρό ποσοστό χρηστών.

Το Lightweight TCP/IP, είναι μια υλοποίηση ανοιχτού κώδικα (open source) ειδικά σχεδιασμένη για ενσωματωμένα συστήματα (embedded systems), ενώ το KA9Q NOS είναι διαμορφωμένο για ερασιτεχνικά ραδιοφωνικά συστήματα πακέτων (packet radio systems) ή υπολογιστών συνδεδεμένων μέσω σειριακών (serial) γραμμών.

Σημειώσεις

Βιβλιογραφία 
 Andrew S. Tanenbaum, Computer Networks, Fourth edition, ISBN 0-13-066102-3
 James F. Kurose, Keith W. Ross, Computer Networking: A Top-Down Approach Featuring the Internet (3rd Edition), ISBN 0-321-22735-2
 W. Richard Stevens, The Protocols (TCP/IP Illustrated, Volume 1), ISBN 0-201-63346-9

Εξωτερικοί σύνδεσμοι 
 Βρείτε την τοποθεσία και άλλες χρήσιμες πληροφορίες οποιασδήποτε διεύθυνσης IP v4 - στα ελληνικά  
 Βρείτε την τοποθεσία μίας IP διεύθυνσης. Πολύ χρήσιμο στα μηνύματα ηλεκτρονικού ταχυδρομείου και στο chatting
 Το πρωτόκολλο επικοινωνίας TCP

Πρωτόκολλα του ίντερνετ
Αρχιτεκτονική δικτύων
Ιστορία του Διαδικτύου