Перед любым HTTP-запросом браузер должен преобразовать доменное имя в IP-адрес:
# Пример DNS-запроса (в реальности используется UDP)
nslookup google.com
Браузер устанавливает TCP-соединение с сервером (обычно на порт 443 для HTTPS):
Клиент Сервер
|---- SYN ------>|
|<-- SYN-ACK ----|
|---- ACK ------>|
Установка безопасного соединения:
Клиент Сервер
|---- Client Hello ------------>|
|<--- Server Hello, Certificate-|
|---- Key Exchange ------------>|
|<--- Finished ----------------|
|---- Finished ---------------->|
После установки соединения отправляется HTTP-запрос:
GET / HTTP/1.1
Host: google.com
User-Agent: Mozilla/5.0
Accept: text/html,application/xhtml+xml
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Encoding: gzip
Cache-Control: private, max-age=0
Date: Mon, 23 Jan 2023 12:34:56 GMT
Server: gws
Transfer-Encoding: chunked
<!DOCTYPE html><html>...</html>
Google часто использует перенаправление с http:// на https:// и между региональными доменами:
HTTP/1.1 301 Moved Permanently
Location: https://www.google.com/
Сервер может отправлять заголовок для принудительного HTTPS:
Strict-Transport-Security: max-age=31536000; includeSubDomains
Современные версии Google используют HTTP/2:
Важные заголовки кэширования:
Cache-Control: no-cache, max-age=0
ETag: "abc123"
Для полной загрузки страницы браузер делает дополнительные запросы:
// Пример динамического запроса
fetch('https://www.google.com/complete/search?q=hello')
.then(response => response.json())
.then(data => console.log(data));
При использовании HTTP/1.1 с keep-alive соединение остается открытым для последующих запросов. В HTTP/2 соединение мультиплексируется.
Connection: keep-alive
Keep-Alive: timeout=5, max=1000
при вводе google.com браузер выполняет сложную последовательность действий: DNS-запрос, TCP+TLS handshake, HTTP-запрос/ответ, возможные перенаправления, загрузку дополнительных ресурсов. Современные версии используют HTTP/2 и HTTPS по умолчанию, что делает процесс безопаснее и эффективнее.