HTTP (HyperText Transfer Protocol) - протокол передачи гипертекста. Его разработали в 1992 году для передачи гипертекстовых HTML-документов, но сегодня задействуют для работы с самыми разными данными. Гипертекст - это текст с гиперссылками: нажав на них, вы можете получить новые страницы или другие ресурсы.
Для пересылки данных HTTP использует протокол TCP. В то же время HTTP-протокол выступает основой и транспорта для других прикладных протоколов. К примеру, SOAP, XML-RPC, WebDAV.
Как работает HTTP
HTTP работает на основе клиент-серверной архитектуры. Клиент - это потребитель, который инициирует установку соединения и отправляет запрос серверу. Сервер ожидает соединения, чтобы получить запрос. Затем он обрабатывает данные из запроса и возвращает результат обработки в ответном сообщении. В ответе сервер может передать документ, который включает поддокументы, отдельно представленную структуру, скрипты, фото, видео и другие данные. Между запросом и ответом может быть цепочка посредников (прокси и др.).
Запросы обычно передает веб-браузер. Но такие задачи нередко возлагают на ботов, которые сканируют страницы веб-ресурсов для обновления данных. К примеру, обходом страниц занимаются поисковые роботы для индексации для поисковых систем.
В клиентском запросе обязательно содержится URI (Uniform Resource Identifier). Он указывает на определенный ресурс: файл на сервере, логический или абстрактный объект. Клиент может указать в запросе, а сервер - в ответе представление ресурса по разным параметрам: языку, кодировке, формату. Для этого используются заголовки HTTP-запросов.
Самое важное здесь - возможность указать двоичное представление. Благодаря этому, собственно, HTTP протокол позволяет передавать не только гипертекст, но и двоичные данные.
HTTP-протокол не сохраняет своего состояния между запросом и ответом. Поэтому для сохранения данных приходится задействовать дополнительные инструменты - сессии на сервере и cookies на стороне клиента. Кроме того, сервер может хранить заголовки HTTP-запросов и IP-адреса клиентов. Но протокол сам по себе не знает, какие запросы отправлялись и принимались ранее.
Почему HTTP небезопасен
HTTP-протокол не использует шифрование данных. Он изначально создавался для быстрой доставки данных от сервера получателю, но разработчики не фокусировались на том, как обезопасить от перехвата и изменения доставляемую информацию.
Именно поэтому на смену HTTP приходит HTTPS (HTTP + security, безопасность). Этот протокол предполагает шифрование данных.
HTTPS работает на транспортном уровне, тогда как HTTP - на прикладном. Таким образом, транспортный уровень, на котором выполняется управление соединениями, выходит за пределы HTTP-протокола.
Защита особенно важна, когда вы передаете чувствительную информацию - пароли, данные кредитных карт и т.п. Это серьезно усложняет для хакеров использование информации - даже если данные перехватят, их будет непросто расшифровать и использовать.
Кроме того, HTTP-протокол позволяет подменить данные на пути от сервера к браузеру. В результате вы можете увидеть в браузере совсем не то, что ожидали. Или получить вредонос вместо безобидной картинки.
Также HTTPS требует подтверждение домена. Хакеры не смогут подменить домен, чтобы перехватывать данные из запросов.
Крупные сервисы вроде Google и Facebook* уже давно перешли на HTTPS. Сегодня всё больше сайтов мигрируют на HTTPS, потому что разработчики браузеров постепенно отказываются работать с HTTP.
В то же время для перехода на HTTPS требуется получить SSL-сертификат. Это платная услуга, и многие владельцы небольших сайтов отказываются от неё (а значит, и от перехода на HTTPS), а значит, ставят данные пользователей под угрозу.
- Реакция мужа на ноготочки
- Пилот разыграл весь самолёт
- Любимая кофта сквозь года
- Автомат по приему золота в Китае
- Девушка показала главный страх всех, кто носит брекеты