Sans-serif fonts
Serif fonts

HTTP-протокол прикладного уровня

Протокол передачи гипертекста (Hypertext Transfer Protocol — HTTP) — это прикладной протокол для передачи гипертекстовых документов, таких как HTML. Он создан для связи между веб-браузерами и веб-серверами, хотя в принципе Протокол следует классической клиент-серверной модели, когда клиент открывает соединение для создания запроса, а затем ждёт ответа. HTTP — это протокол без сохранения состояния, то есть сервер не сохраняет никаких данных (состояние) между двумя парами «запрос-ответ». Несмотря на то, что HTTP основан на TCP/IP, он также может использовать любой другой протокол транспортного уровня с гарантированной доставкой.

Это протокол прикладного уровня, который использует соединение TCP (или TLS-защищённый TCP) для пересылки сообщений, однако теоретически может быть использован любой другой надёжный транспортный протокол. Благодаря своей расширяемости, HTTP используется не только для получения гипертекстовых документов, но и для изображений и видео, а также для отправки содержимого серверам, например, с помощью HTML-форм. HTTP также может быть использован для получения частей документа с целью обновления веб-страницы по запросу.

Клиент и сервер взаимодействуют, обмениваясь отдельными сообщениями (а не потоком данных). Сообщения, отправляемые клиентом, называются запросами (англ. request), а сообщения от сервера называются ответами (англ. response).

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

Обычно между браузером и сервером гораздо больше различных устройств-посредников, которые играют какую-либо роль в обработке запроса: маршрутизаторы, модемы и т.д. Благодаря тому, что Интернет имеет многоуровневую структуру, эти посредники «спрятаны» на сетевом и транспортном уровнях. В этой системе уровней HTTP занимает самый верхний уровень, который называется «прикладным» или «уровнем приложений».

Веб-сервер

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

Сервер не обязательно расположен на одном компьютере, и наоборот — несколько серверов могут быть расположены на одной и той же машине. Начиная с версии HTTP/1.1 заголовок Host позволяет нескольким серверам даже использовать один тот же IP-адрес.

Прокси

Между веб-браузером и сервером находятся большое количество сетевых узлов, передающих HTTP-сообщения. Из-за многоуровневой структуры большинство из них оперируют на транспортном, сетевом или физическом уровнях, становясь прозрачным для HTTP и потенциально снижая производительность. Эти промежуточные узлы на уровне приложений называются прокси. Они могут быть прозрачными, то есть пересылать запросы без преобразований, и непрозрачными — изменяющими запрос каким-либо образом перед передачей его другому серверу. Прокси могут выполнять различные функций:

  • кеширование (кеш может быть публичным или приватными, как кеш браузера)
  • фильтрация (как сканирование антивирусом или родительский контроль)
  • балансирование нагрузки (чтобы позволить нескольким серверам обслуживать запросы)
  • аутентификация (для контроля доступа к разным ресурсам)
  • протоколирование (позволяет хранить историю операций)
AlibeK

AlibeK

Total posts created: 5
Я — начинающий QA-инженер по ручному тестированию, специализируюсь на тестировании веб-приложений. Пишу тест-кейсы, ищу баги, делаю выводы и публикую здесь свои практические наработки.