Sobes.tech
Senior

What is the difference between HTTP/1.1 and HTTP/2?

sobes.tech AI

Answer from AI

Main differences between HTTP/2 and HTTP/1.1:

  • Multiplexing requests: HTTP/2 allows sending multiple requests and receiving responses over a single TCP connection simultaneously, without blocking, unlike HTTP/1.1, where requests are processed sequentially or with limitations.

  • Binary protocol: HTTP/2 uses a binary data format, which simplifies parsing and increases efficiency, whereas HTTP/1.1 is a text-based protocol.

  • Header compression: HTTP/2 employs efficient header compression (HPACK), reducing the amount of data transmitted, while in HTTP/1.1 headers are sent in full each time.

  • Stream prioritization: HTTP/2 allows clients to specify priorities for requests, optimizing resource loading.

  • Server push: HTTP/2 supports the server proactively sending resources to the client without explicit requests.

Example of usage in Go (built-in support for HTTP/2 in net/http):

package main

import (
    "fmt"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, HTTP/2!")
}

func main() {
    http.HandleFunc("/", handler)
    // Running server with TLS automatically enables HTTP/2
    http.ListenAndServeTLS(":8443", "server.crt", "server.key", nil)
}

Thus, HTTP/2 significantly improves the performance and efficiency of web communications compared to HTTP/1.1.