Когда ты заходишь на сайт, происходит целый ряд сложных технических взаимодействий между твоим устройством (компьютером, смартфоном и т.д.) и сервером (физическим компьютером), на котором размещен сайт. В силу высокой развитости современных технологий, все эти процессы занимают доли секунды. При этом, в фоновом режиме работы, происходят настоящие научные чудеса - к которым современный технический мир шёл многие годы, если не десятки лет.
Не столь многим не-техническим специалистам известно, что на самом деле интернет - это изначально текстовый протокол обмена данными. То есть, любой сайт по сути своей - это набор текстов, которые интерпретируются твоим компьютером специальным образом. И ещё меньшее количество людей знает, что прототип первого веб-сайта был придуман в недрах ЦЕРН - да-да, это тот самый адронный коллайдер, закопанный глубоко под землей где-то между Францией и Швейцарией.
Кто придумал интернет-сайты и HTTP? 🎓
Требуется признать, что интернет-сайты представляют собой сложное техническое достижение, и несколько людей внесли важные вклады в создание этой концепции. В этом отношении Тим Бернерс-Ли считается одним из основных пионеров технологии веба. Вот тут мы писали о нём чуть более подробно.
Тим Бернерс-Ли, британский программист и физик, разработал первую систему для создания и просмотра веб-страниц в конце 1980-х годов. В 1989 году он предложил идею гипертекстовой системы, которая позднее стала основой для World Wide Web (WWW).
Самым значимым достижением Бернерс-Ли является его работа над созданием протокола HTTP (Hypertext Transfer Protocol) и языка разметки гипертекста HTML (Hypertext Markup Language). Он разработал первый веб-сервер и веб-браузер, которые позволяли просматривать и публиковать веб-страницы.
Бернерс-Ли также создал первый сайт, который стал первопроходцем и примером того, как взаимодействовать с содержимым веба. Сайт был запущен 6 августа 1991 года и содержал информацию о самом World Wide Web, его возможностях и технологии.
Разрешение доменного имени💡
URL (Uniform Resource Locator) адрес — это уникальный идентификатор, который указывает на местонахождение конкретного ресурса в интернете, такого как веб-страница, изображение, видео или любой другой файл. URL-адрес представляет собой строку текста, с использованием определенного формата, который браузеры интерпретируют для открытия нужной веб-страницы.
Когда ты вводишь URL-адрес сайта в браузере, он отправляет запрос на разрешение доменного имени. Браузер делает DNS-запрос (Domain Name System), чтобы найти IP-адрес, связанный с введенным доменным именем. DNS-сервер выполняет поиск соответствующего IP-адреса для доменного имени и возвращает его браузеру.
Установление TCP-соединения 📡
TCP (Transmission Control Protocol) – это протокол управления передачей, который обеспечивает надежное и упорядоченное доставку данных между узлами в компьютерных сетях. TCP работает на уровне транспортного слоя и обеспечивает надежное установление, поддержание и разрыв соединения между узлами. Он гарантирует, что данные доставляются правильно, в нужной последовательности и без потерь.
TCP соединение устанавливается между отправителем и получателем данных. Оно включает в себя три основных этапа:
- Установление соединения.
- Передачу данных.
- Разрыв соединения.
В процессе установления соединения, отправитель и получатель обмениваются специальными пакетами (так называемыми TCP пакетами) для согласования параметров и проверки доступности узлов. Затем данные передаются по установленному соединению, гарантируя их правильность и целостность. В конце передачи данных, соединение разрывается путем отправки специальных пакетов закрытия.
Отправка HTTP-запроса 📨
Когда установлено TCP-соединение, браузер отправляет HTTP-запрос на сервер. HTTP (Hypertext Transfer Protocol) – это протокол передачи данных, используемый для обмена информацией в сети Интернет. Он определяет правила и форматы, которые используются для отправки запросов от клиента (обычно веб-браузера) к серверу, а затем передачи ответов обратно.
HTTP работает на базе клиент-серверной модели, где клиент и сервер взаимодействуют между собой. Клиент отправляет HTTP-запрос на сервер, информируя о требуемом ресурсе или операции, которую необходимо выполнить. Сервер обрабатывает этот запрос и отправляет обратно HTTP-ответ с требуемым содержимым или информацией о статусе операции.
Обработка запроса сервером 🔄
Получив HTTP-запрос, сервер начинает обрабатывать его.
HTTP-запрос – это сообщение, отправляемое клиентом (обычно веб-браузером) к серверу при использовании протокола HTTP (Hypertext Transfer Protocol). Он содержит информацию о том, какой ресурс требуется получить или какую операцию нужно выполнить на сервере.
Он ищет запрошенный ресурс, выполняет необходимые вычисления и взаимодействует с базой данных, если это требуется, для получения необходимых данных. Затем сервер генерирует HTTP-ответ. HTTP-ответ – это сообщение, которое отправляет сервер в ответ на HTTP-запрос, который был отправлен клиентом (обычно веб-браузером). Он содержит информацию о статусе операции и данные, запрошенные в HTTP-запросе.
Передача HTTP-ответа и отображение контента 🗓
Браузер получает HTTP-ответ от сервера и начинает его обработку. Он анализирует заголовки ответа, чтобы понять, какой тип данных получен (HTML-страница, изображение, видео и т. д.). Затем браузер отображает контент на экране устройства пользователя. Если в ответе содержится HTML-страница, браузер интерпретирует HTML-код и отображает страницу с соответствующими элементами (текстом, ссылками, изображениями и тд)
Взаимодействие с сайтом и закрытие соединения 📌
После отображения сайта ты сможешь взаимодействовать с ним, щелкать по ссылкам, отправлять формы или выполнять другие действия. Браузер выполняет соответствующие HTTP-запросы для обработки этих действий и взаимодействия с сервером. Когда ты закрываешь сайт или переходишь на другую страницу, браузер закрывает соединение с сервером. Это освобождает ресурсы и завершает процесс входа на сайт.
Весь этот процесс происходит в фоне и кажется практически мгновенным для тебя. Однако взаимодействие между браузером и сервером требует выполнения нескольких шагов, чтобы обменять информацию и представить контент пользователю.
🔥 Понравилось? Подпишись! Победим восстание роботов вместе! 🔥
🚀 P.S. Ты можешь круто поддержать меня и проект "Войти в IT" на boosty! Я публикую там более эксклюзивный и профессиональный, иногда немного личный контент. Хочешь посмотреть как я выгляжу в реальной жизни? Тогда жми: Ссылка 🚀
P.S.2 У меня ещё есть Telegram-канал. Там посты чуть попроще, и чуть повеселей. Ссылка