Занятие 3. Служба WinSock Proxy
(Продолжительность занятия 25 минут)
Служба WinSock Proxy предоставляет представительские услуги приложениям Windows Sockets, которые выполняются в ЛВС — они могут работать точно так же, как если бы имели прямое соединение с Интернетом. Тем самым маскируется наличие шлюза между сетями.
Изучив материал этого занятия, Вы сможете:
Windows Sockets
Прежде чем изучать службу WinSock Proxy, Вы должны представлять себе, что такое Windows Sockets. Это механизм взаимодействия приложений, выполняющихся на одном или на разных компьютерах в пределах одной и той же локальной или глобальной сети. Windows Sockets определяет набор стандартных интерфейсов прикладного программирования (Application Programming Interface, API), используемых приложениями для взаимодействия с другими приложениями, обычно в сетевой среде. Эти API инициируют исходящее соединение (для клиентов), прием запроса на установление соединения (для серверов), передачу и прием данных по этим соединениям и их разрыв.
В спецификацию Windows Sockets включен стандартный набор API, поддерживаемый всеми стеками TCP/IP для Windows. Windows Sockets — это реализация API Berkeley Sockets, разработанного для ОС UNIX, дополненная средствами интеграции с прикладными средами на базе систем сообщений Win 16 и Microsoft Win32®. Windows Sockets также поддерживает ряд других транспортных протоколов — например, некоторые его реализации совместимы с IPX/SPX и NetBEUI.
Windows Sockets обеспечивает парное взаимодействие абонентов с установлением потокового соединения, а также парное или множественное взаимодействие без установления соединения (ориентированное на дейтаграммы). При использовании стека протоколов TCP/IP потоковые соединения поддерживаются протоколом TCP, а взаимодействия, ориентированные на дейтаграммы, — протоколом пользовательских дейтаграмм (User Datagram Protocol, UDP).
Большинство протоколов прикладного уровня (HTTP, FTP, Gopher и т. д.) представляют собой клиент-серверные протоколы с установлением соединения. Обычно для обработки пользовательского запроса клиент устанавливает соединение с сервером. Тот обрабатывает такой запрос и начинает взаимодействовать с клиентом в соответствии с правилами, заданными конкретным протоколом прикладного уровня.
Коммуникационные каналы в Windows Sockets реализованы в виде структур данных, которые называются сокетами. Сокет идентифицируется адресом и номером порта.
Например, с TCP/IP-сокетом связаны IP-адрес и порт TCP или UDP. Номер порта обозначает виртуальный канал, используемый для взаимодействия на уровне TCP/UDP. Соединение, ориентированное на поток (TCP), задается двумя такими парами: локальный адрес/номер порта и удаленный адрес/номер порта.
Служба WinSock Proxy
Служба WinSock Proxy работает с компьютерами-клиентами под управлением ОС Windows. Она обеспечивает клиентскую и серверную поддержку большинства Интернет-приложений, взаимодействующих средствами Windows Sockets.
Приложение-клиент использует различные API Windows Sockets для взаимодействия с другим приложением, выполняющимся на удаленном компьютере в Интернете. WinSock Proxy перехватывает вызовы Windows Sockets и создает коммуникационный канал между локальным приложением, шлюзом и приложением в Интернете. Этот процесс полностью прозрачен для обоих программ. Удаленное приложение в Интернете взаимодействует с локальным точно так же, как если бы последнее выполнялось на шлюзе.
Служба WinSock Proxy поддерживает удаленное выполнение приложений, отвечающих спецификации Windows Sockets 1.1 (но не Windows Sockets 2.0).
Компоненты службы WinSock Proxy
WinSock Proxy состоит из службы, выполняющейся на компьютере Proxy Server, и динамической библиотеки, устанавливаемой на каждом компьютере-клиенте. На компьютерах-клиентах библиотека или библиотеки Windows Sockets переименовываются, а их прежнее имя присваивается библиотеке клиента службы WinSock Proxy. Это приводит к двум последствиям. Во-первых, приложения Windows Sockets связываются с динамической библиотекой клиента WinSock Proxy. Во-вторых, эта библиотека связывается с переименованной исходной библиотекой Windows Sockets.
Работа службы WinSock Proxy
Служба WinSock Proxy может работать только на компьютере под управлением Windows NT Server 4.0. Она запускается как отдельная служба Windows NT и отвечает за создание виртуальных соединений между приложениями в локальной сети и приложениями в Интернете. Помимо этого, она отвечает за передачу данных по двум каналам, образующим виртуальное соединение, а также выполняет функции межпротокольного шлюза, если внутренняя сеть базируется на протоколе IPX/SPX.
Библиотека клиента службы WinSock Proxy
Динамическая библиотека клиента службы WinSock Proxy перехватывает вызовы приложениями API Windows Sockets на компьютере-клиенте. В зависимости от API и текущего состояния сокета, данная библиотека может выполнить следующие действия:
— или —
передать необходимую информацию службе WinSock Proxy, выполняющейся на компьютере-шлюзе.
Для организации взаимодействия между приложениями в локальной сети библиотека клиента WinSock Proxy передает вызовы Windows Sockets API установленной (и переименованной) библиотеке Windows Sockets, поэтому все обычные взаимодействия в рамках Windows Sockets по-прежнему возможны. Они реализуются и в том случае, если на компьютере-клиенте службы WinSock Proxy установлен стек TCP/IP и библиотека Windows Sockets стороннего производителя.
Существует две версии библиотеки клиента службы WinSock Proxy: 16-разрадная (Winsock.dll) и 32-разрядная (Wsock32.dll). Первая устанавливается на компьютерах под управлением Windows 3.1 и Windows for Workgroups 3.11, а вторая — на компьютерах под управлением Windows NT. Для Windows 95 годятся обе версии.
Управляющий канал WinSock Proxy
Служба WinSock Proxy создает управляющий канал между клиентом и сервером. Он обеспечивает возможность удаленного использования сообщений Windows Sockets, Подразумевается, что этот канал будет использоваться как можно реже, а количество API Windows Sockets, требующих специальной обработки на клиенте, должно быть минимально.
Управляющий канал создается при первой загрузке библиотеки клиента службы WinSock Proxy и применяет протокол UDP без установления соединения. Для обеспечения надежности этого канала клиент WinSock Proxy и служба WinSock Proxy используют простой протокол с механизмом подтверждений. Вот некоторые задачи, решаемые при помощи управляющего канала.
Архитектура WinSock Proxy требует от библиотеки клиента службы WinSock Proxy дополнительных действий при установке соединения с узлом Интернета. Однако после создания соединения или коммуникационного канала клиент вправе использовать стандартные API Windows Sockets и Win32 для чтения и записи в сокет или файл без каких-либо дополнительных действий.
Управляющий канал между сервером WinSock Proxy и компьютерами-клиентами с обеих сторон использует UDP-порт 1745.
Локальные сети на базе TCP/IP
В локальных сетях на базе TCP/IP иногда необходимо взаимодействие TCP/IP- приложений с локальными (работающими во внутренней сети) или удаленными (работающими в Интернете) приложениями. В процессе инициализации библиотека клиента службы WinSock Proxy получает от службы WinSock Proxy по управляющему каналу копию таблицы локальных адресов. Эта таблица содержит список IP-адресов и сегментов, принадлежащих внутренней сети.
В пределах локальной и удаленной сетей библиотека клиента службы WinSock Proxy маршрутизирует исходящие соединения, инициализируемые приложениями на компьютере-клиенте с заданным IP-адресом. Если приложение пытается установить соединение с локальным IP-адресом, библиотека клиента WinSock Proxy передает запрос настоящей (переименованной) библиотеке Windows Sockets без какой- либо обработки.
Иногда библиотека клиента WinSock Proxy не может определить, с каким компьютером — локальным или удаленным — приложение пытается установить соединение. В подобных случаях по соображениям безопасности считается, что приложение пытается установить локальное соединение.
Локальные сети на базе IPX/SPX
Если в локальной сети не используется протокол TCP/IP, то сервер WinSock Proxy предполагает, что все TCP/IP-соединения, которые пытаются установить приложения Windows Sockets, — удаленные и их будет обрабатывать сервер WinSock Proxy. В отличие от локальной сети на базе TCP/IP, в этом случае при инициализации библиотеке клиента службы WinSock Proxy не передается информация о маршрутизации, а канал управления использует протокол IPX, а не UDP.
Когда локальное приложение пытается установить TCP/IP-соединение, библиотека клиента службы WinSock Proxy меняет параметры Windows Sockets API для соответствия протоколу IPX/SPX (преобразование адреса и т. п.), и взаимодействие между клиентом и сервером WinSock Proxy осуществляется средствами IPX/SPX.
Таким образом, сервер WinSock Proxy работает в качестве межпротокольного шлюза, поддерживая взаимодействие протоколов IPX/SPX во внутренней сети и TCP/IP в Интернете.
Совместное использование Web Proxy и WinSock Proxy
Если службы Web Proxy и WinSock Proxy используются одновременно, их стоит сконфигурировать так, чтобы они дополняли возможности друг друга. Чтобы воспользоваться преимуществами совместной работы этих служб, измените конфигурацию следующим образом:
После этого службы WinSock Proxy и Web Proxy будут обрабатывать HTTP-, FTP- и Gopher-запросы Web-обозревателя по следующему алгоритму.
Резюме
Служба WinSock Proxy оказывает представительские услуги Windows-приложениям, использующим интерфейс Windows Sockets, обеспечивая им прозрачное взаимодействие с Интернетом. Для достижения максимальной эффективности можно использовать эту службу вместе со службой Web Proxy.