Τι σημαίνει ο αριθμός των συνδέσεων tcp udp; Θεμελιώδεις διαφορές μεταξύ TCP και UDP

Παιδικά προϊόντα 23.04.2019
Επισκόπηση προγράμματος Η έκδοση υπολογιστή του Microsoft Excel Viewer θα επιτρέψει...

Chercher Παιδικά προϊόντα, δίπλα στην ιεραρχία στο IP, χρησιμοποιούνται για τη μεταφορά δεδομένων μεταξύ διαδικασιών εφαρμογής που υλοποιούνται σε κόμβους δικτύου. Ένα πακέτο δεδομένων που λαμβάνεται από τον έναν υπολογιστή στον άλλο μέσω του Διαδικτύου πρέπει να μεταφερθεί σε μια διαδικασία χειριστή και ακριβώς για συγκεκριμένο σκοπό. Το επίπεδο μεταφοράς αναλαμβάνει την ευθύνη για αυτό. Υπάρχουν δύο κύρια πρωτόκολλα σε αυτό το επίπεδο - TCP και UDP.

Ορισμός

TCPπρωτόκολλο μεταφοράςμετάδοση δεδομένων σε δίκτυα TCP/IP, η οποία προκαθορίζει μια σύνδεση με το δίκτυο.

UDP- ένα πρωτόκολλο μεταφοράς που μεταδίδει μηνύματα datagram χωρίς την ανάγκη δημιουργίας σύνδεσης σε δίκτυο IP.

Σύγκριση

Η διαφορά μεταξύ των πρωτοκόλλων TCP και UDP είναι η λεγόμενη «εγγύηση παράδοσης». Το TCP απαιτεί μια απάντηση από τον πελάτη στον οποίο παραδόθηκε το πακέτο δεδομένων, επιβεβαίωση παράδοσης και για αυτό χρειάζεται μια προκαθορισμένη σύνδεση. Επίσης, το πρωτόκολλο TCP θεωρείται αξιόπιστο, ενώ το UDP έχει λάβει ακόμη και το όνομα «αναξιόπιστο πρωτόκολλο datagram». Το TCP εξαλείφει την απώλεια δεδομένων, την αντιγραφή και τη μίξη πακέτων και τις καθυστερήσεις. Το UDP επιτρέπει όλα αυτά και δεν απαιτεί σύνδεση για να λειτουργήσει. Οι διαδικασίες στις οποίες μεταδίδονται δεδομένα μέσω UDP πρέπει να ανταποκρίνονται σε αυτό που λαμβάνουν, ακόμη και με απώλειες. Το TCP ελέγχει τη συμφόρηση της σύνδεσης, το UDP δεν ελέγχει τίποτα εκτός από την ακεραιότητα των ληφθέντων datagrams.

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

Ιστοσελίδα συμπερασμάτων

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

Πρωτόκολλο User Datagram (UDP)Το (User Datagram Protocol) είναι ένα τυπικό πρωτόκολλο TCP/IP που ορίζεται στο RFC 768, "User Datagram Protocol (UDP)". Το UDP χρησιμοποιείται αντί για TCP για τη γρήγορη και αναξιόπιστη μεταφορά δεδομένων μεταξύ κεντρικών υπολογιστών TCP/IP.

Πρωτόκολλο UDPπαρέχει υπηρεσία χωρίς σύνδεση, επομένως το UDP δεν εγγυάται την παράδοση ή τους ελέγχους ακολουθίας για οποιοδήποτε datagram. Ένας κεντρικός υπολογιστής που χρειάζεται αξιόπιστη επικοινωνία πρέπει να χρησιμοποιεί είτε το πρωτόκολλο TCP είτε ένα πρόγραμμα που θα παρακολουθεί ο ίδιος την ακολουθία των datagrams και θα επιβεβαιώνει τη λήψη κάθε πακέτου.

Οι ευαίσθητες στον χρόνο εφαρμογές χρησιμοποιούν συχνά UDP (δεδομένα βίντεο) επειδή είναι προτιμότερο να απορρίπτονται πακέτα αντί να περιμένουν καθυστερημένα πακέτα, κάτι που μπορεί να μην είναι δυνατό σε συστήματα πραγματικού χρόνου. Επίσης, η απώλεια ενός ή περισσοτέρων καρέ κατά τη μετάδοση δεδομένων βίντεο μέσω UDP δεν είναι τόσο κρίσιμη, σε αντίθεση με τη μεταφορά δυαδικών αρχείων, όπου η απώλεια ενός πακέτου μπορεί να οδηγήσει σε καταστροφή ολόκληρου του αρχείου. Ένα άλλο πλεονέκτημα του πρωτοκόλλου UDP είναι ότι το μήκος της κεφαλίδας UDP είναι 4 byte, ενώ το πρωτόκολλο TCP έχει 20 byte.

Τα μηνύματα UDP ενθυλακώνονται και μεταδίδονται σε datagrams IP.

Κεφαλίδα UDP

Το σχήμα δείχνει τα πεδία που υπάρχουν στην κεφαλίδα UDP.

  • Θύρα αποστολέα - Αυτό το πεδίο καθορίζει τον αριθμό θύρας αποστολέα. Αυτή η τιμή υποτίθεται ότι καθορίζει τη θύρα στην οποία θα σταλεί μια απάντηση εάν είναι απαραίτητο. Διαφορετικά, η τιμή θα πρέπει να είναι 0. Εάν ο κεντρικός υπολογιστής προέλευσης είναι πελάτης, τότε ο αριθμός θύρας πιθανότατα θα είναι εφήμερος. Αν η πηγή είναι διακομιστής, τότε η θύρα του θα είναι μια από τις «γνωστές».
  • Θύρα παραλήπτη - Αυτό το πεδίο είναι υποχρεωτικό και περιέχει τη θύρα παραλήπτη. Παρόμοια με τη θύρα προέλευσης, εάν ο πελάτης είναι ο κεντρικός υπολογιστής παραλήπτη, τότε ο αριθμός θύρας είναι εφήμερος, διαφορετικά (ο διακομιστής είναι ο παραλήπτης) είναι μια «γνωστή θύρα».
  • Το μήκος του datagram είναι ένα πεδίο που καθορίζει το μήκος ολόκληρου του datagram (κεφαλίδα και δεδομένα) σε byte. Ελάχιστο μήκοςίσο με το μήκος της κεφαλίδας - 8 byte. Θεωρητικά, το μέγιστο μέγεθος πεδίου είναι 65535 byte για ένα datagram UDP (8 byte για την κεφαλίδα και 65527 για τα δεδομένα). Το πραγματικό όριο για το μήκος δεδομένων κατά τη χρήση του IPv4 είναι 65507 (εκτός από τα 8 byte ανά κεφαλίδα UDP, απαιτούνται άλλα 20 byte ανά κεφαλίδα IP).
  • Άθροισμα ελέγχου - Το πεδίο άθροισμα ελέγχου χρησιμοποιείται για τον έλεγχο της κεφαλίδας και των δεδομένων για σφάλματα. Εάν το ποσό δεν παράγεται από τον πομπό, τότε το πεδίο γεμίζει με μηδενικά.

Ας δούμε τη δομή της κεφαλίδας UDPχρησιμοποιώντας τον αναλυτή δικτύου Wireshark:

Θύρες UDP

Δεδομένου ότι πολλά προγράμματα μπορούν να εκτελούνται στον ίδιο υπολογιστή, για την παράδοση ενός πακέτου UDP σε ένα συγκεκριμένο πρόγραμμα, μοναδικό αναγνωριστικόκάθε πρόγραμμα ή αριθμός θύρας.

Αριθμός θύραςείναι ένας αριθμός 16-bit υπό όρους από το 1 έως το 65535 που υποδεικνύει για ποιο πρόγραμμα προορίζεται το πακέτο.

Οι θύρες UDP παρέχουν τη δυνατότητα αποστολής και λήψης μηνυμάτων UDP. Μια θύρα UDP λειτουργεί ως μια ενιαία ουρά μηνυμάτων για τη λήψη όλων των datagrams που προορίζονται για το πρόγραμμα που καθορίζεται από τον αριθμό θύρας πρωτοκόλλου. Αυτό σημαίνει ότι τα προγράμματα UDP μπορούν να λαμβάνουν περισσότερα από ένα μηνύματα τη φορά.

Όλοι οι αριθμοί θύρας UDP που είναι μικρότεροι από 1024 είναι δεσμευμένοι και καταχωρημένοι στην Αρχή Εκχωρημένων Αριθμών Διαδικτύου (IANA).
Οι αριθμοί θύρας UDP και TCP δεν επικαλύπτονται.

Κάθε Θύρα UDPαναγνωρίζεται από έναν δεσμευμένο ή γνωστό αριθμό θύρας. ΣΕ παρακάτω πίνακαεμφανίζει μια μερική λίστα γνωστών αριθμών θύρας UDP που χρησιμοποιούνται από τυπικά προγράμματα UDP.

Το UDP είναι ένα απλό πρωτόκολλο και έχει συγκεκριμένο πεδίο εφαρμογής. Πρώτα απ 'όλα, πρόκειται για αλληλεπιδράσεις πελάτη-διακομιστή και πολυμέσα. Ωστόσο, οι περισσότερες εφαρμογές Διαδικτύου απαιτούν αξιόπιστη, συνεπή μετάδοση. Το UDP δεν πληροί αυτές τις απαιτήσεις, επομένως απαιτείται διαφορετικό πρωτόκολλο. Αυτό το πρωτόκολλο ονομάζεται TCP και είναι εργατικό άλογο Internet.

Βασικά TCP

Το Πρωτόκολλο Ελέγχου Μετάδοσης (TCP) σχεδιάστηκε ειδικά για να παρέχει μια αξιόπιστη ροή byte από άκρο σε άκρο μέσω ενός αναξιόπιστου δικτύου Διαδικτύου. Ένα διασυνδεδεμένο δίκτυο είναι διαφορετικό από ξεχωριστό δίκτυοτο γεγονός ότι τα διαφορετικά τμήματα του μπορεί να έχουν πολύ διαφορετικές τοπολογίες, διακίνησης, χρόνους καθυστέρησης, μεγέθη πακέτων και άλλες παράμετροι. Η ανάπτυξη του TCP επικεντρώθηκε στην ικανότητα του πρωτοκόλλου να προσαρμόζεται στις ιδιότητες του διαδικτύου και να είναι ανθεκτικός απέναντι σε διάφορα προβλήματα.

Το πρωτόκολλο TCP περιγράφεται στο RFC 793. Με την πάροδο του χρόνου, διάφορα λάθηκαι ανακρίβειες, και σε ορισμένα σημεία οι απαιτήσεις έχουν αλλάξει. Αναλυτική ΠεριγραφήΑυτές οι διευκρινίσεις και διορθώσεις δίνονται στο RFC 1122. Οι επεκτάσεις πρωτοκόλλου δίνονται στο RFC 1323.

Κάθε μηχάνημα που υποστηρίζει το πρωτόκολλο TCP έχει μια οντότητα μεταφοράς TCP, η οποία είναι είτε μια διαδικασία βιβλιοθήκης, μια διαδικασία χρήστη ή μέρος του πυρήνα του συστήματος. Και στις δύο περιπτώσεις, η οντότητα μεταφοράς διαχειρίζεται τις ροές TCP και τη διεπαφή με το επίπεδο IP. Η οντότητα TCP λαμβάνει ροές δεδομένων χρήστη από τοπικές διεργασίες, τα χωρίζει σε κομμάτια όχι μεγαλύτερα από 64 KB (στην πράξη, αυτός ο αριθμός είναι συνήθως 460 byte δεδομένων, γεγονός που τους επιτρέπει να τοποθετηθούν σε ένα πλαίσιο Ethernet με κεφαλίδες IP και TCP). και τα στέλνει σε ξεχωριστά datagrams IP. Όταν φθάνουν στο μηχάνημα τα datagrams IP που περιέχουν δεδομένα TCP, μεταβιβάζονται στην οντότητα TCP, η οποία ανακατασκευάζει την αρχική ροή byte. Για λόγους απλότητας, μερικές φορές θα χρησιμοποιήσουμε το "TCP" για να αναφερθούμε στην οντότητα μεταφοράς TCP (ένα κομμάτι λογισμικού) ή Πρωτόκολλο TCP(σύνολο κανόνων). Από τα συμφραζόμενα θα γίνει σαφές τι εννοείται. Για παράδειγμα, στην έκφραση "Ο χρήστης μεταδίδει δεδομένα TCP", υπονοείται φυσικά η οντότητα μεταφοράς TCP.

Το επίπεδο IP δεν εγγυάται τη σωστή παράδοση των datagrams, επομένως εναπόκειται στο TCP να παρακολουθεί τα χρονικά όρια που έχουν παρέλθει και, εάν είναι απαραίτητο, να αντιμετωπίσει αναμετάδοσηπακέτα. Μερικές φορές τα datagrams φτάνουν με λάθος σειρά. Το TCP είναι επίσης υπεύθυνο για την ανάκτηση μηνυμάτων από τέτοια datagrams. Έτσι, το TCP έχει σχεδιαστεί για να παρέχει την αξιοπιστία που επιθυμούν πολλοί χρήστες ότι η IP δεν παρέχει.

Μοντέλο υπηρεσίας TCP

Η υπηρεσία TCP βασίζεται στις λεγόμενες υποδοχές (sockets ή endpoints) που δημιουργούνται τόσο από τον αποστολέα όσο και από τον παραλήπτη. Συζητήθηκαν στην ενότητα Berkeley Sockets. Κάθε υποδοχή έχει έναν αριθμό (διεύθυνση) που αποτελείται από τη διεύθυνση IP του κεντρικού υπολογιστή και έναν αριθμό 16-bit τοπικό στον κεντρικό υπολογιστή που ονομάζεται θύρα. Μια θύρα στο TCP ονομάζεται διεύθυνση TSAP. Για πρόσβαση στην υπηρεσία TCP, πρέπει να δημιουργηθεί ρητά μια σύνδεση μεταξύ μιας υποδοχής στο μηχάνημα αποστολής και μιας υποδοχής στο μηχάνημα παραλήπτη.

Μία πρίζα μπορεί να χρησιμοποιηθεί για πολλαπλές συνδέσεις ταυτόχρονα. Με άλλα λόγια, δύο ή περισσότερες συνδέσεις μπορούν να τελειώνουν στην ίδια πρίζα. Οι συνδέσεις διακρίνονται από τα αναγνωριστικά υποδοχής και στα δύο άκρα - (socket1, socket2). Δεν χρησιμοποιούνται εικονικοί αριθμοί καναλιών ή άλλα αναγνωριστικά.

Οι αριθμοί θυρών κάτω από το 1024, που ονομάζονται δημοφιλείς θύρες, δεσμεύονται από τυπικές υπηρεσίες. Για παράδειγμα, οποιαδήποτε διαδικασία που επιθυμεί να δημιουργήσει μια σύνδεση με έναν κεντρικό υπολογιστή για να μεταφέρει ένα αρχείο χρησιμοποιώντας Πρωτόκολλο FTP, μπορεί να επικοινωνήσει με τη θύρα 21 του κεντρικού υπολογιστή προορισμού και έτσι να επικοινωνήσει με τον δαίμονα FTP του. Μια λίστα με δημοφιλή λιμάνια παρέχεται στον ιστότοπο www.iana.org.

Θα μπορούσαμε, φυσικά, να συνδέσουμε τον δαίμονα FTP στη θύρα 21 κατά την εκκίνηση, στη συνέχεια να συνδέσουμε τον δαίμονα telnet στη θύρα 23, κ.λπ. είναι αδρανείς τις περισσότερες φορές. Αντίθετα, είναι σύνηθες να χρησιμοποιείται ένας μόνο δαίμονας, που ονομάζεται inetd στο UNIX, ο οποίος επικοινωνεί με πολλές θύρες και περιμένει την πρώτη εισερχόμενη σύνδεση. Όταν συμβαίνει αυτό, το inetd δημιουργεί νέα διαδικασία, για το οποίο ένας κατάλληλος δαίμονας καλείται να επεξεργαστεί το αίτημα. Έτσι, μόνο το inetd είναι συνεχώς ενεργό, οι άλλοι καλούνται μόνο όταν υπάρχει δουλειά για αυτούς. Το Inetd έχει ένα ιδιαίτερο αρχείο ρυθμίσεων, από το οποίο μπορεί να μάθει για τον σκοπό των λιμανιών. Αυτό σημαίνει ότι ο διαχειριστής του συστήματος μπορεί να διαμορφώσει το σύστημα έτσι ώστε οι επίμονοι δαίμονες να συσχετίζονται με τις πιο πολυσύχναστες θύρες (για παράδειγμα, 80) και το inetd να συσχετίζεται με τις υπόλοιπες.

Ορισμένες δεσμευμένες θύρες

Πρωτόκολλο

Χρήση

21

FTP

Μεταφορά αρχείων

23

Telnet

Απομακρυσμένη σύνδεση

25

SMTP

E-mail

69

TFTP

Το απλούστερο πρωτόκολλο μεταφοράς αρχείων

79

Δάχτυλο

Αναζήτηση πληροφοριών χρήστη

80

HTTP

Παγκόσμιος Ιστός

110

POP-3

Απομακρυσμένη πρόσβαση στο email

119

NNTP

Ομάδες ειδήσεων

Όλες οι συνδέσεις TCP είναι full duplex και point-to-point. Full duplexσημαίνει ότι η κυκλοφορία μπορεί να ρέει προς αντίθετες κατευθύνσεις ταυτόχρονα. Μια σύνδεση από σημείο σε σημείο σημαίνει ότι έχει δύο τελικά σημεία. Η μετάδοση και η πολλαπλή μετάδοση δεν υποστηρίζονται από το TCP.

Μια σύνδεση TCP είναι μια ροή byte, όχι μια ροή μηνυμάτων. Τα όρια μεταξύ των μηνυμάτων δεν διατηρούνται. Για παράδειγμα, εάν μια διαδικασία αποστολής γράψει τέσσερα κομμάτια δεδομένων 512 byte σε μια ροή TCP, αυτά τα δεδομένα μπορεί να παραδοθούν στη διαδικασία λήψης ως τέσσερα κομμάτια 512 byte, δύο κομμάτια 1024 byte, ένα κομμάτι 2048 byte ή κάτι τέτοιο. αλλού. Δεν υπάρχει τρόπος για τον παραλήπτη να καθορίσει πώς γράφτηκαν τα δεδομένα.

Τα αρχεία σε ένα σύστημα UNIX έχουν επίσης αυτήν την ιδιότητα. Το πρόγραμμα που διαβάζει τη ράγα δεν μπορεί να καθορίσει πώς γράφτηκε αυτό το αρχείο: μπλοκ με μπλοκ, byte προς byte ή εντελώς ταυτόχρονα. Όπως και με τα αρχεία συστήματα UNIX,Τα προγράμματα TCP δεν έχουν ιδέα ούτε ενδιαφέρονται για τον σκοπό των byte. Ένα byte για αυτούς είναι απλώς ένα byte.

Μόλις το TCP λάβει δεδομένα από μια εφαρμογή, μπορεί να τα στείλει όλα ταυτόχρονα ή να τα αποθηκεύσει για να στείλει ένα μεγαλύτερο κομμάτι δεδομένων ταυτόχρονα, όπως επιλέγει. Ωστόσο, μερικές φορές μια εφαρμογή χρειάζεται δεδομένα για άμεση αποστολή. Ας πούμε, για παράδειγμα, ότι ένας χρήστης συνδέεται σε ένα απομακρυσμένο μηχάνημα. Αφού μπήκε στην εντολή και πάτησε Εισαγωγή κλειδιού, είναι σημαντικό να παραδοθεί η συμβολοσειρά που εισήγαγε απομακρυσμένο μηχάνημααμέσως, αντί να αποθηκεύεται στην προσωρινή μνήμη μέχρι να εισαχθεί επόμενη γραμμή. Για να αναγκάσει τα δεδομένα να μεταφερθούν χωρίς καθυστέρηση, μια εφαρμογή μπορεί να ορίσει τη σημαία PUSH.

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

Τελευταίο χαρακτηριστικόΗ υπηρεσία TCP που αξίζει να αναφερθεί είναι τα επείγοντα δεδομένα. Όταν ένας χρήστης που αλληλεπιδρά με ένα πρόγραμμα πατά διαδραστικά Delete ή Ctrl-C για να ακυρώσει το τρέχον απομακρυσμένη διαδικασία, το οποίο η εφαρμογή αποστολής τοποθετεί στη ροή δεδομένων εξόδου πληροφορίες ελέγχουκαι το περνάει στην υπηρεσία TCP μαζί με τη σημαία URGENT (επείγον). Αυτή η σημαία αναγκάζει την οντότητα TCP να σταματήσει τη συσσώρευση δεδομένων και να αποδεσμεύσει αμέσως ότι έχει για τη σύνδεση στο δίκτυο.

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

Πρωτόκολλο TCP

Αυτή η ενότητα θα συζητήσει το πρωτόκολλο TCP στο γενικό περίγραμμα. ΣΕ επόμενη ενότηταΘα συζητήσουμε την κεφαλίδα του πρωτοκόλλου, πεδίο προς πεδίο.

Μια βασική ιδιότητα του TCP που καθορίζει ολόκληρη τη δομή του πρωτοκόλλου είναι ότι σε μια σύνδεση TCP, κάθε byte έχει τον δικό του αριθμό ακολουθίας 32 bit. Στα πρώτα χρόνια του Διαδικτύου, η βασική ταχύτητα μεταφοράς δεδομένων μεταξύ δρομολογητών μέσω μισθωμένων γραμμών ήταν 56 Kbps. Σε έναν κεντρικό υπολογιστή που εξάγει συνεχώς δεδομένα από μέγιστη ταχύτητα, θα χρειαζόταν περισσότερο από μία εβδομάδα για να κάνουν τον κύκλο τους οι αύξοντες αριθμοί. Στις τρέχουσες ταχύτητες, οι αριθμοί ακολουθίας μπορεί να εξαντληθούν πολύ γρήγορα, περισσότερα για αυτό αργότερα. Ξεχωριστοί αριθμοί ακολουθίας 32 bit χρησιμοποιούνται για επιβεβαιώσεις και για τον μηχανισμό του συρόμενου παραθύρου, οι οποίοι θα συζητηθούν επίσης αργότερα.

Οι οντότητες TCP αποστολής και λήψης ανταλλάσσουν δεδομένα με τη μορφή τμημάτων. Ένα τμήμα αποτελείται από μια σταθερή κεφαλίδα 20 byte (συν ένα προαιρετικό τμήμα), η οποία μπορεί να ακολουθείται από byte δεδομένων. Το μέγεθος των τμημάτων καθορίζεται από λογισμικό παροχή TCP. Μπορεί να συνδυάσει δεδομένα που λαμβάνονται ως αποτέλεσμα πολλών λειτουργιών εγγραφής σε ένα τμήμα ή, αντίθετα, να διανέμει το αποτέλεσμα μιας εγγραφής σε πολλά τμήματα. Το μέγεθος των τμημάτων περιορίζεται από δύο όρια. Πρώτον, κάθε τμήμα, συμπεριλαμβανομένης της κεφαλίδας TCP, πρέπει να χωράει σε ένα πεδίο 65.515 byte φορτίο επί πληρωμήπακέτο IP. Δεύτερον, κάθε δίκτυο έχει μια μονάδα μέγιστης μεταφοράς (MTU) και κάθε τμήμα πρέπει να ταιριάζει στο MTU. Στην πράξη, το μέγεθος της μέγιστης μονάδας μετάδοσης είναι τυπικά 1500 byte (που αντιστοιχεί στο μέγεθος του πεδίου ωφέλιμου φορτίου Ethernet) και έτσι ορίζει το ανώτερο όριο του μεγέθους του τμήματος.

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

επιβεβαίωση ίση με τον αριθμό σειράς του επόμενου αναμενόμενου τμήματος. Εάν λήξει το χρονικό όριο επιβεβαίωσης, ο αποστολέας στέλνει ξανά το τμήμα.

Αν και αυτό το πρωτόκολλο φαίνεται απλό, υπάρχουν αρκετές λεπτομέρειες που πρέπει να εξεταστούν λεπτομερέστερα. Τα τμήματα ενδέχεται να φτάσουν με λάθος σειρά. Έτσι, για παράδειγμα, είναι πιθανό τα byte 3072 έως 4095 να έχουν ήδη φτάσει, αλλά δεν μπορεί να σταλεί μια επιβεβαίωση επειδή τα byte 2048 έως 3071 δεν έχουν ακόμη ληφθεί. Επιπλέον, τα τμήματα μπορεί να παραμείνουν στο δίκτυο για τόσο μεγάλο χρονικό διάστημα που ο αποστολέας λήγει και τα μεταδίδει ξανά. Το αναμεταδιδόμενο τμήμα μπορεί να περιλαμβάνει διαφορετικές περιοχές θραυσμάτων, επομένως θα απαιτηθεί πολύ προσεκτική διαχείριση για τον προσδιορισμό των αριθμών byte που έχουν ήδη ληφθεί σωστά. Ωστόσο, δεδομένου ότι κάθε byte στη ροή προσδιορίζεται μοναδικά από τη μετατόπισή του, αυτή η εργασία είναι εφικτή.

Το TCP πρέπει να είναι σε θέση να αντιμετωπίσει αυτά τα προβλήματα και να τα λύσει αποτελεσματικά. Έχει δαπανηθεί πολλή προσπάθεια για τη βελτιστοποίηση της απόδοσης των ροών TCP. Στην επόμενη ενότητα, θα συζητήσουμε αρκετούς αλγόριθμους που χρησιμοποιούνται σε διάφορες υλοποιήσεις του πρωτοκόλλου TCP.

Κεφαλίδα τμήματος TCP

Κάθε τμήμα ξεκινά με μια κεφαλίδα σταθερής μορφής 20 byte. Μπορεί να ακολουθείται από πρόσθετα πεδία. Μετά τα πρόσθετα πεδία μπορεί να υπάρχουν έως και 65.535 - 20 - 20 = 65.495 byte δεδομένων, όπου τα πρώτα 20 byte είναι η κεφαλίδα IP και τα δεύτερα η κεφαλίδα TCP. Τα τμήματα ενδέχεται να μην περιέχουν δεδομένα. Τέτοια τμήματα χρησιμοποιούνται συχνά για τη μετάδοση επιβεβαιώσεων και μηνυμάτων ελέγχου.

Ας δούμε την κεφαλίδα TCP πεδίο προς πεδίο. Τα πεδία Receiver Port και Source Port είναι αναγνωριστικά των τοπικών τελικών σημείων σύνδεσης. Ο αριθμός θύρας μαζί με τη διεύθυνση IP του κεντρικού υπολογιστή σχηματίζουν ένα μοναδικό αναγνωριστικό τελικού σημείου 48 bit. Ένα ζεύγος τέτοιων αναγνωριστικών πηγής και προορισμού προσδιορίζει μοναδικά μια σύνδεση.

Τα πεδία Αριθμός ακολουθίας και Αριθμός επιβεβαίωσης κάνουν τη δουλειά τους τακτική λειτουργία. Σημειώστε ότι το πεδίο Acknowledgment Number αναφέρεται στο επόμενο byte που αναμένεται και όχι στο τελευταίο byte που ελήφθη. Και τα δύο είναι 32-bit επειδή κάθε byte δεδομένων σε μια ροή TCP είναι αριθμημένη.

Το πεδίο TCP Header Length περιέχει το μέγεθος της κεφαλίδας TCP, που εκφράζεται σε λέξεις 32 bit. Αυτές οι πληροφορίες είναι απαραίτητες επειδή το πεδίο Προαιρετικά πεδία, και μαζί του ολόκληρη η κεφαλίδα, μπορεί να έχουν μεταβλητό μήκος. Ουσιαστικά, αυτό το πεδίο καθορίζει τη μετατόπιση από την αρχή του τμήματος έως το πεδίο δεδομένων, μετρημένη σε λέξεις 32 bit. Αυτό είναι το ίδιο με το μήκος του τίτλου.

Στη συνέχεια έρχεται ένα αχρησιμοποίητο πεδίο 6-bit. Το γεγονός ότι αυτό το πεδίο έχει επιβιώσει για ένα τέταρτο του αιώνα είναι απόδειξη του πόσο καλά μελετημένος είναι ο σχεδιασμός του TCP.

Αυτό ακολουθείται από έξι σημαίες 1-bit. Το bit URG ορίζεται σε 1 όταν χρησιμοποιείται το πεδίο Επείγοντος δείκτη δεδομένων, το οποίο περιέχει τη μετατόπιση byte από τον τρέχοντα αριθμό ακολουθίας byte στη θέση των επειγόντων δεδομένων. Αυτός είναι ο τρόπος με τον οποίο το TCP υλοποιεί τα μηνύματα διακοπής. Όπως ήδη αναφέρθηκε, το πρωτόκολλο TCP διασφαλίζει μόνο την παράδοση του σήματος χρήστη στον παραλήπτη, χωρίς να ενδιαφέρεται για την αιτία της διακοπής.

Εάν το bit ACK έχει οριστεί σε 1, το πεδίο Αριθμός επιβεβαίωσης περιέχει σημαντικά δεδομένα. Διαφορετικά, αυτό το τμήμα δεν περιέχει επιβεβαίωση και το πεδίο Αριθμός επιβεβαίωσης απλώς αγνοείται.

Το bit PSH είναι ουσιαστικά μια σημαία PUSH που λέει στον αποστολέα να προωθήσει τα δεδομένα στην εφαρμογή μόλις λάβει το πακέτο, αντί να τα αποθηκεύσει σε μια προσωρινή μνήμη μέχρι να γεμίσει. (Ο παραλήπτης μπορεί να αποθηκεύσει προσωρινά για να επιτύχει μεγαλύτερη αποτελεσματικότητα.)

Το bit RST χρησιμοποιείται για την επαναφορά της κατάστασης μιας σύνδεσης που, λόγω αποτυχίας κεντρικού υπολογιστή ή άλλου λόγου, έχει καταστεί αδιέξοδο. Χρησιμοποιείται επίσης για την απόρριψη ενός μη έγκυρου τμήματος ή μιας προσπάθειας δημιουργίας σύνδεσης. Εάν λάβετε ένα τμήμα με το σύνολο bit RST, υπάρχει κάποιο πρόβλημα.

Το bit SYN χρησιμοποιείται για τη δημιουργία σύνδεσης. Ένα αίτημα σύνδεσης έχει το bit SYN = 1 και το bit ACK = 0, που σημαίνει ότι το πεδίο επιβεβαίωσης δεν χρησιμοποιείται. Η απάντηση σε αυτό το αίτημα περιέχει μια επιβεβαίωση, επομένως οι τιμές αυτών των bit είναι: SYN= 1, ACK- 1. Έτσι, το bit SYN χρησιμοποιείται για να υποδείξει τα τμήματα ΑΙΤΗΣΗ ΣΥΝΔΕΣΗΣ και ΑΠΟΔΕΚΤΗ ΣΥΝΔΕΣΗ και χρησιμοποιείται το bit ACK να τα ξεχωρίζουν μεταξύ τους.

Το bit FIN χρησιμοποιείται για τον τερματισμό της σύνδεσης. Υποδεικνύει ότι ο αποστολέας δεν έχει άλλα δεδομένα για μετάδοση. Ωστόσο, ακόμη και μετά το κλείσιμο της σύνδεσης, η διαδικασία ενδέχεται να συνεχίσει να λαμβάνει δεδομένα επ' αόριστον. Τα τμήματα με τα bit FIN και SYN έχουν αριθμούς ακολουθίας για να διασφαλιστεί ότι εκτελούνται με τη σωστή σειρά.

Ο έλεγχος ροής στο πρωτόκολλο TCP πραγματοποιείται χρησιμοποιώντας ένα συρόμενο παράθυρο μεταβλητό μέγεθος. Το πεδίο Μέγεθος παραθύρου λέει πόσα byte μπορούν να σταλούν μετά το byte επιβεβαίωσης. Η τιμή του πεδίου Μέγεθος παραθύρου μπορεί να είναι μηδέν, πράγμα που σημαίνει ότι έχουν ληφθεί όλα τα byte μέχρι τον Αριθμό Επιβεβαίωσης-1, αλλά ο παραλήπτης έχει αυτή τη στιγμήυπάρχουν ορισμένα προβλήματα και δεν μπορεί να δεχτεί ακόμα τα υπόλοιπα byte. Άδεια για περαιτέρω μετάδοση μπορεί να ληφθεί αποστέλλοντας ένα τμήμα με την ίδια τιμή πεδίου Αριθμός επιβεβαίωσης και μη μηδενική τιμή πεδίου Μέγεθος παραθύρου.

Σε ορισμένα πρωτόκολλα, οι επιβεβαιώσεις πλαισίου σχετίζονται με δικαιώματα συνέχισης της μετάδοσης. Αυτή η σχέση είναι συνέπεια του αυστηρά καθορισμένου μεγέθους συρόμενου παραθύρου σε αυτά τα πρωτόκολλα. Στο TCP, οι επιβεβαιώσεις διαχωρίζονται από τα δικαιώματα μετάδοσης δεδομένων. Ουσιαστικά, ο δέκτης μπορεί να πει, "Έχω λάβει bytes έως και k-ro, αλλά δεν θέλω να συνεχίσω να λαμβάνω περισσότερα δεδομένα αυτήν τη στιγμή." Αυτή η διαίρεση (που εκφράζεται ως συρόμενο παράθυρο μεταβλητού μεγέθους) δίνει στο πρωτόκολλο πρόσθετη ευελιξία. Θα συζητήσουμε αυτήν την πτυχή με περισσότερες λεπτομέρειες παρακάτω.

Το πεδίο Checksum χρησιμοποιείται για την αύξηση της αξιοπιστίας. Περιέχει ένα άθροισμα ελέγχου της κεφαλίδας, των δεδομένων και της ψευδο-κεφαλίδας. Κατά την εκτέλεση υπολογισμών, το πεδίο Checksum ορίζεται στο μηδέν και το πεδίο δεδομένων συμπληρώνεται με μηδενικό byte εάν το μήκος του είναι περιττός αριθμός. Ο αλγόριθμος αθροίσματος ελέγχου απλώς προσθέτει όλες τις λέξεις 16-bit πρόσθετος κωδικός, και στη συνέχεια υπολογίζει το συμπλήρωμα ολόκληρου του αθροίσματος. Ως αποτέλεσμα, όταν ο παραλήπτης ελέγχει ολόκληρο το τμήμα, συμπεριλαμβανομένου του πεδίου Checksum, το αποτέλεσμα πρέπει να είναι 0.

Η ψευδο-κεφαλίδα περιέχει τις διευθύνσεις IP προέλευσης και προορισμού 32-bit, τον αριθμό πρωτοκόλλου για το TCP (6) και τον αριθμό byte για το τμήμα TCP (συμπεριλαμβανομένης της κεφαλίδας). Η συμπερίληψη μιας ψευδο-κεφαλίδας στο άθροισμα ελέγχου TCP βοηθά στον εντοπισμό πακέτων που παραδόθηκαν εσφαλμένα, αν και σπάει την ιεραρχία του πρωτοκόλλου επειδή οι διευθύνσεις IP σε αυτό ανήκουν στο επίπεδο IP και όχι στο επίπεδο TCP. Το UDP χρησιμοποιεί την ίδια ψευδο-κεφαλίδα για το άθροισμα ελέγχου.

Το πεδίο Προαιρετικά πεδία παρέχει πρόσθετες δυνατότητες που δεν καλύπτονται από την τυπική κεφαλίδα. Χρησιμοποιώντας ένα από αυτά τα πεδία, κάθε κεντρικός υπολογιστής μπορεί να καθορίσει το μέγιστο μέγεθος πεδίου ωφέλιμου φορτίου που μπορεί να δεχτεί. Όσο μεγαλύτερο είναι το μέγεθος των τμημάτων που χρησιμοποιούνται, τόσο μεγαλύτερη είναι η απόδοση, καθώς αυτό μειώνεται ειδικό βάροςγενικά με τη μορφή κεφαλίδων 20 byte, αλλά δεν είναι όλοι οι κεντρικοί υπολογιστές ικανοί να δέχονται πολύ μεγάλα τμήματα. Οι κεντρικοί υπολογιστές μπορούν να επικοινωνούν μεταξύ τους το μέγιστο μέγεθος πεδίου ωφέλιμου φορτίου κατά τη ρύθμιση της σύνδεσης. Από προεπιλογή αυτό το μέγεθος είναι 536 byte. Όλοι οι κεντρικοί υπολογιστές απαιτείται να δέχονται τμήματα TCP μεγέθους 536 + 20 = 556 byte. Κάθε κατεύθυνση μπορεί να έχει το δικό της μέγιστο μέγεθος πεδίου ωφέλιμου φορτίου.

Για γραμμές με υψηλή ταχύτηταμετάδοση και/ή υψηλή καθυστέρηση, ένα παράθυρο 64 KB είναι πολύ μικρό. Έτσι, για μια γραμμή TZ (44.736 Mbit/s), ένα πλήρες παράθυρο μπορεί να μεταδοθεί στη γραμμή σε μόλις 12 ms. Εάν ο χρόνος μετ' επιστροφής είναι 50 ms (που είναι τυπικός για διηπειρωτικό οπτικό καλώδιο), τα 3/4 του χρόνου ο αποστολέας θα περιμένει για επιβεβαίωση. Κατά την επικοινωνία μέσω δορυφόρου, η κατάσταση θα είναι ακόμη χειρότερη. Μεγαλύτερο μέγεθοςΤα Windows θα μπορούσαν να βελτιώσουν την αποτελεσματικότητα, αλλά το πεδίο Μέγεθος παραθύρου 16-bit δεν το επιτρέπει. Προτάθηκε το RFC 1323 νέα παράμετροςΗ κλίμακα παραθύρου στην οποία θα μπορούσαν να συμφωνήσουν δύο κεντρικοί υπολογιστές κατά τη δημιουργία μιας σύνδεσης. Αυτός ο αριθμός επιτρέπει στο πεδίο Μέγεθος παραθύρου να μετατοπιστεί έως και 14 bit προς τα αριστερά, επιτρέποντας στο μέγεθος του παραθύρου να επεκταθεί στα 230 byte (1 GB). Επί του παρόντος, οι περισσότερες υλοποιήσεις πρωτοκόλλου TCP υποστηρίζουν αυτήν τη δυνατότητα.

Μια άλλη επιλογή, που προτείνεται στο RFC 1106 και χρησιμοποιείται πλέον ευρέως, είναι να χρησιμοποιήσετε το επιλεκτικό πρωτόκολλο επανάληψης αντί για backtracking, εάν ο προορισμός λάβει ένα κακό τμήμα και μετά μεγάλο αριθμόΤο καλό, κανονικό TCP θα λήξει τελικά το χρονικό όριο και θα αναμεταδώσει όλα τα μη επιβεβαιωμένα τμήματα, συμπεριλαμβανομένων εκείνων που ελήφθησαν σωστά. Το RFC 1106 πρότεινε τη χρήση αρνητικών επιβεβαιώσεων (NAK) για να επιτρέψει στον παραλήπτη να ζητήσει ένα μόνο τμήμα ή πολλά τμήματα. Μόλις ληφθεί, ο παραλήπτης μπορεί να αναγνωρίσει όλα τα δεδομένα που είναι αποθηκευμένα στο buffer, μειώνοντας έτσι τον όγκο των δεδομένων που αναμεταδίδονται.

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

Πρωτόκολλο User Datagram
Το User Datagram Protocol είναι ένα πολύ απλό πρωτόκολλο. Σαν IP, είναι ένα αξιόπιστο πρωτόκολλο χωρίς σύνδεση. Δεν χρειάζεται να δημιουργήσετε μια σύνδεση με τον κεντρικό υπολογιστή για να ανταλλάξετε δεδομένα με αυτόν χρησιμοποιώντας UDP, και δεν υπάρχει μηχανισμός για τη διασφάλιση των μεταδιδόμενων δεδομένων.
Μπλοκ δεδομένων που μεταδίδονται με χρήση UDPονομάζεται datagram. UDPπροσθέτει τέσσερα πεδία κεφαλίδας 16 bit (8 byte) στα μεταδιδόμενα δεδομένα. Αυτά τα πεδία είναι: πεδίο μήκους, πεδίο αθροίσματος ελέγχου και αριθμός θύρας πηγής και προορισμού. Το «Λιμάνι», στο πλαίσιο αυτό, αντιπροσωπεύει λογισμικόθύρα, όχι θύρα υλικού.
Η έννοια του αριθμού θύρας είναι κοινή και στα δύο UDP και TCP. Οι αριθμοί θύρας καθορίζουν ποια λειτουργική μονάδα πρωτοκόλλου προωθεί (ή λαμβάνει) δεδομένα. Τα περισσότερα πρωτόκολλα έχουν τυπικές θύρες, τα οποία χρησιμοποιούνται συνήθως για αυτό. Για παράδειγμα, το πρωτόκολλο Telnet χρησιμοποιεί συνήθως τη θύρα 23. Απλή αλληλογραφία Πρωτόκολλο μεταφοράς(SMTP), χρησιμοποιεί τη θύρα 25. Χρήση standard δωμάτιαΟι θύρες επιτρέπουν στους πελάτες να επικοινωνούν με τον διακομιστή χωρίς προεγκατάστασηποια θύρα να χρησιμοποιήσετε.
Αριθμός θύρας και πρωτοκόλλου στο πεδίο κεφαλίδας IPαντιγράφουν το ένα το άλλο σε κάποιο βαθμό, αν και τα πεδία πρωτοκόλλου δεν είναι διαθέσιμα για πρωτόκολλα μεγαλύτερα υψηλό επίπεδο. IPχρησιμοποιεί το πεδίο πρωτοκόλλου για να προσδιορίσει πού πρέπει να σταλούν τα δεδομένα UDPή TCPενότητες. UDPή TCPχρησιμοποιήστε τον αριθμό θύρας για να προσδιορίσετε ποιο πρωτόκολλο επίπεδο εφαρμογής, πρέπει να λάβει δεδομένα.
Παρά, UDPδεν είναι αξιόπιστο, είναι ακόμα κατάλληλη επιλογήγια πολλές εφαρμογές. Χρησιμοποιείται από εφαρμογές σε πραγματικό χρόνο όπως π.χ ροή ήχουκαι ένα βίντεο όπου, αν χαθούν τα δεδομένα, καλύτερα να το κάνεις χωρίς αυτό παρά να το στείλεις ξανά με τη σειρά. Χρησιμοποιείται επίσης από πρωτόκολλα όπως το Simple Network Management Protocol (SNMP).
Αναμετάδοση
UDPΚατάλληλο για μετάδοση ειδήσεων γιατί δεν απαιτεί ανοιχτή σύνδεση Στόχοι μήνυμα εκπομπήςκαθορίζεται από τον αποστολέα, στην καθορισμένη διεύθυνση IP προορισμού. UDPτα datagrams με διεύθυνση IP προορισμού είναι όλα δυαδικά 255.255.255.255) και θα λαμβάνονται από κάθε κεντρικό υπολογιστή στο τοπικό δίκτυο. Δώστε προσοχή στη λέξη τοπικό: τα datagrams με τέτοια διεύθυνση δεν θα γίνονται δεκτά από το δρομολογητή στο Διαδίκτυο.
Οι μεταδόσεις μπορούν να κατευθυνθούν σε συγκεκριμένα δίκτυα. UDP datagramsαπό τον κεντρικό υπολογιστή και τα τμήματα υποδικτύου της διεύθυνσης IP που έχουν οριστεί ως δυαδικά μεταδίδονται σε όλους τους κεντρικούς υπολογιστές σε όλα τα υποδίκτυα του δικτύου που αντιστοιχεί στο καθαρό τμήμα της διεύθυνσης IP. Εάν μόνο το άκρο λήψης (με άλλα λόγια, όλα τα bit που είναι μηδέν στη μάσκα υποδικτύου) οριστεί σε δυαδικό, τότε η μετάδοση περιορίζεται σε όλους τους κεντρικούς υπολογιστές στο υποδίκτυο που ταιριάζει με την υπόλοιπη διεύθυνση.
Η Multicast χρησιμοποιείται για τη μετάδοση δεδομένων μεταξύ μιας ομάδας κεντρικών υπολογιστών που έχουν εκφράσει την επιθυμία να τα λάβουν. Multicast UDPτο datagram έχει μια διεύθυνση προορισμού στην οποία τα πρώτα τέσσερα bit είναι 1110, παρέχοντας διευθύνσεις στην περιοχή 224.xxx έως 239.xxx Τα υπόλοιπα bit της διεύθυνσης χρησιμοποιούνται για τον προσδιορισμό της ομάδας multicast. Μοιάζει περισσότερο με ραδιόφωνο ή τηλεοπτικό κανάλι. Έτσι, για παράδειγμα, το 224.0.1.1 χρησιμοποιείται για το πρωτόκολλο NTP. Αν TCP/IPΟι εφαρμογές θέλουν να λάβουν ένα μήνυμα πολλαπλής διανομής, πρέπει να ενταχθούν στην κατάλληλη ομάδα πολλαπλής διανομής, κάτι που γίνεται περνώντας τη διεύθυνση της ομάδας στη στοίβα πρωτοκόλλου.
Οι ραδιοτηλεοπτικοί φορείς ουσιαστικά φιλτράρουν τη μετάδοση. Το Multicaster δεν λαμβάνει υπόψη μεμονωμένα μηνύματα για κάθε κεντρικό υπολογιστή που συμμετέχει στην ομάδα. Αντίθετα, τα μηνύματα μεταδίδονται και τα προγράμματα οδήγησης σε κάθε κεντρικό υπολογιστή αποφασίζουν εάν θα τα αγνοήσουν ή αν θα μεταβιβάσουν το περιεχόμενο στη στοίβα πρωτοκόλλου.
Αυτό σημαίνει ότι τα μηνύματα πολλαπλής εκπομπής πρέπει να μεταδίδονται σε ολόκληρο το Διαδίκτυο, καθώς ο multicaster δεν γνωρίζει ποιοι κεντρικοί υπολογιστές θέλουν να λαμβάνουν τα μηνύματα. Ευτυχώς, αυτό δεν είναι απαραίτητο. Το IP χρησιμοποιεί ένα πρωτόκολλο που ονομάζεται Πρωτόκολλο Διαχείρισης Ομάδας Διαδικτύου (IGMP) για να λέει στους δρομολογητές ποιοι κεντρικοί υπολογιστές θέλουν να λαμβάνουν μηνύματα ομάδας πολλαπλής διανομής, ώστε τα μηνύματα να αποστέλλονται μόνο όπου χρειάζονται.
Πρωτόκολλο ελέγχου μετάδοσης
Το πρωτόκολλο ελέγχου μετάδοσης είναι ένα πρωτόκολλο επιπέδου μεταφοράς και χρησιμοποιείται από τις περισσότερες εφαρμογές Διαδικτύου όπως Telnet, FTP και HTTP. Αυτό είναι ένα πρωτόκολλο προσανατολισμένο στη σύνδεση. Αυτό σημαίνει ότι δύο υπολογιστές - ο ένας πελάτης και ο άλλος διακομιστής - πρέπει να δημιουργήσουν μια σύνδεση μεταξύ τους προτού μπορέσουν να μεταφερθούν δεδομένα μεταξύ τους.
TCPπαρέχει αξιοπιστία. Εφαρμογή που χρησιμοποιεί TCPγνωρίζει ότι στέλνει δεδομένα που έλαβε στο άλλο άκρο και ότι τα έλαβε σωστά. TCPχρησιμοποιεί αθροίσματα ελέγχου τόσο στις κεφαλίδες όσο και στα δεδομένα. Κατά τη λήψη δεδομένων, TCPστέλνει επιβεβαίωση στον αποστολέα. Εάν ο αποστολέας δεν λάβει επιβεβαίωση εντός ορισμένη περίοδοώρα, τα δεδομένα αποστέλλονται ξανά.
TCPπεριλαμβάνει μηχανισμούς που διασφαλίζουν ότι τα δεδομένα φτάνουν με αντίστροφη σειρά με τη σειρά που στάλθηκαν. Εφαρμόζει επίσης έλεγχο ροής έτσι ώστε ο αποστολέας να μην μπορεί να κατακλύσει τον παραλήπτη των δεδομένων.
TCPμεταδίδει δεδομένα χρησιμοποιώντας IP σε μπλοκ που ονομάζονται τμήματα. Το μήκος του τμήματος καθορίζεται από το πρωτόκολλο. Εκτός από την κεφαλίδα IP, κάθε τμήμα αποτελείται από 20 byte κεφαλίδας. Επικεφαλίδα TCPξεκινά με ένα πεδίο αριθμού θύρας πηγής και προορισμού 16-bit. Σαν UDP, αυτά τα πεδία ορίζουν το επίπεδο εφαρμογής που στοχεύει στη λήψη δεδομένων. Η διεύθυνση IP και ο αριθμός θύρας, μαζί, προσδιορίζουν μοναδικά τις υπηρεσίες που εκτελούνται για τον κεντρικό υπολογιστή και ένα ζεύγος γνωστό ως υποδοχή.
Στη συνέχεια στην κεφαλίδα είναι ένας αριθμός ακολουθίας 32 bit. Αυτός ο αριθμός καθορίζει τη θέση στη ροή δεδομένων που πρέπει να καταλαμβάνει το πρώτο byte δεδομένων στο τμήμα. Αύξων αριθμός TCPεπιτρέπει τη διατήρηση της ροής δεδομένων με τη σωστή σειρά, αν και τα τμήματα μπορεί να προέρχονται από μια ακολουθία.
Το επόμενο πεδίο είναι ένα πεδίο 32 bit που χρησιμοποιείται για να μεταφέρει στον αποστολέα ότι τα δεδομένα ελήφθησαν σωστά. Αν Σημαία ACK, όπως είναι συνήθως, αυτό το πεδίο περιέχει τη θέση του επόμενου byte δεδομένων που αναμένει να λάβει ο αποστολέας του τμήματος.
ΣΕ TCPδεν χρειάζεται να αναγνωρίζεται κάθε τμήμα δεδομένων. Η τιμή στο πεδίο επιβεβαίωσης ερμηνεύεται ως "όλα τα δεδομένα που ελήφθησαν ΟΚ μέχρι στιγμής". Αυτό εξοικονομεί εύρος ζώνης όταν όλα τα δεδομένα δρομολογούνται προς μία κατεύθυνση, μειώνοντας την ανάγκη για αναγνώριση τμήματος. Εάν τα δεδομένα αποστέλλονται ταυτόχρονα και προς τις δύο κατευθύνσεις, όπως εξ ολοκλήρου αμφίδρομη επικοινωνία, τότε τα σημάδια δεν σχετίζονται με το κόστος, καθώς ένα τμήμα μετάδοσης δεδομένων προς μία κατεύθυνση μπορεί να περιέχει μια επιβεβαίωση για δεδομένα που μεταδίδονται προς άλλη κατεύθυνση.
Στη συνέχεια στην κεφαλίδα υπάρχει ένα πεδίο 16-bit που περιέχει το μήκος της κεφαλίδας και τις σημαίες. TCPΟι κεφαλίδες μπορεί να περιέχουν πρόσθετα πεδία, επομένως το μήκος μπορεί να κυμαίνεται από 20 έως 60 byte. Σημαίες: URG, ACK (που ήδη αναφέραμε), PSH, RST, SYN και FIN. Αργότερα, θα δούμε μερικές άλλες σημαίες.
Η κεφαλίδα περιέχει ένα πεδίο που ονομάζεται μέγεθος παραθύρου, το οποίο δίνει τον αριθμό των byte που μπορεί να λάβει ο δέκτης. Υπάρχει επίσης ένα άθροισμα ελέγχου 16-bit που καλύπτει τόσο την κεφαλίδα όσο και τα δεδομένα. Τέλος (πριν από πρόσθετα δεδομένα) υπάρχει ένα πεδίο που ονομάζεται «δείκτης επείγουσας ανάγκης». Όταν έχει οριστεί η σημαία URG, αυτή η τιμή ερμηνεύεται ως μετατόπιση αριθμού ακολουθίας. Προσδιορίζει την έναρξη των δεδομένων σε μια ροή που πρέπει να επεξεργαστεί επειγόντως. Αυτά τα δεδομένα αναφέρονται συχνά ως δεδομένα "εκτός ομάδας". Ένα παράδειγμα χρήσης του είναι όταν ο χρήστης πατά το πλήκτρο διακοπής για να διακόψει την έξοδο από το πρόγραμμα κατά τη διάρκεια μιας περιόδου λειτουργίας Telnet.

Πρωτόκολλο User Datagram - UDP

Πρωτόκολλο UDP είναι ένα από τα δύο πρωτόκολλα επιπέδου μεταφοράς που χρησιμοποιούνται στη στοίβα πρωτοκόλλων TCP/IP. Το UDP επιτρέπει σε ένα πρόγραμμα εφαρμογής να μεταδίδει τα μηνύματά του μέσω ενός δικτύου με ελάχιστη επιβάρυνση που σχετίζεται με τη μετατροπή πρωτοκόλλων επιπέδου εφαρμογής σε IP. Ωστόσο, την ίδια στιγμή, πρόγραμμα εφαρμογήςη ίδια πρέπει να φροντίσει να επιβεβαιώσει ότι το μήνυμα παραδόθηκε στον προορισμό του. Η κεφαλίδα UDP datagram (μηνύματος) μοιάζει με αυτή που φαίνεται στην Εικόνα 2.10.

Ρύζι. 2.10. Δομή κεφαλίδας μηνύματος UDP

Η μονάδα δεδομένων πρωτοκόλλου UDP ονομάζεται πακέτο UDP ή datagram χρήστη. Ένα πακέτο UDP αποτελείται από μια κεφαλίδα και ένα πεδίο δεδομένων που περιέχει το πακέτο επιπέδου εφαρμογής. Η κεφαλίδα έχει απλή μορφή και αποτελείται από τέσσερα πεδία δύο byte:

    Θύρα πηγής UDP - αριθμός θύρας της διαδικασίας αποστολής,

    Θύρα προορισμού UDP - αριθμός θύρας της διαδικασίας παραλήπτη,

    Μήκος μηνύματος UDP - μήκος του πακέτου UDP σε byte,

    Άθροισμα ελέγχου UDP - άθροισμα ελέγχου του πακέτου UDP

Δεν πρέπει να συμπληρωθούν όλα τα πεδία ενός πακέτου UDP. Εάν το σταλμένο datagram δεν αναμένει απάντηση, τότε μπορούν να τοποθετηθούν μηδενικά στη θέση της διεύθυνσης του αποστολέα. Μπορείτε επίσης να αρνηθείτε τον υπολογισμό του αθροίσματος ελέγχου, αλλά σημειώστε ότι το πρωτόκολλο IP υπολογίζει το άθροισμα ελέγχου μόνο για την κεφαλίδα του πακέτου IP, αγνοώντας το πεδίο δεδομένων

Οι θύρες στην κεφαλίδα ορίζουν το πρωτόκολλο UDP ως πολυπλέκτη που επιτρέπει τη συλλογή και αποστολή μηνυμάτων από εφαρμογές στο επίπεδο πρωτοκόλλου. Σε αυτήν την περίπτωση, η εφαρμογή χρησιμοποιεί μια συγκεκριμένη θύρα. Οι εφαρμογές που επικοινωνούν μέσω του δικτύου ενδέχεται να χρησιμοποιούν διαφορετικές θύρες, κάτι που αντικατοπτρίζεται στην κεφαλίδα του πακέτου. Συνολικά, μπορούν να οριστούν 216 διαφορετικές θύρες. Οι πρώτες 256 θύρες εκχωρούνται στις λεγόμενες "γνωστές υπηρεσίες", οι οποίες περιλαμβάνουν, για παράδειγμα, τη θύρα UDP 53, η οποία έχει εκχωρηθεί στην υπηρεσία DNS.

Πεδίο Μήκοςκαθορίζει το συνολικό μήκος του μηνύματος. Πεδίο Άθροισμα ελέγχουχρησιμεύει στον έλεγχο της ακεραιότητας των δεδομένων. Μια εφαρμογή που χρησιμοποιεί το πρωτόκολλο UDP πρέπει να φροντίζει για την ακεραιότητα των δεδομένων αναλύοντας τα πεδία Checksum και Length. Επιπλέον, κατά την ανταλλαγή δεδομένων μέσω UDP, το ίδιο το πρόγραμμα εφαρμογής πρέπει να φροντίζει για την παρακολούθηση της παράδοσης των δεδομένων στον παραλήπτη. Αυτό συνήθως επιτυγχάνεται με την ανταλλαγή επιβεβαιώσεων παράδοσης μεταξύ προγραμμάτων εφαρμογής.

Πλέον γνωστές υπηρεσίεςΜε βάση το UDP είναι η υπηρεσία ονομάτων τομέα BIND και το σύστημα κατανεμημένων αρχείων NFS. Επιστρέφοντας στο παράδειγμα traceroute, αυτό το πρόγραμμα χρησιμοποιεί επίσης μεταφορά UDP. Στην πραγματικότητα, είναι το μήνυμα UDP που αποστέλλεται στο δίκτυο, αλλά χρησιμοποιεί μια θύρα που δεν έχει υπηρεσία, γι' αυτό δημιουργείται ένα πακέτο ICMP, το οποίο ανιχνεύει την έλλειψη υπηρεσίας στο μηχάνημα λήψης όταν το πακέτο φτάσει τελικά στο μηχανή προορισμού.

Transfer Control Protocol - TCP

Εάν η παρακολούθηση της ποιότητας της μετάδοσης δεδομένων μέσω του δικτύου είναι σημαντική για μια εφαρμογή, τότε σε αυτήν την περίπτωση χρησιμοποιείται το πρωτόκολλο TCP. Αυτό το πρωτόκολλο ονομάζεται επίσης αξιόπιστο, προσανατολισμένο στη σύνδεση και προσανατολισμένο στη ροή πρωτόκολλο. Πριν συζητήσουμε αυτές τις ιδιότητες του πρωτοκόλλου, ας εξετάσουμε τη μορφή του datagram που μεταδίδεται μέσω του δικτύου (Εικόνα 2.11). Σύμφωνα με αυτή τη δομή, το TCP, όπως και το UDP, έχει θύρες. Οι πρώτες 256 θύρες εκχωρούνται στο WKS, οι θύρες από 256 έως 1024 εκχωρούνται σε υπηρεσίες Unix και οι υπόλοιπες μπορούν να χρησιμοποιηθούν κατά την κρίση σας. Στο χωράφι Αριθμός Ακολουθίαςο αριθμός του πακέτου ορίζεται στην ακολουθία των πακέτων που συνθέτει ολόκληρο το μήνυμα, ακολουθούμενο από ένα πεδίο επιβεβαίωσης Αριθμός Γνώσηςκαι άλλες πληροφορίες ελέγχου.

Ρύζι. 2.11. Δομή πακέτων TCP

    Η θύρα πηγής (SOURS PORT) καταλαμβάνει 2 byte, προσδιορίζει τη διαδικασία αποστολής.

    Η θύρα προορισμού (DESTINATION PORT) καταλαμβάνει 2 byte, προσδιορίζει τη διαδικασία παραλήπτη.

    Ο αριθμός ακολουθίας (ΑΡΙΘΜΟΣ SEQUENCE) καταλαμβάνει 4 byte, υποδεικνύει τον αριθμό byte, ο οποίος καθορίζει τη μετατόπιση του τμήματος σε σχέση με τη ροή των δεδομένων που αποστέλλονται.

    Ο επιβεβαιωμένος αριθμός (ΑΡΙΘΜΟΣ ΕΠΙΒΕΒΑΙΩΣΗΣ) καταλαμβάνει 4 byte, περιέχει τον μέγιστο αριθμό byte στο ληφθέν τμήμα, αυξημένο κατά ένα. Είναι αυτή η τιμή που χρησιμοποιείται ως απόδειξη.

    Μήκος κεφαλίδας (HLEN), μήκους 4 bit, υποδεικνύει το μήκος της κεφαλίδας του τμήματος TCP, μετρημένο σε λέξεις 32 bit. Το μήκος της κεφαλίδας δεν είναι σταθερό και μπορεί να ποικίλλει ανάλογα με τις τιμές που ορίζονται στο πεδίο Επιλογές.

    Το Reserve (RESERVED) καταλαμβάνει 6 bit, το πεδίο δεσμεύεται για μελλοντική χρήση.

    Τα bit κώδικα (CODE BITS) καταλαμβάνουν 6 bit και περιέχουν πληροφορίες υπηρεσίας σχετικά με τον τύπο ενός δεδομένου τμήματος, που καθορίζεται ορίζοντας τα αντίστοιχα bit αυτού του πεδίου σε ένα:

    URG - επείγον μήνυμα.

    ACK - απόδειξη για το ληφθέν τμήμα.

    PSH - αίτημα για αποστολή μηνύματος χωρίς αναμονή για πλήρωση του buffer.

    RST - αίτημα για επαναφορά της σύνδεσης.

    SYN - μήνυμα που χρησιμοποιείται για το συγχρονισμό των μετρητών των μεταδιδόμενων δεδομένων κατά τη δημιουργία μιας σύνδεσης.

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

    Ένα παράθυρο (WINDOW) καταλαμβάνει 2 byte, περιέχει τη δηλωμένη τιμή του μεγέθους του παραθύρου σε byte.

    Το άθροισμα ελέγχου (CHECKSUM) παίρνει 2 byte και υπολογίζεται ανά τμήμα.

    Ο δείκτης επείγουσας ανάγκης (URGENT POINTER) καταλαμβάνει 2 byte, χρησιμοποιείται σε συνδυασμό με το bit κώδικα URG, υποδεικνύει το τέλος των δεδομένων που πρέπει να ληφθούν επειγόντως, παρά την υπερχείλιση buffer.

    ΕΠΙΛΟΓΕΣ - αυτό το πεδίο έχει μεταβλητό μήκος και μπορεί να απουσιάζει εντελώς, το μέγιστο μέγεθος πεδίου είναι 3 byte.

    χρησιμοποιείται για την επίλυση βοηθητικών προβλημάτων, για παράδειγμα, κατά την επιλογή του μέγιστου μεγέθους τμήματος.

Το PADDING, μια συμπλήρωση μεταβλητού μήκους, είναι ένα εικονικό πεδίο που χρησιμοποιείται για να μεταφέρει το μέγεθος της κεφαλίδας σε έναν ακέραιο αριθμό λέξεων 32 bit. Η αξιοπιστία του TCP έγκειται στο γεγονός ότι η πηγή δεδομένων επαναλαμβάνει την αποστολή του εκτός εάν λάβει επιβεβαίωση από τον παραλήπτη εντός ορισμένης χρονικής περιόδου ότι ελήφθη με επιτυχία. Αυτός ο μηχανισμός ονομάζεταιΘετική ευαισθητοποίηση με την αναμετάδοση (PAR)

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

    Η πηγή δημιουργεί μια σύνδεση με τον παραλήπτη στέλνοντάς του ένα πακέτο με τη σημαία Synchronize Sequence Numbers (SYN). Ο αριθμός στην ακολουθία προσδιορίζει τον αριθμό πακέτου στο μήνυμα της εφαρμογής. Δεν χρειάζεται να είναι 0 ή ένα.

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

    αριθμός. Επιπλέον, το πεδίο «αριθμός στη σειρά» μπορεί επίσης να υποδεικνύει τον αριθμό που ζητήθηκε από την πηγή.

Η πηγή επιβεβαιώνει ότι έχει αποδεχτεί το τμήμα προορισμού και στέλνει το πρώτο τμήμα δεδομένων.

Γραφικά αυτή η διαδικασία παρουσιάζεται στο Σχήμα 2.12.

Ρύζι. 2.12. Δημιουργία σύνδεσης TCP

Μόλις δημιουργηθεί η σύνδεση, η πηγή στέλνει δεδομένα στον παραλήπτη και περιμένει επιβεβαίωση από αυτόν ότι έχει ληφθεί, στη συνέχεια στέλνει ξανά τα δεδομένα και ούτω καθεξής, μέχρι να τελειώσει το μήνυμα. Το μήνυμα τελειώνει όταν το bit FIN έχει οριστεί στο πεδίο σημαίες, που σημαίνει "δεν υπάρχουν άλλα δεδομένα".

Η φύση ροής του πρωτοκόλλου καθορίζεται από το γεγονός ότι το SYN καθορίζει τον αριθμό έναρξης για την καταμέτρηση των μεταδιδόμενων byte, όχι των πακέτων. Αυτό σημαίνει ότι εάν το SYN ορίστηκε στο 0 και μεταδόθηκαν 200 byte, τότε ο αριθμός που ορίστηκε στο επόμενο πακέτο θα είναι 201, όχι 2.

Είναι σαφές ότι η φύση ροής του πρωτοκόλλου και η απαίτηση επιβεβαίωσης της λήψης δεδομένων δημιουργούν το πρόβλημα της ταχύτητας μεταφοράς δεδομένων. Για να λύσετε αυτό το πρόβλημα, χρησιμοποιήστε ένα "παράθυρο" - ένα πεδίο - παράθυρο. Η ιδέα της χρήσης του παραθύρου είναι αρκετά απλή: μετάδοση δεδομένων χωρίς να περιμένετε την επιβεβαίωση της παραλαβής τους. Αυτό σημαίνει ότι η πηγή μεταδίδει έναν ορισμένο όγκο δεδομένων ίσο με το παράθυρο χωρίς να περιμένει την επιβεβαίωση της παραλαβής του και μετά σταματά τη μετάδοση και περιμένει για επιβεβαίωση. Εάν λάβει επιβεβαίωση μόνο για ένα μέρος των μεταδιδόμενων δεδομένων, θα αρχίσει να μεταδίδει ένα νέο τμήμα από τον αριθμό που ακολουθεί τον επιβεβαιωμένο. Αυτό φαίνεται γραφικά στο Σχήμα 2.13.

Ρύζι. 2.13. Μηχανισμός μετάδοσης δεδομένων TCP ΣΕσε αυτό το παράδειγμα

Έτσι, εξετάσαμε όλες τις βασικές ιδιότητες του πρωτοκόλλου TCP. Απομένει μόνο να αναφέρουμε τις πιο διάσημες εφαρμογές που χρησιμοποιεί το TCP για ανταλλαγή δεδομένων. Αυτό είναι κυρίως το TELNET και το FTP, καθώς και το πρωτόκολλο HTTP, το οποίο είναι η καρδιά ΠαγκόσμιαΙστός.

Ας διακόψουμε λίγο τη συζήτηση για τα πρωτόκολλα και ας στρέψουμε την προσοχή μας σε ένα τόσο σημαντικό στοιχείο ολόκληρου του συστήματος TCP/IP όπως οι διευθύνσεις IP.



Συνιστούμε να διαβάσετε

Κορυφή