Ανατομία αλληλεπίδρασης HTTP Cliet GET /documet.html TCP Server Πρωτόκολλο HTTP cache Cliet Server cache 2 Hypertext Trasport Protocol (HTTP) Τι είναι το HTTP; the set of commads uderstood by a web server ad set from a browser some HTTP commads (your browser seds these iterally): GET fileame : dowload POST fileame : sed a web form respose PUT fileame : upload simulatig a browser with a termial widow: HyperText Trasfer Protocol: Πρωτόκολλο αιτήματος-απάντησης (request-reply). Πρωτόκολλο εφαρμογών (όπως τα ftp και telet). Επιλήσμον (stateless) - σε αντίθεση με τα ftp και telet. Εντολές: GET fileame : dowload POST fileame : sed a web form respose PUT fileame : upload Πως χρησιμοποιείται το HTTP; Μεταφέρει εντολές από τον πλοηγό στον εξυπηρετητή Μεταφέρει πληροφορίες σε πολλαπλούς μορφότυπους, γλώσσες και συμβολοσειρές. Ο μορφότυπος των οντοτήτων που μεταφέρει το ΗΤΤP δεν αφορά το πρωτόκολλο. Η περιγραφή του μορφότυπου βασίζεται στο πρότυπο ΜΙΜΕ. 3 4
What is HTTP? Iteret media ("MIME") types A request-reply protocol (Πρωτόκολλο αιτήματος-απάντησης). A applicatio-layer protocol (πρωτόκολλο εφαρμογών). Α stateless protocol (επιλήσμον) - i cotrast to ftp, telet. Mai istructios: GET fileame : dowload POST fileame : sed a web form respose PUT fileame : upload HTTP fuctioality: Trasfers istructios from user aget to server Trasfers iformatio etities ecoded i multiple formats (μορφότυπους), laguages ad fots. The format of trasferred etities is ot a cocer for the protocol; the descriptio of the format is doe accordig to the MIME stadard. MIME (Multipurpose Iteret Mail Extesios) is a Iteret stadard for describig message cotet types to allow for: textual message bodies i character sets other tha US-ASCII, a extesible set of differet formats for o-textual message bodies, multi-part message bodies, ad textual header iformatio i character sets other tha US-ASCII MIME messages ca cotai text, images, audio, video, ad other applicatio-specific data. Official MIME ifo is provided by the Iteret Egieerig Task Force (IETF) i RFC2046 Lists of top-level MIME types: text, image, audio, video, applicatio, ad multipart ad message 5 6 Basic HTTP properties Based o addressig resources accordig to the URI specificatio Supports exchage of requests-replies: requests set by user agets ad trigger replies by web servers; trasactios are ot iitiated by web servers. Stateless (επιλήσμον): Cliets ad servers do ot maitai data about their HTTP iteractio across successive trasactios (performace reasos). I practice, the maitai state iformatio but this is ot part of the protocol. Carries metadata for iformatio resources: Describig resources trasferred via HTTP messages, such as: the size of a file, its format, its time-stamp 8
HTTP: History 3/1990 CERN itroduces the Web 1/1992 HTTP/0.9 specificatio 12/1992 Proposal for addig ΜΙΜΕ to HTTP 3/1993 First draft of HTTP/1.0 6/1993 HTML (specificatio 1.0) 10/1993 URL specificatio 11/1993 Secod draft for HTTP/1.0 3/1994 Adoptio of URI specificatio i the WWW 5/1996 HTTP/1.0 RFC 1945 1/1997 Proposal of HTTP/1.1, RFC 2068 6/1999 Draft specificatio HTTP/1.1, RFC 2616 2014 RFC7230 obsoletes RFC2616 5/2015 HTTP/2, RFC7540 9 ΗΤΤP/2 HTTP/2 is the first ew versio of HTTP sice HTTP 1.1 Workig Group preseted HTTP/2 to IETF s Iteret Egieerig Steerig Group for cosideratio as a Proposed Stadard i December 2014. The stadardizatio effort was supported by Chrome, Opera, Firefox, Iteret Explorer 11, Safari, Amazo Silk ad Edge browsers. IESG approved it to publish as Proposed Stadard: Feb. 2015 HTTP/2 specificatio published as RFC 7540: May 2015. Most major browsers added HTTP/2 support by ed of 2015. 10 HTTP Termiology HTTP Messages HTTP messages Etities (Οντότητες) Resources (Πόροι) User aget (Διεκπεραιωτής χρήστη) Sequeces of bytes set through TCP/IP. Two types: requests ad replies: Request messages start with a request lie. Reply messages start with a status lie. Each messages has zero or more headers, which are separated from the optio message body with a CR or LF character. Sytax of requests: Request-Lie Geeral/Request/Etity Header(s) CRLF Optioal Message Body 11 12
Example of cliet request message GET /motd HTTP/1.0 Date: Wed, 22 Mar 2000 08:09:01 GMT Pragma: No-cache From: mdd@ucy.ac.cy User-Aget: Mozilla/4.03 Cotet-Legth: 23 Allow: GET, HEAD, PUT CRLF Request lie Geeral headers: foud i both request ad reply messages Request headers Επικεφαλίδες οντότητας 13 HTTP Replies Sytax: Status-Lie Geeral/Request/Etity Header(s) CRLF Optioal Message Body Example: HTTP/1.0 200 ΟΚ Date: Tue, 4 Jul, 1996, 19:57:05 GMT Server: Netscape-Eterprise/3.5.1 Cotet-legth: 23 CRLF Welcome to Comer s VAX 14 HTTP Etities HTTP Traffic Capture The resources trasferred iside HTTP request or reply messages. Comprise: Etity Headers (Επικεφαλίδες οντότητας) Etity body (Προαιρετικό περιεχόμενο οντότητας) LiveHTTPHeaders - plugi του FireFox Istall ad watch the HTTP traffic of your Web browser. Correspod to the most importat part of the HTTP message as they carry the cotets of the message (although may HTTP messages are exchaged just for their cotrol iformatio). 15 16
HTTP/1.0 Methods A HTTP method specifies the actios that should be take upo the resource that is defied by the URI of the HTTP request lie. HTTP/1.0 specified three methods (commads) oly: GET HEAD POST Some other methods were implemeted by some browsers: PUT, DELETE, LINK και UNLINK. The server which accepts the request, executes the requested commad HTTP/1.0: GET GET Fid ad retrieve the resource specified by the URI The URI ca cotai argumets (ορίσματα) for submittig iput data to gateway programs: GET /foo/bar.html?x=bar&bam=baz Α GET request ca be accompaied by a header that modifies the request (τροποποιητική επικεφαλίδα), makig ito a coditioal GET: GET /foo/bar.html ΗΤΤP/1.0 If-Modified-Sice: Su, 12 Nov 2000 11:12:23 GMT 17 18 HTTP/1.0: HEAD Example of HEAD request Παρόμοια με την GET, αλλά ζητά την επιστροφή μόνο μεταδεδομένων για κάποιον πόρο. Ζητάει από έναν εξυπηρετητή να στείλει τις επικεφαλίδες απάντησης για κάποιο αρχείο στο διαθέτη, αλλά όχι και τα περιεχόμενα του αρχείου. Χρησιμοποιείται από προγράμματα τα οποία εκτελούν αυτόματες αναζητήσεις για κείμενα στο Ιστό. Η μέθοδος αυτή είναι ένας γρήγορος τρόπος για να βλέπει κανείς αν ένα αρχείο ή πρόγραμμα gateway είναι πράγματι παρόν στον Ιστό, για την εύρεση γενικών πληροφοριών σχετικά με το αρχείο (τον ΜΙΜΕ τύπο του, την ημερομηνία αλλαγής του κλπ). HEAD /foo.html HTTP/1.0 HTTP/1.0 200 OK Cotet-Legth: 3219 Last-Modified: Su, 12 Nov 2000 11:12:23 GMT Cotet-Type: text/html 19 20
HTTP POST HTTP/1.1 Methods POST commad is used to update a resource or to provide iput data to a program ruig o the applicatio tier. The body of POST messages cotais the data that are set by the cliet to the server. This method is ot safe, as it ca chage the cotets of a iformatio resource. Also, it is ot idempotet (μηδενοδύναμη). POST /foo/bar.cfm HTTP/1.0 Cotet-Legth: 143 <etity body> POST /search.cgi HTTP/1.0 Cotet-Legth: 34 CRLF Query iktios Db greek-architecture -- obligatory use here GET: retrieve whatever iformatio (i the form of a etity) is idetified by the Request-URI. If the Request-URI refers to a data-producig process, it is the produced data which shall be retured as the etity i the respose ad ot the source text of the process, uless that text happes to be the output of the process. HEAD: idetical to GET except that the server MUST NOT retur a message-body i the respose POST: used to request that the origi server accept the etity eclosed i the request as a ew subordiate of the resource idetified by the Request-URI i the Request-Lie. OPTIONS: a request for iformatio about the commuicatio optios available o the request/respose chai idetified by the Request-URI. This method allows the cliet to determie the optios ad/or requiremets associated with a resource, or the capabilities of a server, without implyig a resource actio or iitiatig a resource retrieval 21 22 HTTP/1.1 Methods HTTP Headers PUT: requests that the eclosed etity be stored uder the supplied Request- URI. If the Request-URI refers to a already existig resource, the eclosed etity SHOULD be cosidered as a modified versio of the oe residig o the origi server DELETE: requests that the origi server delete the resource idetified by the Request-URI. This method MAY be overridde by huma itervetio (or other meas) o the origi server. TRACE: used to ivoke a remote, applicatio-layer loop- back of the request message. The fial recipiet of the request SHOULD reflect the message received back to the cliet as the etity-body of a 200 (OK) respose. CONNECT: starts two-way commuicatios with the requested resource. It ca be used to ope a tuel. For example, the CONNECT method ca be used to access websites that use SSL (HTTPS). The cliet asks a HTTP Proxy server to tuel the TCP coectio to the desired destiatio. The server the proceeds to make the coectio o behalf of the cliet. Oce the coectio has bee established by the server, the Proxy server cotiues to proxy the TCP stream to ad from the cliet. Comprise ASCII characters, ad are typically structured as ame: value pairs. Very importat role, as they represet the mai mechaism for adaptig the maagemet of HTTP requests. The itroductio of ew headers i the protocol is allowed Use: Providig metadata about a particular resource. Parameterisatio of requests or replies. Specify if a aswer ca be cached or how to decode it. Protocol extesio. 23 24
Use of HTTP headers i HTTP messages A HTTP message may have a arbitrary umber of headers - each is followed by a CR ad LF character to be separated from the ext. Most headers are optioal. Web ifrastructure modules ca igore the optioal headers. Some headers are obligatory for some request or reply messages. Header sytax: <ame>: <value> (,<value>)* E.g. Date: Thu, 23 Dec 1999 08:12:31 GMT Accept-Laguage: de-ch, e-us HTTP Header hierarchy Geeral: use i requests ad replies Requests: used to declare preferece i reply format, to provide additioal iformatio about the request, or to specify some costrait o the server that will serve the request. Replies: used i reply messages to provide further iformatio or metadata to the cliet, or to raise a request to the cliet for sedig more iformatio. Etity headers: cotai iformatio about the etity carried by the message. The sequece of appearace of headers is ot importat - usually we put first geeral headers, the request or reply headers ad last the etity headers. 25 26 Geeral Headers Request headers They are about the message ad ot its cotets. HTTP/1.0 defied oly two geeral headers: Date: timestamp with the date/time of message creatio. Pragma: allows to defie istructios to be set to the recipiet of the message. Provide a way for directig Web modules to behave i a certai way whe maagig a request or a reply. The protocol does ot eforce obediece to these istructios, just their trasmissio. HTTP/1.0 specified oly oe value for pragma: o-cache Authorizatio: used by the user aget to submit its credetials (διαπιστευτήρια) required for accessig a certai resource: Authorizatio: Basic YXZpYZRpS29IDizM1NA== Basic refers to a simple autheticatio scheme (βασικό σχήμα ταυτοποίησης) usig userid (ταυτότητα χρήστη) ad password (κωδικό), ecoded i Base64 format. From: allows the user-aget to aouce its email address for idetificatio purposes (primarily used by well-behavig crawlers). 27 28
Request headers (ctd ) If-Modified-Sice: this is a example of a coditioal header, which adapts the way the request will be treated. Eg: GET /foo.html HTTP/1.0 If-Modified-Sice: Su, 21 May 2000 07:00:25 GMT Referer: allows the cliet to iclude i its request the URI of the resource wherefrom the requested URI was extracted. Eg: GET /Disasters/worldglace.html HTTP/1.0 Referer: http://www.c.com Potetial dager: revealig private or sesitive data. Usig local cache I case a requested file has ot bee modified after the date set i the If-modified-sice header, the server will retur: HTTP/1.0 304 Not Modified Date: Thu, 03 Aug 1996 16:04:09 GMT Server: NCSA/1..3 MIME-versio: 1.0 The, the user-aget will deliver to its ed-user the versio stored i its cache. 29 30 Request headers (ctd ) Reply headers User-Aget: provides iformatio about the software ruig at the cliet, its versio ad other characteristics of the computer upo which it rus Π.χ.: User-Aget: Mozilla/4.03 (Macitosh; I; 68K, Nav) Locatio: eables the server to have the received request redirected to aother URI. Server: provides iformatio about the server (type, versio etc). WWW-Autheticate: allows the server to raise a request for access credetials by the user-aget, before providig access to the requested resource. It is used for basic access cotrol, ad usually carried iside a 404 Uauthorized reply. Eg: WWW-Autheticate: Basic realm= ChaseChem 31 32
Reply headers (ctd) Also used, without beig specified by the protocol: Retry-After: (date) or (secods) [Set-]Cookie: Part_Number="Rocket_Laucher_0001"; Versio="1"; Path="/acme Title: (title) Etity headers Allow: specified the HTTP commads that are accepted to be executed o a particular resource. E.g., if some origi server receives a request for a o-allowed method, it ca reply to the cliet iformig it ένα αίτημα για μη εξουσιοδοτημένη μέθοδο, μπορεί να απαντήσει ενημερώνοντας τον πελάτη για τις μεθόδους που είναι αποδεκτές για το συγκεκριμένο αίτημα. Σε μήνυμα αιτήματος PUT, με το Allow ο πελάτης μπορεί να καθορίσει τι μεθόδους επιτρέπει να εκτελούνται στον πόρο που δημιουργεί: PUT /foo.html HTTP/1.0 Allow: HEAD, GET, PUT 33 Cotet-Type: προσδιορίζει τον μορφότυπο περιεχόμενου (media type) της οντότητας. Π.χ.: POST /chat/chatroom.cgi HTTP/1.0 User-Aget: Mozilla/3.0C Cotet-Type: applicatio/x-www-form-urlecoded 34 Επικεφαλίδες Οντοτήτων (συνέχεια) Cotet-Ecodig: προσδιορίζει πώς έχει κωδικοποιηθεί το περιεχόμενο της οντότητας και πώς θα πρέπει να αποκωδικοποιηθεί για να πάρουμε την οντότητα στο μορφότυπο που καθορίζεται από το Cotet-Type. Π.χ.: Cotet-Ecodig: x-gzip Cotet-Legth: Προσδιορίζει το μέγεθος της μεταφερόμενης οντότητας σε χαρακτήρες. Χρησιμοποιείται για να επικυρώνουμε αν μια οντότητα έχει φθάσει στην ολότητά της, και σαν επικύρωση ότι μια απομνημονευμένη οντότητα δεν διαφέρει από την οντότητα στην τρέχουσα μορφή της. Αποφεύγεται η χρήση της με την μεταφορά δυναμικού περιεχομένου, για λόγους επίδοσης. Επικεφαλίδες Οντοτήτων (συνέχεια) Expires: χρησιμοποιείται για τον προσδιορισμό της χρονικής στιγμής μετά από την οποία ένας πόρος μπορεί να θεωρηθεί ως λήξας. Π.χ.: HTTP/1.0 200 OK Server: Microsoft-IIS/4.0 Date: Mo, 04 Dec 2000 18:16:45 GMT Expires: Tue, 05 Dec 2000 16:00:00 GMT Last-Modified: καθορίζει τη χρονική στιγμή της τελευταίας ενημέρωσης του μεταφερόμενου πόρου. 35 36
Κλάσεις Απαντήσεων HTTP/1.0 Οικογένεια κωδικών με πέντε «τύπους»: 1xx: iformatioal 2xx: successful, e.g. 200 OK 3xx: redirectio 301 Moved Permaetly 304 Not Modified 4xx: Cliet Error 400 Bad Request 401 Uauthorized 403 Forbidde 404 Not Foud 5xx: Server Error 501 Not Implemeted 503 Service Uavailable 37 HTTP error codes whe somethig goes wrog, the web server returs a special "error code" umber to the browser, possibly followed by a HTML documet commo error codes: Number 200 OK Meaig 301-303 page has moved (permaetly or 403 temporarily) you are forbidde to access this page 404 page ot foud 500 iteral server error complete list 38 Η ιστορία ενός κλίκ Απόκριση HTTP Υποθέσατε: Είστε στο: www.yahoo.com/idex.html Επιλέγετε το: www.grippy.org/mattmarg/ Ο πλοηγός χρησιμοποιεί το DNS => IP addr για www.grippy.org Ανοίγει σύνδεση TCP με την IP διεύθυνση του www.grippy.org Στέλνει το ακόλουθο αίτημα: get /mattmarg/ HTTP/1.0 User-Aget: Mozilla/2.0 (Macitosh; I; PPC) Accept: text/html; */* Cookie: ame = value Referer: http://www.yahoo.com/idex.html Host: www.grippy.org Expires: If-modified-sice:... Request Request Headers Oe click => several resposes HTTP1.0: ew TCP coectio for each page elemet HTTP1.1: KeepAlive - several requests/coectio HTTP/1.0 200 Foud Date: Mo, 10 Feb 1997 23:48:22 GMT Server: Apache/1.1.1 HotWired/1.0 Cotet-type: text/html Last-Modified: Tues, 11 Feb 1999 22:45:55 GMT Status Respose 1st header Image/jpeg,... 39 40
Σύνδεση ΗΤΤP 1.0 Μία σύνδεση HTTP αποτελείται από τα ακόλουθα τέσσερα στάδια: 1. Eναρξη της σύνδεσης: ο πελάτης επικοινωνεί με τον εξυπηρετητή σε ένα URL και σε αριθμό πύλης (port umber), τα οποία καθορίζονται από το URL (κατά συνθήκη τιμή του αριθμού πύλης το 80). 2. Πραγματοποίηση της σύνδεσης: ο πελάτης στέλνει ένα μήνυμα στον εξυπηρετητή, ζητώντας εξυπηρέτηση και καθορίζοντας την HTTP-μέθοδο της δοσοληψίας (συνήθως GET ή POST). 3. Αποστολή απάντησης: επικεφαλίδα (περιγραφή κατάστασης της δοσοληψίας, περιγραφή δεδομένων) και δεδομένα. 4. Κλείσιμο της σύνδεσης. Ενσωμάτωση Εικόνων Ένα υπερκείμενο στον Ιστό αποθηκεύεται συνήθως σε περισσότερα του ενός αρχεία (ίσως και κόμβους): το κείμενο σε ένα αρχείο και κάθε εικόνα σε διαφορετικό αρχείο. Ωστόσο, όταν επιλέξουμε να ανοίξουμε ένα αρχείο, στο παράθυρο του πλοηγού μας εμφανίζεται ολόκληρη η πληροφορία μαζί, μορφοποιημένη με τον κατάλληλο τρόπο. Η αναζήτηση και εμφάνιση ολόκληρης της πληροφορίας γίνεται υπ ευθύνη του πελάτη-πλοηγό (πώς;). Ο εξυπηρετητής «βλέπει» απλά μιά σειρά από αιτήματα, πρώτα για το αρχείο ΗΤΜL και στη συνέχεια για κάθε ενσωματωμένη εικόνα. Η αυτόματη αναζήτηση των ενσωματωμένων εικόνων, ωστόσο, έχει συνέπειες για τον εξυπηρετητή (υπερφόρτωση). 41 42 Ταυτόχρονη Εξυπηρέτηση Πολλών Αιτημάτων Οι εξυπηρετητές Ιστού είναι σχεδιασμένοι ώστε να μπορούν να εξυπηρετήσουν ταυτόχρονα, πολλές ταυτόχρονες αιτήσεις HTTP. Αυτό επιτυγχάνεται με διάφορους τρόπους: Με κλωνοποίηση ενός νέου αντιγράφου του httpd προγράμματος για κάθε νέα αίτηση. Κάθε κλώνος του httpd διαχειρίζεται ακριβώς μιά αίτηση. Με χρήση πολυνηματικής εκτέλεσης (mutlithreadig): το πρόγραμμα httpd έχει πολλά νήματα εκτέλεσης. Κάθε νήμα διαχειρίζεται μια αίτηση. Το πρόγραμμα δίνει τον έλεγχο σε άλλο νήμα όταν το εκτελούμενο νήμα πρέπει να περιμένει κάποια εξυπηρέτηση από το Λειτουργικό Σύστημα. Με κατανομή της εργασίας σε πολλά υποβοηθητικά προγράμματα: το httpd απλά δέχεται αιτήσεις και τις κατανέμει σε άλλα προγράμματα για περαιτέρω εξυπηρέτηση. Πολλαπλοί Εξυπηρετητές σε έναν κόμβο Σε έναν κόμβο του Διαδικτύου μπορούν να τρέχουν περισσότεροι του ενός εξυπηρετητές Ιστού, εφόσον χρησιμοποιούν διαφορετική πύλη επικοινωνίας (port). Η κατά συνθήκη πύλη επικοινωνίας μέσω HTTP είναι η 80, ενώ πύλες διαθέσιμες στους χρήστες αριθμούν από 1025 και πάνω. Π.χ.: http://www.server.org/iter.html http://www.server.org:8080/iter.html http://www.server.org:8081/iter.html Ορισμένες φορές είναι επιθυμητό να τρέχουν περισσότεροι του ενός εξυπηρετητές σε έναν κόμβο, αλλά κάθε διαθέτης να έχει διαφορετικό όνομα κόμβου (host ame). Αυτό γίνεται με την υποστήριξη του Λειτουργικού Συστήματος στην παροχή Virtual Host Support (υποστήριξη εικονικού κόμβου) και την αντιστοίχιση περισσοτέρων της μίας διευθύνσεων IP στο ίδιο μηχάνημα. 43 44
Τα μειονεκτήματα του ΗΤΤP 1.0 Επίμονο HTTP (Persistet HTTP) Aπλό μοντέλο αιτημάτων/απαντήσεων, το οποίο οδηγεί σε προβλήματα: Επίδοσης και Απόδοσης (performace & efficiecy) Υλοποίησης εφαρμογών που απαιτούν διαδοχικές αλληλεπιδράσεις πελάτη-εξυπηρετητή. Πολύ φτωχά μοντέλα συνέπειας κρυφής μνήμης (cache cosistecy) Δυσκολία συνύπαρξης εξυπηρετητών με διαφορετικά ονόματα πεδίου, πάνω στην ίδια διεύθυνση IP. Αυτό που είναι δυνατόν, είναι η χρήση virtual hosts δηλαδή η ύπαρξη περισσοτέρων εξυπηρετητών WWW στην ίδια μηχανή, όπου ο κάθε εξυπηρετητής έχει διαφορετικό όνομα πεδίου και IP address. Δυσκολία υπολογισμού μεγέθους περιεχομένου (cotet-legths) Διακοπή συνόδου ισοδυναμεί με απώλεια δεδομένων δεν υπάρχει η δυνατότητα τεμαχισμού της ανακτούμενης πληροφορίας (chukig) Ορισμένα από τα προβλήματα του HTTP/1.0 αντιμετωπίσθηκαν με την υιοθέτηση του Επίμονου HTTP Persistet HTTP (P-HTTP), σύμφωνα με το οποίο, μετά από μια δοσοληψία HTTP, η αντίστοιχη TCP σύνδεση δεν διακόπτεται, ούτως ώστε τυχόντα αιτήματα που έπονται από τον πελάτη προς τον διαθέτη να εξυπηρετηθούν µέσα από αυτή. Στο HTTP/1.0 με χρήση επικεφαλίδας: Coectio: Keep-Alive Τι πετυχαίνει το P-HTTP προσφέρει βελτιώσεις: Κυρίως στην επίδοση του εξυπηρετητή παρά στο δίκτυο. Επιτρέπει την διασωλήνωση (pipeliig) πολλών αιτημάτων στην ίδια σύνοδο TCP Δυσκολίες: how does a cliet kow whe documet is retured? whe does the coectio get dropped? idle timeouts o server side cliet drops coectios server eeds to reclaim resources 45 46 ΗΤΤP/2 Accordig to W3Techs, as of December 2015 5.6% of the top 10 millio websites supported HTTP/2 Negotiatio mechaism allows cliets ad servers to elect to use HTTP 1.1, 2.0, or potetially other o-http protocols. Maitai high-level compatibility with HTTP 1.1 (for example with methods, status codes, ad URIs, ad most header fields) Decrease latecy to improve page load speed i web browsers by cosiderig: Data compressio of HTTP headers Server push techologies Pipeliig of requests Fixig the head-of-lie blockig problem i HTTP 1 Multiplexig multiple requests over a sigle TCP coectio Support commo existig use cases of HTTP, such as desktop web browsers, mobile web browsers, web APIs, web servers at various scales, proxy servers, reverse proxy servers, firewalls, ad cotet delivery etworks 47