Εισαγωγή στο HTTP / 2

Εισαγωγή

Το HTTP / 2 είναι η τελευταία αναθεώρηση του Πρωτόκολλο μεταφοράς υπερκειμένου ή HTTP [01], το οποίο χρησιμοποιείται από προγράμματα περιήγησης για επικοινωνία με διακομιστές ιστού. Προέρχεται από το παλαιότερο SPDY [02] πρωτόκολλο, το HTTP / 2 είναι η πρώτη νέα έκδοση του HTTP από την τυποποίηση του HTTP / 1.1 στο RFC 2068 το 1997.

Αναπτύχθηκε από την ομάδα εργασίας του Διαδικτύου Task Force (IETF) HTTP httpbis (όπου «bis» σημαίνει «δύο φορές»), και δημοσιεύεται ως RFC 7540 [03] Μάιος 2015.

Υιοθέτηση HTTP / 2

Το HTTP / 2 έχει υιοθετηθεί όλο και περισσότερο από ιστότοπους που λειτουργούν από την επίσημη δημοσίευσή του. Η διαδικτυακή υπηρεσία έρευνας W3Techs [04] σημειώνει ότι από τον Σεπτέμβριο του 2017 έως τον Σεπτέμβριο του 2018, η υποστήριξη HTTP / 2 αυξήθηκε από 16% σε 30% όλων των ιστοτόπων που παρακολουθούνταν.

Επιπλέον, τα μεγάλα προγράμματα περιήγησης (π.χ. Chrome, Firefox, Edge, κ.λπ.) παρέχουν ήδη πλήρη υποστήριξη για HTTP / 2 [05]. (Ορισμένοι ανέπτυξαν ακόμη και πειραματικές εφαρμογές πριν το HTTP / 2 γίνει αποδεκτό ως πρότυπο.)

Αυτή η ευρεία υιοθέτηση σημαίνει ότι το HTTP / 2 έχει τη δυνατότητα να γίνει το de facto πρωτόκολλο επικοινωνίας του Ιστού.

Κίνητρα πίσω από το HTTP / 2

Httpbis"ναύλωση [06] αναφέρει πολλά στοιχεία του HTTP / 1.1 που θα μπορούσαν να βελτιωθούν ως κίνητρο για HTTP / 2. Ωστόσο, ο πρωταρχικός στόχος της ομάδας ήταν να μειώσει την καθυστέρηση που έγινε αντιληπτή από τον τελικό χρήστη.

Για να γινει αυτο, httpbis σκέφτηκε να ελαχιστοποιήσει το εύρος ζώνης overhead μέσω συμπίεσης κεφαλίδας και επιθετικών τεχνικών προεκτύπωσης (π.χ. push server), ενώ ταυτόχρονα προσπαθεί να αντιμετωπίσει συστηματικά γνωστά ζητήματα απόδοσης, όπως συμφόρηση σύνδεσης και πρόβλημα αποκλεισμού Head-of-Line (HoL) [07].

Επιπλέον, το HTTP / 2 ήταν υποχρεωτικό να είναι συμβατό προς τα πίσω, πράγμα που σημαίνει ότι έπρεπε να χρησιμοποιήσει τα ίδια ρήματα μεθόδου, κωδικούς κατάστασης, URI και (περισσότερα) πεδία κεφαλίδας που βρέθηκαν στο HTTP / 1.1. Το HTTP / 2 έπρεπε επίσης να σχεδιαστεί για να υποστηρίζει κοινές περιπτώσεις χρήσης HTTP, όπως προγράμματα περιήγησης ιστού για επιτραπέζιους υπολογιστές και κινητά, διεπαφές προγραμματισμού, διακομιστές μεσολάβησης και τείχη προστασίας.

Για να διατηρηθεί αυτή η συμβατότητα, η ομάδα εργασίας ανέπτυξε έναν μηχανισμό διαπραγμάτευσης πρωτοκόλλου που θα επέτρεπε στους πελάτες και τους διακομιστές να επιλέξουν μεταξύ πρωτοκόλλων HTTP / 1.1, HTTP / 2 ή ακόμα και μη HTTP.

Τι νέο υπάρχει λοιπόν στο HTTP / 2;

Το HTTP / 2 εξακολουθεί να χρησιμοποιεί τα ίδια σχήματα URI και αριθμούς θύρας που χρησιμοποιούνται στο HTTP / 1.1 (π.χ. θύρα 80 για http URI και θύρα 443 για https URIs), αλλά πολλά πράγματα γίνονται διαφορετικά κάτω από την κουκούλα.

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

Το HTTP / 1.1 χρησιμοποιεί παραδοσιακά πακέτα να αντιπροσωπεύει δεδομένα δικτύου. Ένας πελάτης κατασκευάζει ένα πακέτο αιτήσεων με ένα ρήμα μεθόδου (π.χ. GET or POST), προσθήκη μιας λίστας κεφαλίδων που περιγράφουν τη σύνδεση και ενός σώματος που περιέχει δεδομένα εφαρμογής.

Κατά τη λήψη ενός πακέτου αιτήσεων, ένας διακομιστής HTTP / 1.1 αποκρίνεται με ένα παρόμοιο πακέτο απόκρισης που περιέχει τις ζητούμενες πληροφορίες. Ως αποτέλεσμα, κάθε κύκλος αιτήσεων και απόκρισης απαιτεί νέα σύνδεση.

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

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

Συμπίεση κεφαλίδας

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

Η συμπίεση κεφαλίδας, μαζί με τις ακόλουθες λειτουργίες που βελτιώνουν τις λειτουργίες HTTP / 2, μπορεί να είναι ιδιαίτερα χρήσιμες σε εφαρμογές για κινητά ή internet-of-things (IOT), όπου απαιτείται ελάχιστη χρήση δικτύου.

Ροές και πολυπλεξία

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

Τα τελικά σημεία μπορούν να παρεμβάλλουν καρέ από πολλές ροές μέσω της ίδιας σύνδεσης HTTP / 2, επιτρέποντας σε μία σύνδεση δικτύου να υποστηρίζει πολλαπλές ταυτόχρονες ανοιχτές ροές. Αυτή η διαδικασία ονομάζεται πολυπλεξίας [08].

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

Εξάρτηση και προτεραιότητα ροής

Η διαχείριση πολλαπλών ταυτόχρονων ροών σημαίνει ότι ορισμένες ροές θα υποβληθούν σε επεξεργασία πριν από άλλες. Το HTTP / 2 επιτρέπει στον προγραμματιστή (ή τον διαχειριστή) να τελειοποιήσει αυτήν τη συμπεριφορά με μια λειτουργία που ονομάζεται εξάρτηση ροής.

Μια ροή μπορεί να εξαρτάται από την πλήρη μεταφορά μιας άλλης ροής προτού αντιμετωπιστεί. Για παράδειγμα, σε έναν ιστότοπο όπου το κύριο περιεχόμενο μιας ιστοσελίδας πρέπει να φορτωθεί πριν από οποιεσδήποτε προτάσεις για παρόμοιο περιεχόμενο, το HTTP / 2 επιτρέπει τη δημιουργία ροής προτάσεων ως εξαρτώμενη από την κύρια ροή περιεχομένου.

Το HTTP / 2 υποστηρίζει επίσης προτεραιότητα ροής. Δηλαδή, σε κάθε ροή μπορεί να δοθεί προτεραιότητα για να υποδείξει πόσο επειγόντως τα τελικά σημεία πρέπει να διαθέσουν πόρους για να χειριστούν τα πλαίσια της ροής.

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

Server Push

Τέλος, το HTTP / 2 μπορεί να βελτιώσει την απόδοση μιας ιστοσελίδας παρέχοντας λειτουργίες «push». Ένας διακομιστής ιστού HTTP / 2 μπορεί να απαντήσει με δεδομένα για περισσότερα ερωτήματα από ό, τι είχε αρχικά ζητήσει ο πελάτης. Αυτό επιτρέπει στον διακομιστή να παρέχει δεδομένα που γνωρίζει ότι ένα πρόγραμμα περιήγησης ιστού θα χρειαστεί να αποδώσει μια σελίδα, χωρίς να περιμένει το πρόγραμμα περιήγησης να εξετάσει την πρώτη απόκριση και συνεπώς χωρίς τα γενικά έξοδα ενός πρόσθετου κύκλου αιτήσεων.

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

Φυσικά, η κατάχρηση της δυνατότητας push μπορεί επίσης να σπαταλήσει περισσότερο εύρος ζώνης από ό, τι είναι πραγματικά απαραίτητο. Για το λόγο αυτό, το HTTP / 2 επιτρέπει σε έναν πελάτη να ζητήσει την απενεργοποίηση της ώθησης διακομιστή κατά τη διαπραγμάτευση μιας σύνδεσης.

Ασφάλεια HTTP / 2

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

Πιο συγκεκριμένα, το HTTP / 2 ορίζεται τόσο για URI HTTP (δηλαδή χωρίς κρυπτογράφηση) όσο και για URI HTTPS (πάνω TLS κρυπτογραφημένα κανάλια). Αν και το ίδιο το πρότυπο δεν απαιτεί τη χρήση κρυπτογράφησης, όλες οι σημαντικές εφαρμογές του προγράμματος περιήγησης (π.χ. Firefox [09], Chrome, Safari, Opera, IE, Edge) έχουν αποφασίσει ότι θα το κάνουν αποκλειστικά υποστήριξη HTTP / 2 πάνω TLS.

Στην πραγματικότητα, τα προγράμματα περιήγησης διακρίνουν μεταξύ HTTP / 2 σαφούς κειμένου και HTTP / 2 έναντι κρυπτογραφημένου TLS ως δύο διαφορετικά πρωτόκολλα. Το κρυπτογραφημένο HTTP / 2 καλείται h2 και σαφές κείμενο h2c. Από αυτό το γράψιμο, κανένα από τα σημαντικότερα προγράμματα περιήγησης δεν υποστηρίζει h2c , Πράγμα που σημαίνει ότι TLS Η κρυπτογράφηση είναι υποχρεωτική για έναν ιστότοπο να εκμεταλλευτεί τα άλλα πλεονεκτήματα του HTTP / 2. Ως εκ τούτου, όταν το HTTP / 2 γίνεται το προεπιλεγμένο πρωτόκολλο δικτύου ιστού, οι κάτοχοι ιστοτόπων παλαιού τύπου που δεν έχουν ακόμη αναβαθμίσει σε SSL /TLS, θα έχει έντονα κίνητρα να το κάνει τελικά.

Συμπέρασμα

Η ευρεία υιοθέτηση του HTTP / 2 θα επιφέρει έναν νέο και βελτιωμένο Ιστό. Είναι ταχύτερο, χρειάζεται μικρότερο εύρος ζώνης και βοηθά τους ιστότοπους να παραμένουν ασφαλείς. Η γενική υιοθέτησή του είναι βέβαιο ότι θα κάνει τη συνολική εμπειρία χρήστη στο web πιο ομαλή και ασφαλέστερη.

Λάβετε ένα πιστοποιητικό σήμερα και εγγραφείτε μαζί μας στο μέλλον.

αναφορές

  1. Πρωτόκολλο HTTP
  2. Πρωτόκολλο SPDY
  3. Προδιαγραφή HTTP / 2
  4. Έρευνα υιοθέτησης W3Techs HTTP / 2
  5. Υιοθέτηση HTTP / 2 στα προγράμματα περιήγησης
  6. Χάρτη httpbis
  7. Αποκλεισμός HOL
  8. Πολυπλεξία
  9. Firefox σε HTTP / 2

Εγγραφείτε στο ενημερωτικό δελτίο του SSL.com

Μην χάσετε νέα άρθρα και ενημερώσεις από το SSL.com

Μείνετε ενημερωμένοι και ασφαλείς

SSL.com είναι παγκόσμιος ηγέτης στον τομέα της κυβερνοασφάλειας, PKI και ψηφιακά πιστοποιητικά. Εγγραφείτε για να λαμβάνετε τα πιο πρόσφατα νέα του κλάδου, συμβουλές και ανακοινώσεις προϊόντων από SSL.com.

Θα θέλαμε τα σχόλιά σας

Συμμετάσχετε στην έρευνά μας και πείτε μας τις σκέψεις σας για την πρόσφατη αγορά σας.