HTTP/2

Http is an application layer protocol designed for client-server communication and can be made analogy as a kind of mail service simply with the following features:
  • Request line; identifies the resource called.
  • Http header; contains operating information about the message such as destination, content type and etc. in the form of key-value pairs.
  • Payload or body; is the part that the actual message is contained.
  • HTTP protocol is comprised of commands/verbs such as GET, POST, PUT..
GET https://www.google.com/ HTTP/1.1
Host: www.google.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) Chrome/71.0.3578.98 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: SID=awcwAWJ-Py1UHfnKSWSzREE01k4qY45amv6..



History of HTTP by Versions

  • The initial version of HTTP is 0.9 which is released in 1991.
  • HTTP 1.0 is released in 1996.
  • HTTP 1.1 is released in 1997.
  • In 2015, the specification of HTTP/2 as a revised version was published by IETF.


Drawbacks of HTTP 1.1

  • Needs multiple connections for concurrency
  • Does not compress request and response headers, that means unnecessary network traffic


HTTP/2

  • The main goals of HTTP/2 are simplicity and performance inspired by the experimental protocol SPDY which is released by Google in 2009.
  • HTTP/2 is an extension to the previous HTTP standards, not replacing of HTTP methods, status codes and etc.
  • HTTP/2 enables a more efficient use of network resources and a reduced perception of latency by introducing 
    • header field compression 
    • server push
    • multiple concurrent exchanges on the same connection
  • HTTP/2 is more friendly to the network, because fewer TCP connections can be used in comparison to HTTP/1.x.


Further readings:

https://www.rfc-editor.org/rfc/beta/errata/RFC7540.html
https://kinsta.com/learn/what-is-http2/
https://hpbn.co/http2/

Yorumlar

Popular

Dependency Injection In Java and CDI

Configuring Spring Boot Application with Maven

Servlet