Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5. ЛЕКЦИОННЫЙ КОМПЛЕКС (1).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.03 Mб
Скачать

2.План лекции

        1. Маршрутизация, буферизация и регистрация сообщений.

        2. Удаленная обработка.

        3. Электронная почта.

3. Цель лекции: Ознакомить студентов с маршрутизация, буферизация и регистрация сообщений. Удаленная обработка. Электронная почта..

4. Содержание лекции:

Чтобы упростить разработку Интернет-приложений, в ОС предусмотрены клиентские и серверные API-интерфейсы доступа к Интернету. С помощью этих API приложения могут предоставлять и использовать сервисы Gopher, FTP и HTTP, не зная внутреннего устройства соответствующих протоколов. Клиентские API в системе WINDOWS включают Windows Internet, также называемый WinInet, и WinHTTP. В определенных ситуациях WinHTTP удобнее WinInet. HTTP — это серверный API, введенный в Windows Server 2003 для поддержки разработки серверных Web-приложений.

WinInet делится на наборы под-API, специфичные для каждого протокола. Используя API-функции FTP, разработчик приложения может не задумываться о деталях, связанных с установлением соединения и форматированием TCP/IP-сообщений для протокола FTP. API-функции Gopher и HTTP обеспечивают аналогичный уровень абстракции. Winlnet применяется базовыми компонентами Windows, например Windows Explorer и Internet Explorer.

WinHTTP этот API обеспечивает абстракцию протокола HTTP 1.1 для серверных приложений, взаимодействующих с HTTP-серверами. Серверные приложения часто реализуются как Windows-службы без UI, поэтому им не нужны диалоговые окна. Кроме того, WinHTTP API лучше масштабируется и предоставляет средства защиты вроде подмены потоков, недоступные в Winlnet API.

HTTP API, к которому приложения обращаются через библиотеку Httpapi.dll, опирается на драйвер Http.sys режима ядра. Http.sys запускается по требованию при первом вызове HttpInitialize любым приложением. Функция HttpCreateHttpHandle позволяет создавать закрытую очередь запросов, а функция HttpAddUrl — указывать URL-адреса, по которым приложение собирается принимать запросы для обработки. Используя очереди запросов и их зарегистрированные URL, Http.sys дает возможность обслуживать HTTP-запросы на одном порту, например 80, более чем одному приложению.

HttpReceiveHttpRequest принимает входящие запросы, направленные по зарегистрированным URL, a HttpSendHttpResponse передает HTTP-ответы. Обе функции работают в асинхронном режиме, так что приложение может определять, закончена ли какая-то операция, используя GetOverlappedResult или порты завершения ввода-вывода.

Приложения могут использовать Http.sys кэширования данных в неподкачиеваемой физической памяти, вызывая HttpAddToFragmentCache и сопоставляя имя фрагмента с кэшируемыми данными. Для выделения неспроецированных страниц физической памяти Http.sys запускает функцию MmAllocate-PagesForMctt, принадлежащую диспетчеру памяти. Когда Http.sys требуется сопоставление виртуального адреса с физической памятью, описываемой элементом кэша (например, если Http.sys копирует данные в кэш или передает их из кэша), он вызывает MmMapLockedPagesSpecijyCache, а по окончании операций — MmUnmapLockedPages. Http.sys хранит кэшируемые данные до тех пор, пока приложение не объявит их недействительными или пока не истечет срок их актуальности, заданный приложением. Http.sys также усекает кэшируемые данные при пробуждении рабочего потока из-за перехода в свободное состояние события, уведомляющего о малом объеме памяти. Если при вызове HttpSendHttpResponse приложение указывает одно или несколько имен фрагментов, Http.sys передает указатель на данные, кэшируемые в физической памяти, драйверу TCP/ IP и тем самым исключает лишнюю операцию копирования.