Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Windows Communication Foundation (WCF) предоставляет новый сетевой протокол на основе TCP (net.tcp://) для высокопроизводительного взаимодействия. WCF также представляет новый системный компонент, службу общего доступа к портам Net.TCP, которая позволяет использовать порты net.tcp для нескольких пользовательских процессов.
Фон и мотивация
Когда протокол TCP/IP был введен впервые, используется только небольшое количество протоколов приложений. Номера портов TCP/IP используются для различения приложений путем назначения уникального 16-разрядного номера порта каждому протоколу приложения. Например, http-трафик сегодня стандартизован для использования TCP-порта 80, SMTP использует TCP-порт 25, а FTP использует TCP-порты 20 и 21. Другие приложения, использующие TCP в качестве транспорта, могут выбрать другой доступный номер порта либо по соглашению, либо через официальную стандартизацию.
Использование номеров портов для различения приложений имело проблемы с безопасностью. Брандмауэры обычно настраиваются для блокировки трафика TCP на всех портах, за исключением нескольких известных точек входа, поэтому развертывание приложения, использующего нестандартный порт, часто является сложным или даже невозможным из-за наличия корпоративных и личных брандмауэров. Приложения, которые могут взаимодействовать через стандартные известные порты, которые уже разрешены, сокращают область внешней атаки. Многие сетевые приложения используют протокол HTTP, так как большинство брандмауэров настроены по умолчанию, чтобы разрешить трафик через TCP-порт 80.
Модель HTTP.SYS, в которой трафик для многих различных приложений HTTP мультиплексирован на один TCP-порт стал стандартным на платформе Windows. Это обеспечивает общую точку управления администраторами брандмауэра, позволяя разработчикам приложений свести к минимуму затраты на развертывание новых приложений, которые могут использовать сеть.
Возможность совместного использования портов между несколькими HTTP-приложениями уже давно является функцией служб IIS. Однако это было только с введением HTTP.SYS (прослушиватель протокола HTTP в режиме ядра) с IIS 6.0, что эта инфраструктура была полностью обобщена. В действительности HTTP.SYS позволяет произвольным пользовательским процессам совместно использовать TCP-порты, выделенные для HTTP-трафика. Эта возможность позволяет многим http-приложениям сосуществовать на одном физическом компьютере в отдельных изолированных процессах при совместном использовании сетевой инфраструктуры, необходимой для отправки и получения трафика через TCP-порт 80. Служба общего доступа к порту Net.TCP позволяет использовать один и тот же тип общего доступа к портам для приложений net.tcp.
Архитектура общего доступа к портам
Архитектура общего доступа к портам в WCF имеет три основных компонента:
Рабочий процесс: любой процесс обмена данными по net.tcp:// с помощью общих портов.
Транспорт TCP WCF: реализует протокол net.tcp://.
Служба общего доступа к tcp-порту Net.TCP: позволяет многим рабочим процессам совместно использовать один и тот же TCP-порт.
Служба общего доступа к портам Net.TCP — это служба Windows в пользовательском режиме, которая принимает подключения net.tcp:// от имени рабочих процессов, которые подключаются через него. При поступлении подключения сокета служба общего доступа к порту проверяет входящий поток сообщений, чтобы получить его целевой адрес. На основе этого адреса служба общего доступа портов может направлять поток данных в приложение, которое в конечном итоге обрабатывает его.
Когда откроется служба WCF, использующая общий доступ к портам net.tcp://, инфраструктура транспорта WCF TCP не открывает непосредственно сокет TCP в процессе приложения. Вместо этого инфраструктура транспорта регистрирует базовый адрес идентификатора ресурса службы (URI) в службе общего доступа к портам Net.TCP и ожидает, когда служба общего доступа к портам будет прослушивать сообщения от его имени. Служба общего доступа портов отправляет сообщения, адресованные службе приложений по мере их поступления.
Установка общего доступа к портам
Служба общего доступа к портам Net.TCP доступна во всех операционных системах, поддерживающих WinFX, но служба по умолчанию не включена. В качестве меры предосторожности администратор должен вручную включить службу общего доступа к tcp-портам Net.TCP перед первым использованием. Служба общего доступа к портам Net.TCP предоставляет параметры конфигурации, позволяющие управлять несколькими характеристиками сетевых сокетов, принадлежащих службе общего доступа к портам. Дополнительные сведения см. в разделе "Практическое руководство. Включение службы общего доступа к tcp-портам Net.TCP".
Использование общего доступа к портам Net.tcp в приложении
Самый простой способ использовать общий доступ к портам net.tcp:// в приложении WCF — предоставить службу, используя NetTcpBinding, а затем включить службу общего доступа к tcp-портам Net.TCP, используя свойство PortSharingEnabled.
Дополнительные сведения о том, как это сделать, см. в разделе "Практическое руководство. Настройка службы WCF для использования общего доступа к портам".
Последствия для безопасности общего доступа к портам
Хотя служба общего доступа к портам Net.TCP обеспечивает уровень обработки между приложениями и сетью, приложения, использующие общий доступ к портам, все равно должны быть защищены так, как если бы они напрямую взаимодействовали с сетью. В частности, приложения, использующие совместное использование портов, должны оценивать привилегии процесса, под которыми они работают. Рассмотрите возможность запуска приложения с помощью встроенной учетной записи сетевой службы, которая выполняется с минимальным набором привилегий процесса, необходимых для сетевого взаимодействия.