Что происходит, когда пользователь набирает в браузере адрес сайта?

Этот вопрос задают практически каждому IT специалисту, независимо от направления: и тестировщику, и фронту, и бекэнду. Давайте разберемся.

Клиенты и серверы

Клиент и сервер — это прежде всего компьютеры, подключенные к общей сети.

Клиент в этом определении — наше устройство, которое запрашивает информацию и получает ответы через специальные программы. Как правило, такой программой является браузер, например, Firefox или Chrome.

Серверы — это компьютеры, которые хранят веб-страницы или целые приложения, которые могут выполнять разные задачи.

Отношения у клиента и сервера очень простые: клиент всегда делает первый шаг (направляет запрос), а сервер на него отвечает. Это называется клиент-серверное взаимодействие.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/af1de729-522d-4673-b934-2054ec1fb2a3/Untitled.png

Когда клиент пытается получить доступ к веб-странице, копия страницы загружается с сервера на клиентский компьютер, а браузер отображает страницу и показывает её пользователю.

DNS

Красивые словарные url-адреса, вроде google.com удобны для нас с вами, но не для машин. Они используют специальный уникальный набор цифр, который называется IP-адресом. Например, для google.com — это сервер 172.217.12.174.

Сайты можно найти непосредственно через их IP-адреса. Вы можете найти IP-адрес веб-сайта, введя его домен в инструмент, как IP Checker.

И первым делом, нужно этот адрес узнать. Для этого существует "адресная книга" — распределенная система серверов DNS (Domain Name System)

В первую очередь, браузер проверит запись об IP-адресе сайта в ближайших местах, чтобы сэкономить время. Он проверит историю подключений, информацию в операционной системе и кеше роутера.

Если он ничего не найдет, то сформирует запрос к DNS-серверам, расположенным в интернете. В ответе он получит IP-адрес нужного сайта.

Соединение с сервером

Теперь браузер знает куда обращаться. Осталось понять как клиент и сервер будут взаимодействовать. В большинстве случаев для этого используется специальный протокол — TCP.

TCP — это набор правил, который описывает способы соединения между устройствами, форматы отправки запросов, действия в случае потери данных и так далее.

Для этого клиент и сервер используют своеобразный ритуал, который называют система «трёх рукопожатий». Работает она так: