다음을 통해 공유


Net.TCP 포트 공유

WCF(Windows Communication Foundation)는 고성능 통신을 위한 새로운 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 트래픽을 차단하도록 구성되므로 비표준 포트를 사용하는 애플리케이션을 배포하는 것은 회사 및 개인 방화벽의 존재로 인해 복잡하거나 불가능한 경우가 많습니다. 이미 허용된 잘 알려진 표준 포트를 통해 통신할 수 있는 애플리케이션은 외부 공격 표면을 줄입니다. 대부분의 방화벽은 기본적으로 TCP 포트 80에서 트래픽을 허용하도록 구성되므로 많은 네트워크 애플리케이션에서 HTTP 프로토콜을 사용합니다.

여러 다른 HTTP 애플리케이션에 대한 트래픽이 단일 TCP 포트에 멀티플렉싱되는 HTTP.SYS 모델은 Windows 플랫폼에서 표준이 되었습니다. 이렇게 하면 애플리케이션 개발자가 네트워크를 사용할 수 있는 새 애플리케이션을 빌드하는 데 드는 배포 비용을 최소화할 수 있도록 하면서 방화벽 관리자를 위한 공통 제어 지점을 제공합니다.

여러 HTTP 애플리케이션에서 포트를 공유하는 기능은 오랫동안 IIS(인터넷 정보 서비스)의 기능이었습니다. 그러나 IIS 6.0을 사용하는 HTTP.SYS(커널 모드 HTTP 프로토콜 수신기)가 도입되었을 때만 이 인프라가 완전히 일반화되었습니다. 실제로 HTTP.SYS 임의의 사용자 프로세스가 HTTP 트래픽 전용 TCP 포트를 공유할 수 있습니다. 이 기능을 사용하면 많은 HTTP 애플리케이션이 TCP 포트 80을 통해 트래픽을 보내고 받는 데 필요한 네트워크 인프라를 공유하면서 별도의 격리된 프로세스에서 동일한 물리적 컴퓨터에 공존할 수 있습니다. Net.TCP 포트 공유 서비스를 사용하면 net.tcp 애플리케이션에 대해 동일한 유형의 포트 공유를 사용할 수 있습니다.

포트 공유 아키텍처

WCF의 포트 공유 아키텍처에는 세 가지 주요 구성 요소가 있습니다.

  • 작업자 프로세스: 공유 포트를 사용하여 net.tcp://를 통해 통신하는 모든 프로세스입니다.

  • WCF TCP 전송: net.tcp:// 프로토콜을 구현합니다.

  • Net.TCP 포트 공유 서비스: 많은 작업자 프로세스가 동일한 TCP 포트를 공유할 수 있습니다.

Net.TCP 포트 공유 서비스는 사용자 모드 Windows 서비스로, 연결된 작업자 프로세스를 대신하여 net.tcp:// 연결을 수락하는 역할을 합니다. 소켓 연결이 도착하면 포트 공유 서비스는 들어오는 메시지 스트림을 검사하여 대상 주소를 가져옵니다. 이 주소에 따라 포트 공유 서비스는 데이터 스트림을 궁극적으로 처리하는 애플리케이션으로 라우팅할 수 있습니다.

net.tcp:// 포트 공유를 사용하는 WCF 서비스가 열리면 WCF TCP 전송 인프라가 애플리케이션 프로세스에서 TCP 소켓을 직접 열지 않습니다. 대신, 전송 인프라는 Net.TCP 포트 공유 서비스에 서비스의 기본 주소 URI(Uniform Resource Identifier)를 등록하고 포트 공유 서비스가 대신 메시지를 수신 대기할 때까지 기다립니다. 포트 공유 기능은 메시지가 도착하는 즉시 애플리케이션 서비스에 주소가 지정된 메시지를 전달합니다.

포트 공유 설치

Net.TCP 포트 공유 서비스는 WinFX를 지원하는 모든 운영 체제에서 사용할 수 있지만 서비스는 기본적으로 사용하도록 설정되지 않습니다. 보안 예방 조치로 관리자는 먼저 사용하기 전에 Net.TCP 포트 공유 서비스를 수동으로 사용하도록 설정해야 합니다. Net.TCP 포트 공유 서비스는 포트 공유 서비스가 소유한 네트워크 소켓의 여러 특성을 조작할 수 있는 구성 옵션을 노출합니다. 자세한 내용은 방법: Net.TCP 포트 공유 서비스 사용 방법을 참조하세요.

애플리케이션에서 Net.tcp 포트 공유 사용

WCF 애플리케이션에서 net.tcp:// 포트 공유를 사용하는 가장 쉬운 방법은 NetTcpBinding을 사용하여 서비스를 노출하고 PortSharingEnabled 속성을 사용하여 Net.TCP 포트 공유 서비스를 활성화하는 것입니다.

이 작업을 수행하는 방법에 대한 자세한 내용은 방법: 포트 공유를 사용하도록 WCF 서비스 구성을 참조하세요.

포트 공유의 보안 영향

Net.TCP 포트 공유 서비스는 애플리케이션과 네트워크 간에 처리 계층을 제공하지만 포트 공유를 사용하는 애플리케이션은 네트워크에서 직접 수신 대기하는 것처럼 보호되어야 합니다. 특히 포트 공유를 사용하는 애플리케이션은 실행되는 프로세스 권한을 평가해야 합니다. 네트워크 통신에 필요한 최소한의 프로세스 권한 집합으로 실행되는 기본 제공 네트워크 서비스 계정을 사용하여 애플리케이션을 실행하는 것이 좋습니다.

참고하십시오