Найти в Дзене

Что происходит, когда вводишь url, или как работает интернет. Основные тезисы


В основе любого сетевого взаимодействия лежит модель OSI (изображение 1). Это 7-ми уравнивая модель описывающая взаимодействие открытых систем. Она применима и к интернету, протоколы которого могут быть описаны OSI.

Http

При вводе адреса google.com ваш браузер формирует HTTP сообщение, которое состоит из строки запроса, тела сообщения и заголовков со служебной информацией. Задача этого протокола передать сообщение на следующий уровень представления, а именно HTTPS (ssl) или tsl (в случае если остается http).

SSL/TLS

Уровень представления отвечает за кодирование/декодирование, а также за шифрование/дешифрование данных. Благодаря этому уровню информация, передаваемая одной системой, всегда понятна другой системе.

Если сервер, к которому идет запрос работает по протоколу Https, то в него включен протокол защиты ssl и наоборот, если нет то tls. Принцип работы протокола базируется на ассиметричном шифровании и для создания безопасного канала связи оперирует такими понятиями как публичный ключ, приватный ключ, сеансовый ключ.

В ответ на запрос браузер получает информацию и публичный ключ, с полученной информацией делает запрос в центр сертификации. Если информация подтверждается, ваш браузер генерирует сеансовый ключ, зашифровывает его публичным ключом и отправляет на сервер. Сервер расшифровывает сообщение с помощью приватного ключа и сохраняет сеансовый ключ. После этого соединение можно считать установленным — при общении клиента и сервера используется для шифрования сеансовый ключ. И "общение" между клиентом и сервером переходит на симметричное шифрование с помощью сгенерированного сеансового ключа.

TCP

Операционная система, получив HTTP-сообщение от браузера, должна "встроить" его в пакет протокола нижележащего уровня — TCP. Операция эта осуществляется на каждом уровне: пакеты вышележащего уровня инкапсулируются в пакеты нижележащего (изображение 2). И на самом нижнем уровне мы получаем информационную “матрёшку” с вложенными друг в друга пакетами, со служебной информацией в виде заголовков, добавленных на каждом уровне. Использование этого протокола предусматривает установление так называемого логического соединения между двумя конечными узлами сети. (Изображение 3)

IP

Сетевой уровень нужен для образования единой транспортной системы, которая объединяет несколько сетей. Данный протокол не занимается установлением соединения, не контролирует целостность данных, не гарантирует доставку и не отвечает за их достоверность, то есть реализует политику доставки "по возможности". Всё это бремя возложено на вышележащий протокол — TCP. Получив TCP-пакет, ОС инкапсулирует его в IP-пакет, добавляет в него свои параметры и передаёт далее.

DNS

Для того чтобы отправить какие-то данные серверу в IP-пакете, нужно узнать его IP-адрес. Для этого есть специальный протокол DNS, с помощью которого делается отдельный от основного запрос. Вначале браузер проверяет соответствие IP адреса и домена в своем кэше (для chrome это chrome://net-internals/#dns). Затем, если соответствия не найдено, браузер обращается к операционной системе, которая ищет информацию в системном файле hosts. И только в случае, если ничего не найдено в этом файле, посылается запрос DNS. Полученный адрес уже можно указать в формируемом IP-пакете основного запроса.

Ethernet

Ethernet объединяет два уровня: канальный и физический. Канальный - передача сырых данных физического уровня по надежной линии связи. Физический - передачу потока битов по каналам физической связи (коаксиальные кабеля, оптоволокно, витая пара).

Совершив путь от одного узла до другого, он распаковывается в обратном порядке: из Ethernet-кадра вытаскивается IP-пакет, из него, в свою очередь, TCP-пакет. Получив HTTP-сообщение и считав с него нужную информацию, сервер формирует и посылает ответное HTTP-сообщение. Сообщение проходит через каждый уровень и возвращается в виде ответа клиенту, распаковывается каждым уровнем, и мы видим заветную информацию на экране.

3 минуты