오늘 우리는 WCF의 NetTcpBinding
을 사용하여 시스템의 동료들과 통신합니다. 통신은 양방향입니다. 각 피어에는 다른 피어에 대해 열린 채널이 있습니다.외부에서 관리되는 TCP 소켓을 통한 WCF 사용
우리는 이제 아키텍처를 확장하고 두 가지 "유형"의 피어를 소개합니다. 공용 "피어"는 공용 인터넷을 통해 액세스 할 수 있지만 "내부"피어는 NAT를 지원합니다. 이것의 영향은 내부 피어가 공개 피어에 대한 TCP 연결을 설정할 수 있지만 반대로 불가능합니다. 따라서 공개 된 동료는 더 이상 내부 동료와의 연결을 설정할 수 없습니다.
TCP 연결이 대칭 (일단 설정 됨) 되었기 때문에 내부 피어가 공개 피어에 대해 필요한 모든 TCP 소켓을 설정 한 다음 공개 피어가 이러한 소켓 중 일부를 사용하여 내부 용 채널을 설정하도록해야했습니다 같은 패. 그러나 NetTcpBinding을 사용할 때 WCF는 나를 위해 TCP 소켓을 관리합니다.
이 동작을 구현하기 위해 새 전송을 작성해야합니까, 아니면 다른 방법이 있습니까?
들어오는 외부 연결이 내부 네트워크에 도달 할 수 있도록 방화벽을 통해 적절한 포트를 전달할 수도 있습니다. 외부 피어가 NAT 뒤에 있지 않다는 것을 보장 할 수는 없으므로 양쪽에서 연결을 시작하면 같은 문제가 발생합니다. 포트를 방화벽을 통해 다시 전달하지만 클라이언트 측에서 다시 해결할 수 있습니다. 각 클라이언트. – CodeCaster
@CodeCaster NAT에서 포트 전달을 사용할 수 있다는 것은 맞지만 "내부"쪽에 더 많은 구성이 필요합니다. 두 가지 유형의 피어는 두 가지 매우 다른 유형의 고객이 사용합니다. "내부"유형의 경우 최대한 구성을 조금 변경하는 것을 선호합니다. – telewin