Поделиться через


Терминология сети (WinHTTP)

При разработке приложения, использующего службы Microsoft Windows HTTP (WinHTTP), важно понимать следующие понятия и терминологию, относящиеся к сети в целом и протоколу HTTP в частности.

Транзакции HTTP

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

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

  • Метод, универсальный код ресурса (URI), номер версии протокола
  • Заголовки
  • Тело сущности

Когда сервер получает запрос, он отвечает, отправляя сообщение обратно клиенту. Сообщение, отправленное сервером, называется HTTP-ответом. HTTP-ответ состоит из следующих компонентов.

  • Номер версии протокола, код состояния, текст состояния
  • Заголовки
  • Тело сущности

Ответ либо указывает, что запрос не может быть обработан, либо предоставляет запрошенные сведения. В зависимости от типа запроса это могут быть сведения о ресурсе, такие как его размер и тип, а также некоторые или весь ресурс. Часть ответа, которая включает некоторые или все запрошенные ресурсы, называется "данными ответа" или "телом сущности", и ответ не будет завершен, пока не будут получены все данные ответа.

Подробные сведения о транзакциях HTTP и протоколе HTTP см. в статье RFC 2616, Hypertext Transfer Protocol — HTTP/1.1.

Прокси-серверы

Хотя запрос, отправленный клиентом, в конечном итоге получается целевым сервером, иногда транзакция сначала проходит через прокси-сервер. Прокси-сервер перехватывает запрос и может даже изменить запрос перед его отправкой на сервер. Когда сервер отвечает, ответ также проходит через прокси-сервер, прежде чем он будет переадресован на клиент. Прокси-сервер может изменять заголовки в этом ответе.

Перехватывая и претворяя сетевые транзакции, прокси-сервер может:

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

API WinHTTP включает средство настройки прокси-сервера, которое позволяет предоставлять WinHTTP сведения о любых прокси-серверах, перехватывающих транзакции HTTP. Сведения об использовании средства настройки прокси-сервера см. в разделе ProxyCfg.exe, средство настройки прокси-сервера.

Синхронный и асинхронный режимы

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

С другой стороны, асинхронная модель позволяет приложению выполнять другие задачи, ожидая извлечения ресурса. Если вызывается другая функция или метод WinHTTP, а предыдущая операция не завершена, функция возвращает ошибку. При асинхронном использовании WinHTTP доступны события com-модели и обратный вызов для уведомления приложения о ходе выполнения операции HTTP.

Проверка подлинности

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

Функции WinHTTP поддерживают проверку подлинности сервера и прокси-сервера для сеансов HTTP. WinHTTP поддерживает следующие схемы проверки подлинности: Basic, Digest (см. RFC 2617), NTLM Authentication, Negotiate/ Kerberos и Microsoft Passport 1.4. Подробные сведения о проверке подлинности, а также пример использования проверки подлинности в приложении Microsoft Visual C++ см. в статье Проверка подлинности в WinHTTP.

Сведения о рекомендациях по безопасности, касающихся обычной проверки подлинности и проверки подлинности passport, см. в статье Рекомендации по безопасности WinHTTP.