Εισαγωγή στο HTTP: Εξερεύνηση των τηλεπικοινωνιών σε συστήματα υπολογιστών

Γνωρίστε το μοντέλο Open Systems Interconnection

ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ

Σε όλη αυτή τη σειρά, θα αντιμετωπίσουμε τα βασικά όπως:

(Μέρος 1) Πώς λειτουργεί το DNS;

(Μέρος 2) Στοίβα δικτύου, Μοντέλο OSI [Βρίσκεστε εδώ!]

(Μέρος 3) Μέθοδοι και μορφές HTTP

(Μέρος 4) Αναγνώριση πελάτη

(Μέρος 5) Βασικός έλεγχος ταυτότητας

(Μέρος 6) HTTPS που λειτουργεί με SSL / TLS

Μοντέλο OSI

Το μοντέλο Open Systems Interconnection (OSI) είναι ένα τυποποιημένο μοντέλο τηλεπικοινωνιών σε συστήματα υπολογιστών. Δεν αφορά την υποκείμενη τεχνολογία, αλλά αντ 'αυτού τα επίπεδα που εμπλέκονται στην επικοινωνία. Ας εξερευνήσουμε τα διαφορετικά επίπεδα στο μοντέλο OSI:

1. Επίπεδο εφαρμογής

Αυτό το επίπεδο επιτρέπει στις εφαρμογές να επικοινωνούν μέσω του δικτύου μόλις ολοκληρωθεί η σύνδεση, όπως από το πρόγραμμα περιήγησης Web (εφαρμογή) στον διακομιστή. Παραδείγματα πρωτοκόλλων σε αυτό το επίπεδο περιλαμβάνουν HTTP και TELNET.

Πρωτόκολλο μεταφοράς υπερκειμένου (HTTP)

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

2. Επίπεδο μεταφοράς

Αυτό το επίπεδο είναι υπεύθυνο για την επικοινωνία μηνυμάτων από host σε host. Παραδείγματα πρωτοκόλλων σε αυτό το επίπεδο περιλαμβάνουν TCP και UDP.

Πρωτόκολλο ελέγχου μετάδοσης (TCP)

Το πιο κοινό πρωτόκολλο προσανατολισμένο στη σύνδεση. Καθορίζει τον τρόπο δημιουργίας και συντήρησης μιας συνομιλίας δικτύου. Είναι υπεύθυνη για τη δημιουργία σύνδεσης (που ονομάζεται υποδοχή ) μεταξύ του πελάτη και του κεντρικού υπολογιστή σε μια χειραψία 3 κατευθύνσεων.

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

Το TCP είναι το πιο συνηθισμένο λόγω της κομψότητας του, στο οποίο είναι σε θέση να προσφέρει τα εξής:

Επικοινωνία προσανατολισμένη στη σύνδεση

Καθιερώστε ένα πρωτόκολλο χειραψίας μεταξύ των τελικών σημείων για να διασφαλίσετε τη σύνδεση πριν από την ανταλλαγή δεδομένων και να μεταδοθείτε ως ροή δεδομένων (πακέτα δεδομένων).

Αξιοπιστία

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

Σειρά

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

Έλεγχος ροής

Ο ρυθμός μετάδοσης δεδομένων ρυθμίζεται για τη βελτίωση της αποτελεσματικότητας, αποτρέποντας παράλληλα την υπέρβαση του buffer / underruns, όπου τα δεδομένα αποστέλλονται ταχύτερα από ό, τι ο δέκτης είναι σε θέση να το επεξεργαστεί και το αντίστροφο.

Οι μηχανικοί πίσω από αυτό εξηγούνται παρακάτω στην ενότητα TCP Slow Start.

Πολυπλεξία

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

Πρωτόκολλο δεδομένων χρήστη (UDP)

Παρόλο που είναι παρόμοιο με το TCP, είναι ένα πρωτόκολλο χωρίς σύνδεση. Είναι το τελείως αντίθετο του TCP, καθιστώντας το αναξιόπιστο και χωρίς ταξινόμηση. Τα πατημένα πακέτα δεν θα μεταδοθούν εκ νέου, προκαλώντας κενά στα δεδομένα.

Ωστόσο, αυτό το καθιστά καλύτερο για εφαρμογές ευαίσθητες στο χρόνο, όπως φωνητικές κλήσεις μέσω Διαδικτύου (VoIP). Αυτό συμβαίνει επειδή δεν απαιτεί τη χειραψία 3 δρόμων πριν από τη μετάδοση, καθιστώντας το γρήγορο. Επιπλέον, τα πατημένα πακέτα δεδομένων δεν αποτελούν πρόβλημα στο VoIP, καθώς το ανθρώπινο αυτί είναι πολύ καλό στο χειρισμό των μικρών κενών που είναι τυπικά με τα πατημένα πακέτα.

3. Επίπεδο δικτύου

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

Πρωτόκολλο Διαδικτύου (IP)

Καθορίζει τη δομή των πακέτων δεδομένων, καθώς και την επισήμανση με την πηγή και τις πληροφορίες προορισμού.

Οι πληροφορίες προέλευσης και προορισμού έχουν τη μορφή Διευθύνσεων IP, στις οποίες μπορούν να έχουν τη μορφή 104.16.121.127(IPv4) ή 2001:db8:0:1234:0:567:8:1(IPv6).

4. Σύνδεση / Φυσικό στρώμα

Αυτό το επίπεδο είναι η ρίζα του μοντέλου OSI, όπου οι πληροφορίες μεταδίδονται είτε στο Τοπικό Δίκτυο (LAN) για το Link Layer, και ένα φυσικό σήμα όπως ηλεκτρικό, μηχανικό μέσο με τη μορφή κωδικών λέξεων ή συμβόλων στο Physical Layer .

Οπτικοποίηση διαδρομών

Χρησιμοποιώντας tracert google.com, η διαδρομή μπορεί να εντοπιστεί από την πλευρά του πελάτη (ο υπολογιστής σας) στον κεντρικό υπολογιστή (google.com).

Από ψηλά, μπορείτε να δείτε τη διαδρομή που ξεκινά από τη συσκευή μου 192.168.1.254μέχρι το δρομολογητή 10.243.128.1, πριν περάσετε από τον πάροχο υπηρεσιών Internet (ISP) που βρίσκεται στην Πορτογαλία και ούτω καθεξής.

Συμπληρωματικά επίπεδα

Μοντέλο TCP / IP

Η διεύθυνση IP είναι υπεύθυνη μόνο για τη δομή του πακέτου δεδομένων. Ως εκ τούτου, δεν θα κάνει τροποποιήσεις εάν το πακέτο δεδομένων είναι κατεστραμμένο ή απορριφθεί. Αυτό είναι όπου το TCP μπαίνει στο παιχνίδι, αριθμώντας τα πακέτα δεδομένων πριν από την αποστολή στον πελάτη. Από την πλευρά του πελάτη, το TCP θα ζητήσει εκ νέου μετάδοση χαμένων / κατεστραμμένων πακέτων και, στη συνέχεια, αναδιάταξη των πακέτων δεδομένων.

Μοντέλο HTTP / TCP

Όπως αναφέραμε νωρίτερα, το HTTP μπορεί τώρα να υποβάλλει αιτήματα μέσω της σύνδεσης που πραγματοποιείται από το TCP Handshake. Αλλά πώς αλληλοσυμπληρώνονται;

Μόνιμες συνδέσεις HTTP

Αυτό θα επέτρεπε πολλαπλές αιτήσεις / απόκριση HTTP σε μία σύνδεση TCP, σε αντίθεση με το άνοιγμα μιας νέας σύνδεσης σε κάθε αίτημα / απάντηση.

Αυτό γίνεται μέσω της κεφαλίδας HTTP, όπου Connection: Keep-Alive. Από προεπιλογή, η σύνδεση θα κλείσει μόνο μετά από άλλη απόκριση όπου Connection: Closeαποστέλλεται μετά από 30 δευτερόλεπτα αδράνειας.

Αργή εκκίνηση TCP

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

Ο αποστολέας έχει ένα παράθυρο συμφόρησης (CWND) και ο παραλήπτης έχει ένα παράθυρο δέκτη (RWND). Εάν τα δεδομένα είναι μεγαλύτερα από το παράθυρο συμφόρησης / δέκτη, θα υπήρχε ένα buffer under / overrun αντίστοιχα.

Για να αποφευχθεί αυτό, ο αποστολέας θα ξεκινήσει στέλνοντας ένα πακέτο δεδομένων με ένα μικρό παράθυρο συμφόρησης (CWND = 1), για να ανιχνεύσει αργά τον δέκτη για το παράθυρο του δέκτη.

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

Δουλεύοντας μαζί

Ως εκ τούτου, το TCP Slow Start είναι σε θέση να καταλάβει τον βέλτιστο αριθμό πακέτων δεδομένων για αποστολή πριν κλείσει η σύνδεση. Αυτό θα επιτρέψει τη βελτιστοποίηση του όγκου των δεδομένων που αποστέλλονται από τον κεντρικό υπολογιστή στον πελάτη χωρίς τον κίνδυνο υπέρβασης της προσωρινής μνήμης (τα δεδομένα αποστέλλονται ταχύτερα από ό, τι μπορεί να ληφθεί).

Άλλες δυνατότητες HTTP

HTTP Pipelining

Αυτή η δυνατότητα στην έκδοση HTTP / 1.1 επιτρέπει την αποστολή πολλαπλών αιτημάτων ταυτόχρονα στην ίδια υποδοχή, χωρίς να περιμένετε απάντηση. Ωστόσο, έχει αντικατασταθεί από το TCP Multiplexing στη νεότερη έκδοση του HTTP / 2.

Η βασική διαφορά είναι ότι παρόλο που και τα δύο επιτρέπουν πολλαπλά αιτήματα ταυτόχρονα στην ίδια υποδοχή, το Pipelining θα εξακολουθούσε να απαιτεί την αποστολή απαντήσεων με τη σειρά. Σημαίνει ότι εάν τα στοιχεία που ζητήθηκαν είναι στην παραγγελία (A, B, C), ο πελάτης δεν θα λάβει το στοιχείο C εάν το στοιχείο B δεν έχει παραδοθεί σωστά.

Στο Multiplexing, η παραγγελία δεν έχει σημασία. Αυτό θα επέτρεπε γρηγορότερο χρόνο παράδοσης.

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

Παράλληλες συνδέσεις

Ανοίξατε ποτέ μια ιστοσελίδα και είδατε ταυτόχρονα πολλά στοιχεία της ιστοσελίδας (γραμμή βίντεο, μικρογραφίες, κουμπιά);

Αυτό γίνεται εφικτό με τις παράλληλες συνδέσεις, όπου υπάρχουν ταυτόχρονα περισσότερες από μία συνδέσεις TCP, επιτρέποντας σε αυτά τα στοιχεία να φορτώνουν ταυτόχρονα αντί για το ένα μετά το άλλο.

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

συμπέρασμα

Με το μοντέλο OSI, μπορούμε εύκολα να κατανοήσουμε τη μεγάλη εικόνα των δικτύων και πώς αλληλεπιδρούν μεταξύ τους από υλικό σε λογισμικό.

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

Αυτό που έχω περάσει μέχρι στιγμής είναι το OSI 5-Layer Model, ενώ υπάρχει επίσης το OSI 7-Layer Model που ασχολείται επίσης με την αναγνώριση, τον έλεγχο ταυτότητας και την κρυπτογράφηση δεδομένων.

Αυτό είναι το μέρος 2 της σειράς εισαγωγής HTTP. Μπορείτε να διαβάσετε το πρώτο άρθρο σχετικά με τη σημασία των διακομιστών DNS στο Μέρος 1. Ας διερευνήσουμε τη δομή των αιτημάτων HTTP στη συνέχεια στο Μέρος 3!

Γεια! Είμαι ο Τσερ Ντον, επί του παρόντος παρακολουθώ ένα μεταπτυχιακό στην Επιστήμη δεδομένων. Είμαι ο CTO του Paralegal Bot και μπορείτε να βρείτε τον ιστότοπό μου παρακάτω. Ευχαριστώ για την ανάγνωση!

Συλλογή

Ποιοτικό περιεχόμενο Προσφέρουμε το καλύτερο περιεχόμενο για δυσνόητες έννοιες. Ήμασταν εκεί, και αισθανθήκαμε το ίδιο όπως εσείς… www.piqued.co