Все мы широко используем Интернет в повседневной жизни, но немногие из нас действительно задумываются о том, как он работает на фундаментальном уровне. Понятно, что большинство людей полагают, что внутренняя работа Интернета слишком сложна для понимания. Давай изменим это, ладно?
Помимо удовлетворения любопытства, кажется, что, учитывая важную роль, которую Интернет играет в нашей жизни, мы должны лучше понимать, как он работает. Благодаря современным высокоскоростным интернет-соединениям веб-сайты и онлайн-сервисы загружаются за секунды. Это может скрыть, сколько всего происходит за кулисами, когда вы подключаетесь к Интернету и покидаете свою домашнюю страницу.
Упрощенное объяснение того, как работает Интернет, будет следующим: вы (клиент) отправляете запрос на веб-сайт (хост). Веб-сайт отправляет результат, который затем отображается в вашем веб-браузере. Все это происходит так быстро, что вы можете не осознавать, что под капотом происходит несколько вещей, когда вы подключаетесь к веб-сайту.
Большинство веб-сайтов состоят из множества различных элементов, каждый из которых нужно запрашивать индивидуально. Базовый код веб-страницы, написанный на HTML (язык гипертекстовой разметки), сообщает браузеру, что ему нужно запросить для отображения веб-страницы, а также общие инструкции по ее правильному отображению. Это позволяет динамическим веб-сайтам, которые отображаются по-разному в зависимости от используемого устройства.
Прежде чем данные будут отправлены обратно клиенту с хоста, они разбиваются на тысячи пакетов. Каждый пакет содержит крошечный бит информации о файле, которую браузер затем собирает заново. Эти файлы можно разделить на две категории – файлы ресурсов и файлы кода.
Эти файлы содержат код, который может быть написан на нескольких языках – HTML, CSS, Perl, JavaScript и т. д. Активы включают изображения, видео, аудио и любые другие носители для отображения или загрузки.
Веб-сайты, к которым вы подключаетесь, размещены на серверах. Вы можете думать о сервере как о большом компьютере, подключенном к Интернету. Серверы, которым просто необходимо обслуживать данные веб-сайтов, могут быть довольно простыми с точки зрения вычислительной мощности. Однако вы также можете арендовать серверы, которые соответствуют характеристикам высококлассной игровой установки.
Для более сложных веб-сайтов требуются более мощные серверы, а веб-сайты, которые испытывают огромные объемы трафика, часто используют несколько серверов с протоколами автоматической маршрутизации, которые направляют новых пользователей на серверы, где нагрузка минимальна.
На серверах установлены операционные системы – обычно специальные версии Linux или Windows. Эти операционные системы предназначены для размещения на серверах и обработки их соединений. Думайте об операционной системе как об одном из операторов коммутатора, который использовался для маршрутизации телефонных звонков. Когда клиент подключается к хост-серверу, операционная система знает, что делать с входящим подключением.
Когда сервер получает HTTP-запрос, он знает, как его обработать, и в случае успеха вернуть соответствующий ответ.
Чтобы клиент мог взаимодействовать с хостом, они оба должны использовать общий набор протоколов. Эти общие протоколы гарантируют, что любые устройства, которым необходимо подключиться к Интернету, смогут это сделать. Без этой стандартизации для доступа к разным частям Интернета потребовалось бы разное программное обеспечение. И наоборот, можно использовать разные протоколы, как в случае с TOR, для создания сетей, которые ведут себя по-разному.
Существует два протокола, которые имеют фундаментальное значение для работы Интернета – протокол передачи гипертекста, протокол управления передачей и Интернет-протокол. В совокупности это протоколы, которые позволяют онлайн-устройствам взаимодействовать друг с другом.
Рассмотрим URL-адрес http://www.example.com/pogs/boglins. Часть URL-адреса example.com содержит информацию о местоположении и личности хоста. Часть адреса «/ pogs / boglins» указывает, к какой части веб-сайта вы хотите получить доступ. Вы можете думать о первой части как о номере телефона, который соединяет вас с конкретным бизнесом, а о последней части как о добавочном номере, позволяющем напрямую подключаться к нужному телефону.
Но компьютеры работают не со словами, они работают с числами. URL example.com приятный и легкий для чтения человеком, но это не то, что нужно вашему компьютеру. Чтобы подключиться к хосту, вашему браузеру необходимо знать IP-адрес сервера, к которому вы пытаетесь получить доступ.
Чтобы найти IP-адрес, ваш браузер выполняет поиск в службе доменных имен (DNS). Этот процесс похож на поиск телефонного номера в телефонной книге.
Когда вы регистрируете доменное имя, вам присваивается IP-адрес. Таким образом, когда example.com зарегистрирован, он добавляется в реестр доменных имен вместе со связанным IP-адресом. Когда браузер выполняет поиск в DNS для example.com, он находит связанный IP-адрес сервера, на котором хранится веб-сайт, и устанавливает соединение перед отправкой запроса пользователя.
Основным компонентом большинства веб-страниц является файл HTML. Это исходный код веб-страницы; он содержит все инструкции, необходимые браузеру для правильного отображения страницы. Он также сообщает браузеру, какие ресурсы ему нужно запросить у хоста.
Каждый дополнительный актив представляет собой отдельный запрос между клиентом и хостом. Иногда код HTML вызывает внешний скрипт, возможно, скрипт Python или Perl. В этом сценарии могут быть последующие вызовы других ресурсов. Никакие ресурсы не загружаются, если они не запрашиваются, однако многие веб-браузеры кэшируют определенные элементы, поэтому при повторном посещении страницы вам нужно будет загрузить только измененный контент.
Давайте посмотрим, как все эти отдельные компоненты объединяются при загрузке веб-сайта.
Когда вы щелкаете гиперссылку или вводите URL-адрес в свой веб-браузер, ваш веб-браузер выполняет поиск в DNS, который сообщает ему IP-адрес сервера, на котором размещен запрашиваемый вами веб-сайт. Затем он устанавливает соединение с хостом, используя протокол TCIP/IP.
Как только соединение установлено, клиент отправляет HTTP-запрос на хост, запрашивая либо домашнюю страницу, либо конкретную страницу или файл.
Если запрос клиента успешен, хост отправит запрошенные данные. Прежде чем данные будут отправлены обратно в веб-браузер клиента, они разбиваются на пакеты. Затем веб-браузер берет все эти отдельные части и объединяет их в отдельные файлы. Первоначально это обычно исходный HTML-код веб-страницы, который сообщает веб-браузеру, какие ресурсы запрашивать и как их отображать. Затем браузер отображает веб-сайт, который вы видите.
Каждый раз, когда вы подключаетесь к веб-сайту, происходит гораздо больше, чем кажется на первый взгляд. Подумайте, сколько отдельных элементов составляют веб-сайты, которые вы посещали каждый день. Несмотря на то, что это происходит в мгновение ока, вашему веб-браузеру и серверу приходится много взаимодействовать.