네트워크 연결의 클라이언트와 서버에는 통신을 위한 직접적이고 열린 경로가 없는 경우가 많습니다. 패킷은 엔드포인트 컴퓨터와 네트워크의 중간 컴퓨터 모두에서 필터링, 라우팅, 분석 및 변환됩니다. NAT(네트워크 주소 변환) 및 방화벽은 네트워크 통신에 참여할 수 있는 중간 애플리케이션의 일반적인 예입니다.
WCF(Windows Communication Foundation) 전송 및 MEP(메시지 교환 패턴)는 NAT 및 방화벽이 있는 경우와 다르게 반응합니다. 이 항목에서는 일반적인 네트워크 토폴로지에서 NAT 및 방화벽이 작동하는 방법을 설명합니다. WCF 전송 및 MEP의 특정 조합에 대한 권장 사항은 네트워크의 NAT 및 방화벽에 애플리케이션을 보다 강력하게 만드는 데 도움이 됩니다.
NAT가 통신에 미치는 영향
NAT는 여러 컴퓨터가 단일 외부 IP 주소를 공유할 수 있도록 하기 위해 만들어졌습니다. 포트 다시 매핑 NAT는 새 포트 번호를 사용하여 외부 IP 주소에 연결하기 위한 내부 IP 주소 및 포트를 매핑합니다. 새 포트 번호를 사용하면 NAT가 반환 트래픽과 원래 통신의 상관 관계를 지정할 수 있습니다. 많은 가정 사용자는 이제 개인적으로만 라우팅할 수 있고 NAT를 사용하여 패킷의 전역 라우팅을 제공하는 IP 주소를 가지고 있습니다.
NAT는 보안 경계를 제공하지 않습니다. 그러나 일반적인 NAT 구성은 내부 컴퓨터의 직접 주소를 지정하지 못하게 합니다. 이렇게 하면 일부 원치 않는 연결에서 내부 컴퓨터를 보호하고 데이터를 클라이언트로 비동기적으로 다시 보내야 하는 서버 애플리케이션을 쓰기가 어렵습니다. NAT는 NAT 컴퓨터에서 연결이 시작되는 것처럼 보이도록 패킷의 주소를 다시 작성합니다. 이렇게 하면 클라이언트에 대한 연결을 다시 열려고 할 때 서버가 실패합니다. 서버에서 클라이언트의 인식된 주소를 사용하는 경우 클라이언트 주소를 공개적으로 라우팅할 수 없으므로 실패합니다. 서버에서 NAT 주소를 사용하는 경우 해당 컴퓨터에서 수신 대기 중인 애플리케이션이 없으므로 연결에 실패합니다.
일부 NAT는 외부 컴퓨터가 특정 내부 컴퓨터에 연결할 수 있도록 전달 규칙의 구성을 지원합니다. 전달 규칙을 구성하는 지침은 다양한 NAT에 따라 다르며 최종 사용자에게 NAT 구성을 변경하도록 요청하는 것은 대부분의 애플리케이션에 권장되지 않습니다. 대부분의 최종 사용자는 특정 애플리케이션에 대한 NAT 구성을 변경할 수 없거나 변경할 수 없습니다.
방화벽이 통신에 미치는 영향
방화벽은 통과되는 트래픽에 규칙을 적용하여 통과 허용 여부를 결정하는 소프트웨어 또는 하드웨어 디바이스입니다. 들어오는 트래픽 및/또는 나가는 트래픽 스트림을 검사하도록 방화벽을 구성할 수 있습니다. 방화벽은 네트워크 가장자리 또는 엔드포인트 호스트에서 네트워크에 대한 보안 경계를 제공합니다. 비즈니스 사용자는 악의적인 공격을 방지하기 위해 일반적으로 서버를 방화벽 뒤에 두어 했습니다. Windows XP에서 개인 방화벽이 도입된 이후 방화벽 뒤에 있는 가정용 사용자 수도 크게 증가했습니다. 이렇게 하면 연결의 한쪽 또는 양쪽 끝에 패킷을 검사하는 방화벽이 있을 수 있습니다.
방화벽은 패킷을 검사하기 위한 복잡성 및 기능 측면에서 매우 다양합니다. 간단한 방화벽은 패킷의 원본 및 대상 주소 및 포트에 따라 규칙을 적용합니다. 지능형 방화벽은 패킷의 내용을 검사하여 결정을 내릴 수도 있습니다. 이러한 방화벽은 다양한 구성으로 제공되며 특수 애플리케이션에 자주 사용됩니다.
홈 사용자 방화벽에 대한 일반적인 구성은 이전에 해당 컴퓨터에 나가는 연결이 이루어지지 않는 한 들어오는 연결을 금지하는 것입니다. 비즈니스 사용자 방화벽에 대한 일반적인 구성은 특별히 식별된 그룹을 제외한 모든 포트에서 들어오는 연결을 금지하는 것입니다. 예를 들어 HTTP 및 HTTPS 서비스를 제공하기 위해 포트 80 및 443을 제외한 모든 포트에서 연결을 금지하는 방화벽이 있습니다. 관리되는 방화벽은 컴퓨터에서 신뢰할 수 있는 사용자 또는 프로세스가 방화벽 구성을 변경할 수 있도록 허용하는 가정 및 비즈니스 사용자 모두에 대해 존재합니다. 관리형 방화벽은 네트워크 사용을 제어하는 회사 정책이 없는 가정용 사용자에게 더 일반적입니다.
Teredo 사용
Teredo는 NAT 뒤에 있는 컴퓨터의 직접 주소 지정을 가능하게 하는 IPv6 전환 기술입니다. Teredo는 잠재적인 연결을 보급하기 위해 공개적으로 및 전역으로 라우팅할 수 있는 서버의 사용에 의존합니다. Teredo 서버는 애플리케이션 클라이언트와 서버에 연결 정보를 교환할 수 있는 공통 모임 지점을 제공합니다. 그런 다음 컴퓨터는 임시 Teredo 주소를 요청하고 패킷은 기존 네트워크를 통해 터널링됩니다. WCF에서 Teredo를 지원하려면 운영 체제에서 IPv6 및 Teredo 지원을 사용하도록 설정해야 합니다. Windows XP 이상 운영 체제는 Teredo를 지원합니다. Windows Vista 이상 운영 체제는 기본적으로 IPv6을 지원하며 사용자가 Teredo를 사용하도록 설정하기만 하면 합니다. Windows XP SP2 및 Windows Server 2003을 사용하려면 사용자가 IPv6 및 Teredo를 모두 사용하도록 설정해야 합니다. 자세한 내용은 Teredo 개요를 참조하세요.
전송 및 메시지 교환 패턴 선택
전송 및 MEP를 선택하는 것은 3단계 프로세스입니다.
엔드포인트 머신의 주소 지정 가능성을 분석합니다. 엔터프라이즈 서버는 일반적으로 직접 주소 지정 기능을 갖지만 최종 사용자는 일반적으로 NAT에 의해 주소 지정이 차단됩니다. 최종 사용자 간의 피어 투 피어 시나리오와 같이 두 엔드포인트가 NAT 뒤에 있는 경우 주소 지정 가능성을 제공하기 위해 Teredo와 같은 기술이 필요할 수 있습니다.
엔드포인트 머신의 프로토콜 및 포트 제한을 분석합니다. 엔터프라이즈 서버는 일반적으로 많은 포트를 차단하는 강력한 방화벽 뒤에 있습니다. 그러나 포트 80은 HTTP 트래픽을 허용하기 위해 자주 열리고 포트 443은 HTTPS 트래픽을 허용하도록 열려 있습니다. 최종 사용자는 포트 제한이 있을 가능성이 적지만 나가는 연결만 허용하는 방화벽 뒤에 있을 수 있습니다. 일부 방화벽은 엔드포인트의 애플리케이션에서 연결을 선택적으로 열 수 있도록 허용합니다.
네트워크의 주소 지정 가능성 및 포트 제한이 허용하는 전송 및 MEP를 계산합니다.
클라이언트 서버 애플리케이션의 일반적인 토폴로지는 아웃바운드 전용 방화벽이 있는 Teredo 없이 NAT 뒤에 있는 클라이언트와 강력한 방화벽으로 직접 주소 지정이 가능한 서버를 갖는 것입니다. 이 시나리오에서는 이중 MEP를 사용하는 TCP 전송과 요청-회신 MEP가 있는 HTTP 전송이 제대로 작동합니다. 피어 투 피어 애플리케이션의 일반적인 토폴로지는 NAT와 방화벽 뒤에 엔드포인트를 둘 다 사용하는 것입니다. 이 시나리오 및 네트워크 토폴로지 알 수 없는 시나리오에서는 다음 권장 사항을 고려합니다.
이중 전송을 사용하지 마세요. 이중 전송은 더 많은 연결을 열어 성공적으로 연결할 가능성을 줄입니다.
원래 연결을 통해 다시 채널을 설정할 수 있습니다. 이중 TCP와 같은 백 채널을 사용하면 연결 수가 줄어들어 성공적으로 연결할 가능성이 높아질 수 있습니다.
엔드포인트를 등록하거나 트래픽을 릴레이하기 위해 연결 가능한 서비스를 사용합니다. Teredo 서버와 같이 전역적으로 연결할 수 있는 연결 서비스를 사용하면 네트워크 토폴로지가 제한적이거나 알 수 없는 경우 성공적으로 연결할 가능성이 크게 높아집니다.
다음 표에서는 단방향, 요청-회신 및 이중 MEP 및 표준 TCP, Teredo가 있는 TCP 및 WCF의 표준 및 이중 HTTP 전송을 살펴봅니다.
주소 지정 가능성 | 서버 다이렉트 | NAT 통과를 사용하는 서버 다이렉트 | 서버 네트워크 주소 변환 (NAT) | NAT 트래버설이 가능한 서버 NAT |
---|---|---|---|---|
클라이언트 직접 | 모든 전송 및 MEP | 모든 전송 및 MEP | 지원되지 않습니다. | 지원되지 않습니다. |
NAT 통과를 통한 직접 클라이언트 연결 | 모든 전송 및 MEP. | 모든 전송 및 MEP. | 지원되지 않습니다. | Teredo 및 MEP를 사용한 TCP. Windows Vista에는 Teredo에서 HTTP를 지원하는 컴퓨터 전체 구성 옵션이 있습니다. |
클라이언트 NAT | 모든 비 이중 전송 및 MEP. 이중 MEP에는 TCP 전송이 필요합니다. | 모든 비 이중 전송 및 MEP. 이중 MEP에는 TCP 전송이 필요합니다. | 지원되지 않습니다. | 지원되지 않습니다. |
NAT 통과 기능을 갖춘 클라이언트 NAT | 모든 비 이중 전송 및 MEP. 이중 MEP에는 TCP 전송이 필요합니다. | 이중 HTTP 및 MEP를 제외한 모든 항목 이중 MEP에는 TCP 전송이 필요합니다. 이중 TCP 전송에는 Teredo가 필요합니다. Windows Vista에는 Teredo에서 HTTP를 지원하는 컴퓨터 전체 구성 옵션이 있습니다. | 지원되지 않습니다. | Teredo 및 MEP를 사용한 TCP. Windows Vista에는 Teredo에서 HTTP를 지원하는 컴퓨터 전체 구성 옵션이 있습니다. |
방화벽 제한 사항 | 서버 열기 | 관리되는 방화벽이 있는 서버 | HTTP 전용 방화벽이 있는 서버 | 아웃바운드 전용 방화벽이 있는 서버 |
---|---|---|---|---|
클라이언트 열기 | 모든 전송 및 MEP. | 모든 전송 및 MEP. | 모든 HTTP 전송 및 MEP(메시징 교환 패턴). | 지원되지 않습니다. |
관리되는 방화벽이 있는 클라이언트 | 모든 비 이중 전송 및 MEP. 이중 MEP에는 TCP 전송이 필요합니다. | 모든 비 이중 전송 및 MEP. 이중 MEP에는 TCP 전송이 필요합니다. | 모든 HTTP 전송 및 MEP(메시징 교환 패턴). | 지원되지 않습니다. |
HTTP 전용 방화벽이 있는 클라이언트 | 모든 HTTP 전송 및 MEP(메시징 교환 패턴). | 모든 HTTP 전송 및 MEP(메시징 교환 패턴). | 모든 HTTP 전송 및 MEP(메시징 교환 패턴). | 지원되지 않습니다. |
아웃바운드 전용 방화벽이 있는 클라이언트 | 모든 비 이중 전송 및 MEP. 이중 MEP에는 TCP 전송이 필요합니다. | 모든 비 이중 전송 및 MEP. 이중 MEP에는 TCP 전송이 필요합니다. | 모든 HTTP 전송 방식 및 이중이 아닌 메시지 교환 패턴(MEP). | 지원되지 않습니다. |