2010-06-21 5 views
0

서버 A 클라이언트 B와 서버 C의 세 대의 컴퓨터가 있습니다. 모두 TCP/IP를 통해 연결됩니다. 컴퓨터 서버 -A와 클라이언트 -B는 방화벽 뒤에 있으며 외부 연결 만 할 수 있습니다. 컴퓨터 서버 -C는 수신 및 연결할 수 있습니다.하나의 서버를 통해 firewal 뒤에서 두 개의 연결 - 두 연결이 서버를 거치지 않고 직접 데이터를 보낼 수 있습니까?

Server-A와 server-C는 내 프로그램을 실행하므로 수신 대기하고 연결할 수 있습니다. 적어도 그렇게하도록 프로그래밍 할 수는 있습니다. Client-B에서 실행되는 소프트웨어는 연결할 수만 있습니다.

Client-B에서 Server-A로 직접 연결하려고합니다. 방화벽으로 인해 Client-B에서 Server-A (또는 다른 방법)로 직접 연결을 만들 수 없습니다. 하지만 Client-B와 Server-A를 모두 Server-C에 연결할 수 있습니다.

이 기능을 사용하려면 Client-B에서 Server-A로 (그리고 다른 방법으로) 패킷을 전달하는 Server-C에서 프록시를 만들 수 있지만 이것을 원하지는 않습니다. 클라이언트 -B와 서버 -A 간의 직접 연결.

내 질문에, Server-C가 처음에는 Server-C가 두 개만 연결하면되지만 두 소켓 스트림을 연결하여 패킷을 직접 보낼 수 있도록 IP-packet을 조작 할 수있는 방법이 있습니까? 서로에게?

일반적인 예는 다음과 같습니다. 집 컴퓨터 컴퓨터 C에 음악 파일을 보내고 싶습니다. 둘 다 방화벽/라우터/뒤에 있습니다. 따라서 그들은 포트 80의 일부 서버 B에만 연결할 수 있습니다. 이제는 서버 B가 서버 B를 통해 직접 보내지 만 A에서 C로 직접 음악 파일을 보내지 않기를 바랍니다.

모든 도움말 또는 팁은 크게 감사드립니다!

답변

0

서버 A와 클라이언트 B가 NAT 뒤에있는 경우 hole punching 접근 방식을 사용할 수 있습니다.

NAT가없는 경우 서버 -C를 통한 tcp 터널링이 좋지 않습니다.

+0

예! 그게 내가 필요한거야. 우리가 말하는 NAT 탐색 및 TURN 프로토콜을 읽습니다. 팁을 주셔서 너무 고마워요. 건배, Woporo – woporo

관련 문제