serbinСтремящайся
- Изменено
Когда мы вводим URL-адрес в адресную строку браузера и нажимаем Enter браузер не посылает серверу запрос сразу дожидаясь что показать в ответ. Все немного сложнее.
Мы вводим URL-адрес в адресную строку браузера и нажимаем Enter, происходит следующее:
Браузер разбивает URL-адрес на несколько частей: протокол, доменное имя, порт, путь к ресурсу и параметры запроса.
Браузер проверяет кэш DNS, чтобы определить IP-адрес сервера, на котором расположен сайт. Если DNS-кэш не содержит записи об IP-адресе сайта, браузер отправляет запрос DNS-серверу и получает ответ.
Браузер устанавливает соединение с сервером, используя протокол, указанный в URL-адресе (обычно это HTTP или HTTPS).
Браузер отправляет HTTP-запрос на сервер, который содержит метод запроса (GET, POST, DELETE, и т. д), заголовки запроса и параметры запроса (если есть).
Получается что-то типа следующего:GET example.com?foo=bar HTTP/1.0\n ...заголовки запроса... \n\n
Здесь
\n
означает символ перевода строки, а\n\n
— два обязательных символа новой строки, которые являются маркером окончания запроса (точнее, окончания заголовков запроса). Пока мы не пошлем этот маркер, сервер не будет обрабатывать наш запрос.
Как видим, после GET-строки могут следовать и другие строки с информацией, разделенные символом перевода строки. Их обычно формирует браузер. Такие строки называются заголовками запроса (headers), и их может быть сколько угодно. Протокол HTTP как раз и задает правила формирования и интерпретации этих заголовков.Сервер обрабатывает запрос, выполняет необходимые действия (например, отправляет запрошенную страницу) и отправляет ответ браузеру.
Браузер получает ответ от сервера, который содержит статус ответа (например, 200 OK, 404 Not Found), заголовки ответа и тело ответа (например, HTML-код страницы).
Браузер отображает полученную страницу в окне браузера.