Интернет стал неразрывной частью нашей повседневной жизни: ты используешь его для работы, для общения, для учебы и отдыха. Слово "интернет" уже давно превратилось во что-то большее, чем простой технический термин. Оно стало привычным, понятным и так же узнаваемым, как "зубная щётка", "телевизор" и другие привычные глазу и уху вещи. Но как он работает внутри? Какие удивительные чудеса низкоуровневого программирования происходят незаметно для нас каждую секунду? Давай попробуем разобраться!
Что такое, интернет 🔌
Вероятно, самый простой способ описать интернет – представить его как гигантскую библиотеку. Только вместо книг здесь хранится информация в цифровом, специальным образом структурированном формате. Каждый сайт - это условная книга, а каждая страница сайта - её лист. У каждой книги есть своё название - существуют более популярные книги, а есть и более специфические, например с техническим или медицинским уклоном. Все эти «цифровые книги» (веб-страницы) расположены на «полках» (серверах) и могут быть получены при помощи «карточки библиотекаря» (Internet Protocol - IP).
Сама сеть, которую мы называем интернет – это не что иное, как множество компьютеров, соединенных между собой. Но важно то, что эти компьютеры обмениваются информацией, используя определенные, универсальные протоколы. Именно совокупность специальных протоколов и специфических технологий, позволяет поддерживать его связность - то есть, делать интернет целостной структурой, единой для внешнего обозревателя.
Связность интернета является ключевым фактором его уникальности. Вне зависимости от того, где именно находится сервер с конкретным веб-сайтом, совокупность технологий позволяет получить доступ именно к нему за считанные секунды. На картинке выше - схема подводных интернет-кабелей, благодаря которым осуществляется обмен интернет-трафиком между континентами и странами.
HTTP и его роль 🎭
Один из ключевых протоколов, используемых в интернете, это HTTP (HyperText Transfer Protocol или Гипертекстовый протокол передачи). HTTP _ это протокол, который наш с вами компьютер использует каждый раз, когда вы переходите на какую-либо веб-страницу в Интернете.
Представь себе, что ты хочешь прочитать определенную книгу из библиотеки (допустим Гарри Поттера). Ты запрашиваешь ее у библиотекаря (отправляешь HTTP-запрос), и библиотекарь приносит тебе книгу (веб-сервер отправит тебе HTTP-ответ). HTTP используется для передачи текстовых данных и изображений между твоим web-клиентом и веб-сервером. Не имеет никакого значения, используешь ли ты мобильный телефон, либо же работаешь за ноутбуком - протокол HTTP используется в обеих случаях для доступа к веб-контенту.
Как работает HTTP ❔
Когда ты вводишь URL-адрес (Uniform Resource Locator или унифицированный указатель ресурсов) в браузер, здесь происходит несколько ключевых шагов:
- DNS-запрос: Твой компьютер обращается к системе доменных имен (DNS), чтобы распознать, к какому серверу нужно отправить запрос. Что такое DNS и зачем он нужен - обсудим в отдельных статьях.
- Установление соединения: TCP (протокол управления передачей) устанавливает устойчивое соединение между твоим компьютером и сервером.
- HTTP-запрос: Твой браузер отправляет HTTP-запрос на сервер. То есть, браузер запрашивает конкретную веб-страницу с конкретного веб-сайта.
- HTTP-ответ: Сервер обрабатывает твой запрос и отправляет обратно HTTP-ответ, содержащий данные, которые ты запрашивал. Здесь есть несколько частей - заголовок ответа и тело ответа. В заголовке содержится набор ряд мета-данных, например статус ответа - HTTP/1.1 200 OK (Запрос обработан успешно, данные отправлены), Длина ответа - Content-Length, Тип контента - Content-Type, и так далее. Все они нужны в качестве справочной информации. Так же, ответ содержит непосредственно данные — HTML-код конкретной страницы.
Кто придумал интернет и HTTP? 🧐
Протокол HTTP был разработан Тимом Бернерс-Ли и его коллегами в CERN (да-да, тот самый адронный коллайдер). Этот протокол был создан в 1989 году с целью обеспечить внутреннее взаимодействие между командой учёных - и изначально позиционировался как научный, лабораторный проект.
Тим Бернерс-Ли работал над разработкой системы, которая позволяла бы исследователям сотрудничать и обмениваться информацией. В результате возник первоначальный прототип HTTP, который стал основой для создания Всемирной паутины (World Wide Web). HTTP стал стандартным протоколом для связи между клиентом (например, веб-браузером) и сервером (например, веб-сайтом).
Фактически, в современном компьютерном мире принято считать именно Тима Бернерса изобретателем интернета в его первоначальном виде.
HTTP-статусы ответа ✅
Внутри HTTP-ответа от сервера содержится ряд заголовков. Важнейший из них - это статус ответа. Статус ответа информирует клиентскую машину о том, успешно или неуспешно был обработан запрос, какие особенности обработки запроса возникли в процессе его анализа. Например благодаря статусу ответа можно понять, что какая-то конкретная страница сайта была удалена, перемещена, или в процессе обработки возникла ошибка.
Статус ответа содержит версию HTTP-протокола, которую использовал сервер для HTTP-ответа. Затем следует код статуса ответа – например 200, это означает успешное получение данных. Следующее – словесное описание статуса ответа: «ок».
В спецификации HTTP 1.1 всего 40 статусов. Вот тут представлена достаточно полная информация обо всех статусах, на сайте MDN. Некоторые из наиболее популярных включают:
- 200 OK – данные успешно получены.
- 201 Created – означает, что запрос выполнен успешно и данные созданы. Используется для подтверждения успеха запросов PUT или POST.
- 300 Moved Permanently – указывает, что URL-адрес был изменен навсегда.
- 400 Bad Request – указывает на неверно сформированный запрос. Обычно возникает при отправке запросов POST или PUT, когда данные не проходят проверку или представлены в неправильном формате.
- 404 Not Found – означает, что запрашиваемый ресурс не найден.
- 500 Internal Server Error – указывает на ошибку со стороны сервера.
Весь этот процесс называется "моделью запрос-ответ". Это ключевой принцип работы HTTP и составная часть понимания веб-программирования. Веб-сервера по-умолчанию работают в пассивном режиме - "на приём". Получая запросы от клиентских устройств (ноутбуки, сотовые телефоны, компьютеры), они отвечают фактическим содержимым в виде HTML-кода или медиа-информации.
Вопросы безопасности ⚔
Протокол HTTP по-умолчанию не обеспечивает шифрование передаваемой информации. Но, для HTTP существует расширение, которое обеспечивает упаковку данных в криптографический протокол SSL или TLS.
Это расширение называется HTTPS (HyperText Transfer Protocol Secure). Обычно для HTTPS-соединений используется TCP порт 443. Он широко применяется для обеспечения безопасности информации и защиты от перехвата. Он также обеспечивает защиту от атак типа "man-in-the-middle", если клиент проверяет сертификат, приватный ключ не скомпрометирован, пользователь не подтверждал использование неподписанного сертификата и на компьютере пользователя не установлены сертификаты злоумышленного центра сертификации.
Итоги 🏁
Итак, интернет – это не просто "что-то там в облаках". Это глобальная сеть, связывающая многочисленные компьютеры, и инструмент обмена данными через универсальные протоколы, такие как HTTP. Веб-программирование – это искусство понимать, как все эти элементы работают вместе для доставки информации прямо на ваш компьютер или мобильное устройство.
🔥 Понравилось? Подпишись! Победим восстание роботов вместе! 🔥
🚀 P.S. Ты можешь круто поддержать меня и проект "Войти в IT" на boosty! Я публикую там более эксклюзивный и профессиональный, иногда немного личный контент. Хочешь посмотреть как я выгляжу в реальной жизни? Тогда жми: Ссылка 🚀
P.S.2 У меня ещё есть Telegram-канал. Там посты чуть попроще, и чуть повеселей. Ссылка