Sobes.tech
Senior

Key differences between HTTP/1.1 and HTTP/2?

sobes.tech AI

Answer from AI

Key differences between HTTP/1.1 and HTTP/2:

  • Multiplexing: HTTP/2 allows multiple requests and responses to be sent simultaneously over a single TCP connection, whereas HTTP/1.1 is limited to sequential processing of requests (although pipelining exists, it is rarely used due to blocking issues).

  • Binary protocol: HTTP/2 uses a binary format for data transfer, which simplifies parsing and increases efficiency, unlike the text-based format of HTTP/1.1.

  • Header compression: HTTP/2 employs HPACK for header compression, reducing the amount of data transmitted and speeding up transfer.

  • Request prioritization: HTTP/2 supports request priorities, allowing the client to specify the importance of requests to optimize loading.

  • Server Push: HTTP/2 enables the server to proactively send resources to the client without explicit requests.

Example of using HTTP/2 in Go (client):

package main

import (
    "crypto/tls"
    "fmt"
    "net/http"
)

func main() {
    client := &http.Client{
        Transport: &http.Transport{
            TLSClientConfig: &tls.Config{
                NextProtos: []string{"h2", "http/1.1"},
            },
        },
    }

    resp, err := client.Get("https://example.com")
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    fmt.Println("Protocol used:", resp.Proto) // HTTP/2.0 or HTTP/1.1
}

Thus, HTTP/2 significantly improves performance and efficiency compared to HTTP/1.1.