Что происходит, когда вы вводите домен в браузере и нажимаете Enter?

Предположим, что есть веб-сайт example.com (который, вполне возможно, существует), и мы хотим получить к нему доступ. Это просто вопрос открытия нашего браузера, ввода адреса сайта в строку поиска и нажатия Enter, что все пользователи Интернета знают, как это сделать. Однако кто из нас знает, что происходит внутри, когда вы вводите example.com в браузере и нажимаете Enter? Давайте найдем это.

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

Айпи адрес

IP — это 32-битное двоичное число, разделенное на 4 группы по 8 бит, которые мы называем байтами. Каждый байт (группа из 8 битов) преобразуется в свою десятичную запись и разделяется точками, образуя таким образом IP-адрес.

Каждый адрес состоит из идентификатора сети и идентификатора хоста. Определенное количество бит представляет сеть, а остальные представляют хост, который определяет класс адреса.

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

Сейчас, наверное, мало кто пробовал ввести IP-адрес сайта в поисковик, даже собственный IP-адрес почти никто не знает. И мы не должны. Для удобства человека нам просто нужно написать название сайта, на который мы хотим перейти, и DNS преобразует это имя в IP-адрес и направит нас в это место.

Что такое ДНС?

Система доменных имен — это что-то вроде большой телефонной книги, в которой хранятся все имена веб-сайтов и их соответствующие IP-адреса. Таким образом, нам нужно только узнать имя веб-сайта и DNS, которым управляет ваш интернет-провайдер, он будет искать его IP-адрес и перенаправлять нас. В этом случае мы можем предположить IP-адрес http://127.16.254.1 и эквивалентный ему DNS http://example.com.

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

TCP/IP

Весь этот набор общих протоколов, используемых устройствами для связи друг с другом, необходимых для правильной работы Интернета, называется TCP/IP. Недостаточно, чтобы наши устройства были связаны, они также должны говорить на одном языке.

Семейство протоколов TCP в основном состоит из:

  • Протокол управления передачей (TCP): обеспечивает безошибочную и безопасную связь между операторами. Он отвечает за установление соединения, передачу данных и завершение соединения.
  • Интернет-протокол (IP): в дополнение к тому, что уже было упомянуто, следует упомянуть, что, хотя этот протокол отвечает за отправку данных в блоках, называемых пакетами, он не предоставляет механизмов, позволяющих узнать, переданные данные правильно достигают места назначения (это работа TCP).

В состав наиболее часто используемых IP-адресов входит версия IPv4, в которой, как уже объяснялось, используются 32 бита. Однако рост Интернета привел к исчерпанию этого типа адресов, поэтому он начал прибегать к следующей версии протокола IPv6, в которой используются 64-битные адреса.

  • Протокол передачи гипертекста (HTTP): это основной интернет-протокол. Он позволяет передавать документы гипертекстового типа или документы, имеющие ссылки на другие документы. Обычно веб-страницы разрабатываются на языке гипертекстового типа, который называется HTML (язык гипертекстовой разметки), что позволяет передавать их по протоколу HTTP.

HTTP использует схему клиент/сервер, в которой одно из устройств запрашивает, а другое отвечает. В нашем случае наш браузер является клиентом, а компьютер, на котором хранится информация example.com, является сервером. Из браузера мы делаем запрос на страницу, чтобы сервер отправил нам запрошенную веб-страницу в качестве ответа. Наконец, наш браузер показывает нам запрошенный веб-сайт.

Другими протоколами являются протокол передачи файлов (FTP), простой протокол передачи почты (SMTP) и протокол почтового отделения (POP).

HTTPS — SSL

Теперь, через протокол HTTP, он публично передает информацию любого типа, которой вы хотите поделиться между клиентом и сервером. Это может включать личную информацию, такую ​​как банковские ключи или пароли электронной почты, которые могут быть нарушены хакерами. Для решения этой проблемы был разработан протокол HTTPS (Secure Hypertext Transfer Protocol), который представляет собой тот же HTTP с функцией безопасности, которая шифрует данные, которые передаются по HTTP. с помощью алгоритмов шифрования для шифрования передаваемых данных. Когда мы заходим на веб-сайт, имеющий сертификат безопасности, мы видим 's' в используемом протоколе перед доменом (https://example .com), что указывает на безопасность сайта. Кроме того, многие браузеры также размещают значки, такие как замки или щиты, рядом с панелью браузера.

Когда вы обмениваетесь информацией по протоколу HTTPS, данные передаются в зашифрованном виде, что делает их понятными любому, кто нарушит соединение. Сертификат безопасности предоставляется протоколами шифрования. Наиболее часто используется SSL, который использует шифрование с открытым ключом для защиты данных.

Таким образом, когда компьютер подключается к веб-сайту с помощью SSL, веб-браузер компьютера попросит веб-сайт идентифицировать себя, и веб-сайт отправит копию своего сертификата SSL, используемого для аутентификации личности веб-сайт и пусть ваш компьютер знает, что веб-сайт, который вы посещаете, безопасен. Если с вашим браузером все в порядке, он будет обмениваться информацией с сайтом в зашифрованном виде.

Балансировщик нагрузки

В Интернете есть очень популярные веб-страницы, такие как страницы социальных сетей или страницы воспроизведения видео, которые не только требуют большой емкости для хранения, но и одновременно получают миллионы запросов, что требует большой емкости для ответа. Давайте продолжим с примером с example.com. Мы говорили об односторонних соединениях между клиентом и сервером, но что произойдет, если несколько клиентов одновременно отправят запросы к серверу, на котором размещен веб-сайт? Этот сервер может выйти из строя из-за своих характеристик или ресурсов, таких как память с определенной емкостью (и, следовательно, ограниченной) или ограниченное дисковое пространство. Самое логичное решение — иметь больше серверов, к которым клиенты могут отправлять запросы, и именно здесь центральное место занимает Load Balancer.

Балансировщик нагрузки — это устройство, которое направляет трафик между разными серверами, поэтому оно принимает запросы от клиентов и распределяет их между несколькими серверами в зависимости от алгоритма распределения (циклический переборсамый популярный). Давайте представим, что у нас есть три сервера, балансировщик нагрузки отправит первый запрос на первый сервер, второй запрос на второй сервер, третий запрос на третий сервер и четвертый запрос обратно на первый сервер и так далее. Это также хорошо для минимизации времени простоя, высокой масштабируемости, оптимизации и настройки.

Кроме того, Load Balancer перестанет отправлять запросы на проблемный сервер, пока проблема не будет устранена. При использовании балансировщика нагрузки клиенты не подключаются к серверу напрямую, они устанавливают соединение с балансировщиком нагрузки и его виртуальным IP-адресом (VIP).

Сервер

На протяжении всей статьи мы говорим о сервере, не зная точно, что это такое. Это обычный компьютер?

Сервер обычно представляет собой стек решений или список всех основных компонентов для предложения технологического решения. Стек LAMP, вероятно, является наиболее распространенным стеком для размещения веб-серверов и веб-приложений, особенно сайтов малого или среднего размера. LAMP — это аббревиатура от Linux, Apache, MySQL и PHP, и он используется в основном потому, что эти технологии эффективны и бесплатны.

После того, как мы отправляем запрос через наш браузер, и этот запрос перенаправляется балансировщиком нагрузки, он, наконец, поступает на сервер, который возвращает ответ в соответствии с запросом.

Внутри сервера:

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

Затем у нас есть веб-сервер, который получает и управляет всеми запросами от клиентов. Если запрос относится к статическому файлу, такому как изображение (.jpg, .png) или файл HTML, веб-сервер обработает запрос, ищет файл внутри и отправляет его в клиентский браузер. В данном случае мы используем Apache, но есть и много других популярных программ для веб-серверов, таких как Nginx.

Если запрос относится к динамическому контенту, веб-сервер не может просто искать его и возвращать. Он должен отправить запрос веб-приложению, которое выполнит код в этом файле и вернет его на веб-сервер, а затем обратно клиенту. PHP является наиболее распространенным программным обеспечением для этого, но есть и другие программы, которые становятся все более популярными, такие как Python или Perl.

Наконец, серверу требуется механизм базы данных для хранения данных сайтов. Иногда файлы, созданные для веб-приложения, различны для каждого клиента (например, учетной записи социальной сети). используя определенную информацию, такую ​​как имя пользователя и пароль, веб-приложение может искать определенные данные, хранящиеся для этих учетных данных в базе данных серверов, использовать эти данные для создания приложений и отправлять их клиенту через веб-сервер.

Брандмауэр

Хотя вся эта коммуникационная сеть доступна для всех, часто подключенные компьютеры хотят ограничить свое подключение к определенным внешним устройствам, которые могут считаться вредоносными, или хотят сделать свое подключение эксклюзивным для нескольких устройств. Для этого необходимо установить брандмауэры в качестве первой линии защиты на компьютере, который хочет заблокировать эти входы в свою систему. Брандмауэр — это как охранник клуба, который решает, кто входит, а кто нет, по определенным характеристикам (какой поверхностный пример, правда?). Его основная цель — защитить вашу сеть от внешней атаки, в то же время обеспечивая корректный информационный обмен между компьютерами, соответствующий настроенному стандарту.

Удивительно видеть все аппаратное и программное обеспечение за простым поиском в Интернете и то, как все описанное выше происходит за считанные секунды, но это происходит. Бьюсь об заклад, это было не то, что вы себе представляли (если представляли).