TCP/IP

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Μετάβαση σε: πλοήγηση, αναζήτηση

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

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

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

Ιστορικό[Επεξεργασία | επεξεργασία κώδικα]

Επίπεδα της Σουίτας TCP/IP[Επεξεργασία | επεξεργασία κώδικα]

Παράδειγμα ενθυλάκωσης δεδομένων σ´ένα διάγραμμα UDP μέσα σε πακέτο IP

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

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

7 Εφαρμογής (Application) π.χ. HTTP, SMTP, SNMP, FTP, Telnet, NFS
6 Παρουσίασης (Presentation) π.χ. XDR, ASN.1, SMB, AFP
5 Συνεδρίας (Session) π.χ. ISO 8327 / CCITT X.225, RPC, Netbios, ASP
4 Μεταφοράς (Transport) π.χ. TCP, UDP, RTP, SPX, ATP
3 Δικτύου (Network) π.χ. IP (IPv4 ή IPv6), ICMP, IGMP, X.25, CLNP, ARP, OSPF, RIP, IPX, DDP
2 Συνδέσμου (Link) π.χ. Ethernet, Token Ring, PPP, HDLC, Frame relay, ATM
1 Φυσικό (Physical) π.χ. Ραδιοφωνικό σήμα, Λέϊζερ, Οπτική Ίνα

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

4 Εφαρμογής π.χ. HTTP, FTP, DNS
(Πρωτόκολλα δρομολόγησης, όπως το RIP, που βασίζονται στο πρωτόκολλο UDP μπορούν επίσης να καταχωρηθούν στο στρώμα Δικτύου)
3 Μεταφοράς π.χ. TCP, UDP, RTP
(Πρωτόκολλα δρομολόγησης, όπως το OSPF, που λειτουργούν πάνω από το IP, μπορούν επίσης να καταχωρηθούν στο στρώμα Δικτύου)
2 Δικτύου Για το TCP/IP, χρησιμοποιείται μόνο το IP
(Τα πρωτόκολλα ICMP και IGMP, παρ'όλο που βασίζονται πάνω στο IP για την λειτουργία τους, καταχωρούνται στο στρώμα Δικτύου. Το ARP αποτελεί μια από τις ολιγάριθμες εξαιρέσεις, εφ'όσον είναι ανεξάρτητο του IP)
1 Συνδέσμου π.χ. Ethernet, Token Ring, κλπ.

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

Ανάλυση των επιπέδων[Επεξεργασία | επεξεργασία κώδικα]

Eφαρμογής[Επεξεργασία | επεξεργασία κώδικα]

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

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

Mεταφοράς[Επεξεργασία | επεξεργασία κώδικα]

Το στρώμα μεταφοράς είναι υπεύθυνο για την μεταφορά μηνυμάτων, ανεξαρτήτως του υποκείμενου δικτύου, με έλεγχο σφαλμάτων (error control), κατάτμηση (fragmentation) και ρύθμιση ροής (flow control). Η μετάδοση μηνυμάτων μεταξύ δυο οντοτήτων μπορεί να κατηγοριοποιηθεί ως εξής:

  1. connection-oriented, π.χ. TCP
  2. connectionless, π.χ. UDP

Η λειτουργία του στρώματος αυτού μπορεί να συγκριθεί με αυτή οποιουδήποτε μηχανισμού/μέσου μεταφοράς, π.χ. ένα όχημα που πρέπει να εξασφαλίζει την πλήρη και ασφαλή διακίνηση του φορτίου του. Το στρώμα μεταφοράς παρέχει αυτή την υπηρεσία σύνδεσης εφαρμογών μεταξύ τους, κάνοντας χρήση θυρών (ports). Καθώς το IP προσφέρει μόνο παράδοση όσο το δυνατόν καλύτερα (best effort delivery), το στρώμα μεταφοράς είναι το πρώτο επίπεδο όπου λαμβάνεται υπόψιν το θέμα της αξιοπιστίας.

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

  • τα δεδομένα έρχονται στην ίδια σειρά με την οποία στάλθηκαν [2]
  • ελάχιστος έλεγχος σφαλμάτων
  • ανεπιθύμητα αντίγραφα απορρίπτονται
  • χαμένα/απορριφθέντα πακέτα ξαναστέλνονται
  • έλεγχος κυκλοφοριακής συμφόρησης (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) γραμμών.

Σημειώσεις[Επεξεργασία | επεξεργασία κώδικα]

  1. το RFC 1122 που ορίζει την σουίτα πρωτοκόλλων Διαδικτύου δεν είναι σαφές ως προς τον αριθμό στρωμάτων και οι απόψεις διαφέρουν στο αν πρέπει να παρουσιαστεί το φυσικό επίπεδο ή οχι
  2. τα δεδομένα χωρίζονται σε πακέτα που μπορούν να δρομολογηθούν από δυο διαφορετικά μονοπάτια στο δίκτυο, και να φτάσουν στον παραλήπτη σε διαφορετική σειρά. Το TCP τα ξανατοποθετεί σωστά και τα παραδίνει στο υψηλότερο στρώμα

Βιβλιογραφία[Επεξεργασία | επεξεργασία κώδικα]

Εξωτερικοί σύνδεσμοι[Επεξεργασία | επεξεργασία κώδικα]