2011-01-19 4 views
0

에 대해서 나는 단지 두 응용 프로그램이 인터넷을 통해 어떻게 상호 작용하는지 알고 싶습니다. IP가 고정되어 있지 않기 때문에 다른 사람에게 메시지를 보내는 방법. IP가 알려지지 않을 때 P2P 애플 리케이션이 인터넷을 통해 다른 앱을 연결하는 코딩 팁을 내게주세요.P2P 연결 및 C#

자세히 알려주세요.

+0

상호 작용이란 어떤 의미입니까? 당신은 "IP가 고정되어 있지 않기 때문에 어떤 메시지를 다른 메시지로 보냅니다"라고 말하면서, 어떤 종류의 메시지를, 왜 그럴까요? 시도해 봤어?우리가 도와 줘요! –

답변

2

구현 세부 정보 및 코딩 팁을 익히기 전에 P2P 네트워크가 일반적으로 어떻게 작동하는지, 가능한 아키텍처는 무엇인지 등을 배우십시오 (http://en.wikipedia.org/wiki/Peer-to-peer에서 시작). 귀하의 질문은 너무 자세해서 "도와 드리겠습니다".

편집 : 빨리 얻을하려면이 편리 할 수있다 : WCF의 채널 netPeerTcpBinding가 작동 피어가 피어 이름 확인 프로토콜 및 단순 서비스 검색 프로토콜의 조합을 사용하는 것을 .NET P2P: Writing Peer-to-Peer Networked Apps with the Microsoft .NET Framework

1

일반적으로 알려진 위치의 서버에서 호스팅되는 일종의 디렉토리를 통해 발생합니다.

1

Spender가 지적했듯이 서버를 중간에서 사용하지 않으면이 작업을 수행 할 수 없습니다. 친구의 주소를 모른다면 친구를 방문 할 수 있으리라 생각합니까?

즉, P2P 연결을 설정하려는 두 컴퓨터는 각각 알려진 서버에 접속하여 연결 정보를 교환합니다. 그 후에 그들은 이론적으로 서로 이야기 할 수있었습니다.

그러나 NAT를 사용하는 라우터 뒤에 있기 때문에 라우터에서 포트를 열거 나 NAT를 피하기 위해 어떤 종류의 기술을 사용하지 않고도 들어오는 패킷을받을 수 없습니다.

2

방법을 피어 메쉬에서 피어를 발견 할 수 있습니다.

SSDP는 직접 연결할 수있는 피어를 찾기 위해 로컬 서브넷에서 작동합니다. 전통적인 네트워크 방송 기술을 통해이를 수행합니다.

PNRP는 IPv6를 사용하여 네트워크와 인터넷을 통해 작동합니다. 대부분의 네트워크는 아직 IPv6을 지원하지 않기 때문에 Teredo는 IPv4를 통해이 통신을 터널링하는 데 사용됩니다.

P2P 메쉬가 글로벌 클라우드에 게시되면 메쉬 이름은 Microsoft의 공개적으로 액세스 할 수있는 PNRP 시드 서버 중 하나로 전송됩니다. 새로운 동료가 온라인 상태가되면 먼저이 시드 서버에 부분 피어 목록을 요청합니다. 그런 다음이 목록을 사용하여 다른 피어 이름 확인을 수행합니다.

피어가 글로벌 클라우드에서 해결되면 일반적으로 IPv6 주소로 확인됩니다. 피어의 주소가 변경 될 때마다이 정보가 메시를 통해 보내 지므로 다른 피어가 정보를 알 수 있습니다.

이 본질적으로 분산 해시 테이블입니다 : http://en.wikipedia.org/wiki/Distributed_hash_table

당신은 메시에 데이터를 보낼 때,이 데이터를 전송하는 시스템이 직접 알고 피어에 피어 채널로 라우팅됩니다. 이들 피어 각각은 잘 알려진 피어 (peer) 등으로 라우팅됩니다. 메시지가 메시의 모든 피어로 전송 될 때까지 계속됩니다.

Teredo와 IPv6 덕분에 인터넷을 통해 (심지어 방화벽/NAT 장치 뒤에서도) 작동합니다.