HTTP 2.0

From Wikipedia, the free encyclopedia
Jump to: navigation, search

HTTP 2.0 is the next planned version of the HTTP network protocol used by the World Wide Web. It is based on SPDY. HTTP 2.0 is being developed by the Hypertext Transfer Protocol Bis (httpbis) working group of the Internet Engineering Task Force.[1] HTTP 2.0 would be the first new version of the HTTP protocol since HTTP 1.1, which was standardized in RFC 2616 in 1999.

Background of HTTP 2.0[edit]

HTTP 2.0 provides an optimized transport for HTTP semantics. While still supporting all the core features of HTTP 1.1, HTTP 2.0 strives to be more efficient in several ways. It is not just HTTP 1.1 and HTTP 2.0 that users will have to choose between, but there are also other bindings of HTTP URLs. For example, header compressions and server pushes.[2]

HTTP 2.0 is not meant to immediately supersede or eliminate HTTP 1.1. The two versions are able to operate together at the same time, and will do so until 2.0 is accepted as the official standard. Currently, 2.0 is only a draft and will probably undergo significant changes before it is submitted to the Internet Engineering Steering Group for standardization. While 2.0 operates similarly to 1.1 and is used in a similar manner, there are many differences that allow it to provide more efficient and effective network communication.[3]

The first difference is that when a web page is loaded into a browser, the HTTP connection will remain open as long as the user stays on that page or website[citation needed]. This does occur in 1.1 as long as the connections are constant, but 2.0 will provide extra support for multiple-frame streams over the same TCP (Transmission Control Protocol) connection. This allows servers to send the most important data first, and the order of transmission of data will only matter within each individual stream. This allows users to open as many streams as they need over the same connection.

Another difference is that 2.0 allows the server to push even more information over an already established connection, what is most relevant for web pages. Websites that are efficient minimize the number of requests required to render an entire page by minifying (reducing the amount of code and packing smaller pieces of code into bundles, without reducing its ability to function) resources such as images and scripts. With the additional amount of data that 2.0 allows the server to push, the server will have the ability to tell the user about additional resources that are needed to render the page.[3]

Goals[edit]

The goals of HTTP 2.0 are to decrease the wait time spent on the internet loading web pages by "enabling full request and response multiplexing, minimize protocol overhead via efficient compression". However, to improve HTTP, requirements must be implanted such as new flow control, error handling, and upgrade mechanisms.

HTTP 2.0 leaves most of HTTP 1.1's high level syntax, such as methods, status codes, header fields, and URIs, the same. The element that is modified is how the data is framed and transported between the client and the server.[4]

Protocol[edit]

Goals for HTTP 2.0 are to improve the overall performance of the protocol while maintaining full backwards compatibility with the transaction semantics of HTTP 1.1. Performance improvements come from request-response multiplexing, header compression, and server push. It comes as an answer to the rise of SPDY, an HTTP compatible protocol launched by Google[5] and supported in Chrome, Opera, Firefox, Internet Explorer 11 and Amazon Silk browsers.[6]

The httpbis working group considered Google's SPDY protocol, Microsoft's HTTP Speed+Mobility proposal (SPDY based),[5] and Network-Friendly HTTP Upgrade.[7] In July 2012 Facebook provided feedback on each of the proposals and recommended HTTP 2.0 be based on SPDY.[8] The initial draft of HTTP 2.0 was published in November 2012 and is based on a straight copy of SPDY.[9]

HTTP 2.0 will make web applications faster and simpler by undoing many of the problems with HTTP 1.1. It creates "new opportunities to optimize our applications and improve performance." The "goal is to deliver the best performance! HTTP 2.0 enables a number of new optimizations our applications can leverage, which were previously not possible." Instead of modifying the application semantics of HTTP, HTTP 2.0 modifies how the "data is formatted and transported between the client and server." This complex process is hidden from applications, so they do not need to be modified.[4]

Hypertext Transfer Protocol Bis[edit]

HTTP 2.0 is being developed by the Hypertext Transfer Protocol Bis (httpbis), which is an active working group of the IETF, responsible for maintaining and developing the fundamental description for HTTP. Although HTTP 1.1 is a popular and successful Internet protocol, the Working Group plans on constructing a design of a new expression of HTTP's existing semantics in ordered, bi-directional streams in order to filter out current issues and make HTTP usage simpler. A series of goals have been put forth by the Working Group listing the expectations of HTTP 2.0, including defining how HTTP 2.0 interacts with HTTP 1.1 and preserving the present semantics of HTTP 1.1. The Working Group plans on presenting HTTP 2.0 to IESG for consideration as a Proposed Standard in November 2014.[2]

Httpbis Working Group posted a controversial document in February 2014 called Explicit Trusted Proxy in HTTP 2.0 that suggested HTTP 2.0 could get permission to decrypt user traffic. The proposal assumes Internet users will provide permission for sites to decipher their encoded data, claiming the end result is reduction in traffic and enhanced performance.[10]

SPDY and HTTP 2.0[edit]

SPDY (pronounced speedy) is a research project spearheaded by Google that is also an applicable protocol, designed for the transportation of information and other content on the web. SPDY primarily focuses on reducing latency. SPDY uses the same TCP pipe but different protocols to accomplish this reduction. The basic changes made to create SPDY include: "true request pipelining without FIFO restrictions, message framing mechanism to simplify client and server development, mandatory compression (including headers), priority scheduling, and even bi-directional communication" [11]

The biggest difference between HTTP and SPDY, is that each user action in SPDY is given a "stream ID", meaning there is a single TCP channel connecting the user to the server. SPDY splits requests into either control or data, which is a “parse binary protocol with two types of "frames".[11] Although SPDY has shown evident improvement from HTTP, with a new page load speedup ranging from 11.81% to 47.7%,[12] it does not entirely replace HTTP, but rather works in conjunction with it. SPDY might replace some parts of protocol, but still relies on HTTP for full function. This is where HTTP 2.0 comes in.

HTTP 2.0 uses SPDY as a jumping-off point; though SPDY is an improvement on HTTP, it does have some limitations. SPDY communicates separately with each host, which means that multiplexing happens only at one host at a time, no matter how many connections are open. This means that SPDY can only download things from one host at a time. The improvement HTTP 2.0 makes on this is that it allows multiplexing to happen at different hosts at the same time. This makes downloading multiple web pages or content from the Internet significantly faster.[13]

HTTP 2.0 also allows servers to push unsolicited representations to clients. In other protocols, such as SPDY, the client sends the host a request and then the host sends the client a response after being prompted to do so. Pushing allows servers to send representations to clients without an explicit request being made. One request from a client could prompt a server to send a response to that request but then also to send the client more responses that the server knows the client will need to process the initial request fully.[14]

Earlier, encryption method TLS 1.2 or greater was planned to be mandatory as part of the protocol.[15]However, this decision was canceled.[16]

Development Milestones[edit]

Status Milestone[1]
Done First HTTP 1.1 Revision Internet Draft
Done First HTTP Security Properties Internet Draft
Done Call for Proposals for HTTP 2.0
Done Working Group Last Call for HTTP 1.1 Revision
Done First WG draft of HTTP 2.0, based upon draft-mbelshe-httpbis-spdy-00
Held/Eliminated Working Group Last Call for HTTP Security Properties
Done Submit HTTP 1.1 Revision to IESG for consideration as a Proposed Standard
Done Working Group Last call for HTTP 2.0
Nov 2014 Submit HTTP 2.0 to IESG for consideration as a Proposed Standard

See also[edit]

References[edit]

  1. ^ a b "Hypertext Transfer Protocol Bis (httpbis) - Charter". IETF. 2012. 
  2. ^ a b "Hypertext Transfer Protocol Bis (httpbis)". Retrieved 19 March 2014. 
  3. ^ a b Pratt, Michael. "Apiux". Retrieved 19 March 2014. 
  4. ^ a b "Chapter 12. HTTP 2.0". O'Reilly Media, Inc. Retrieved 19 March 2014. 
  5. ^ a b Sebastian Anthony (March 28, 2012). "S&M vs. SPDY: Microsoft and Google battle over the future of HTTP 2.0". ExtremeTech. 
  6. ^ "Can the rise of SPDY threaten HTTP?". Restlet. 2011. 
  7. ^ Proposal for a Network-Friendly HTTP Upgrade, March 29, 2012
  8. ^ HTTP2 Expression of Interest, Doug Beaver, 15 Jul 2012
  9. ^ Dio Synodinos (2012-11-30). "HTTP 2.0 First Draft Published". InfoQ. 
  10. ^ Chirgwin, Richard. "Saving private spying: IETF Draft reveals crypto-busting proxy proposal". The Register. Retrieved 19 March 2014. 
  11. ^ a b Grigorik, Ilya. "Life beyond HTTP 1.1: Google's SPDY". 
  12. ^ "SPDY: An experimental protocol for a faster web". 
  13. ^ Belshe, M. "Hypertext Transfer Protocol Version 2". Retrieved 3/11/14. 
  14. ^ Belshe, M. "Hypertext Transfer Protocol Version 2, Server Push". Retrieved 3/8/14. 
  15. ^ Belshe, M. "Hypertext Transfer Protocol Version 2, Use of TLS Features". Retrieved 3/27/14. 
  16. ^ "HTTP 2.0 Github - Frequently Asked Questions". 

External links[edit]