2012-12-21 4 views
3

P2P Android 앱을 만들고 있습니다. 현재 문제는 동일한 네트워크에 있고 사설 IP 주소를 사용하지 않는 한 내 장치가 서로 인식하도록 할 수 없다는 것입니다. 모든 공용 IP/포트/개인 IP 주소가 데이터베이스에 저장되어 있습니다.모든 IP 정보가있는 경우 P2P 앱에 NAT를 사용하고 있습니까?

NAT가 내 시도를 차단한다는 점을 고려할 때 라우터 설정 및 포트 포워딩없이 다른 사람과 연락을 취하는 방법과 공개 IP 주소에서 선택할 개인 IP를 구체적으로 선택할 수 없습니다. 내 동료 장치에 도달에 대해 성공적으로 가고 있다고 생각 할수 있습니까.

=]

+0

http://stackoverflow.com/a/13334629/986760 도움이됩니다. – fayyazkl

+0

http://stackoverflow.com/questions/8523330/programming-p2p-application/8524609#8524609 – selbie

답변

0

점은 공공 인터넷을 통해 사용 가능한 포트 포워딩/NAT의 어떤 종류가있는 경우에만, 다른 노드에 연결할 수 있습니다. 각각의 개인 노드 (개인 IP 주소 뒤에있는 개인 IP 주소가있는 개인 노드)는 인터넷에 여전히 액세스하고 있기 때문에 가능성이 높습니다. 이미 규칙이있을 때만 발생합니다. 유일한 질문은 앱에 해당 규칙을 사용할 수 있는지 여부입니다.

위의 주석에서 언급 한 링크는 사용 된 일반적인 기술 중 일부를 언급합니다.

0

NAT 라우터를 통과하려면 STUN 및/또는 UPnP와 같은 기술을 사용해야합니다.

2

짧은 답변 : 당신이 할 수없는

긴 대답 : NAT 통과의 문제는 10 + 사람 년간의 노력이 필요하고, 내가 아는 다른 제품이 거기에 안정적 제외하고는이 작업을 수행하는 없습니다 skype (skype의 경우 skype를 신뢰할 수있는 P2P 연결 제공자로 사용하는 플러그인을 작성할 수 있습니다. 예를 들어 herehere 참조). 물론, 스카이프를 "나에게 P2P 연결을 제공하십시오"라고 서비스 제공 업체가 독점적 인 솔루션을 제공하므로 실제로는 솔루션이 아닙니다.

앞으로 몇 년 안에 IPv4에서 NAT 통과에 대해 더욱 엄격해질 다른 문제가 있습니다. 특히 ISP는 "캐리어 급 NAT"(CGN, this 참조)를 소개하기 시작합니다. 소개를 위해) 홈 NAT가 사용하는 것보다 포트 할당을위한 다른 유형의 알고리즘을 사용합니다 (더하기, 이것에 더하여, 처리 할 두 개의 계단식 NAT가 있습니다). 간략히 말하자면, 10 년 이상의 인적 자원을 손에 들고 다니지 않고 IPv4를 통한 P2P는 잊어 버리십시오. BTW, 심지어 스카이 프는 CGN (이미 모바일 연결을위한 NORM입니다. 즉, 공용 IPv4 주소로 핸드셋을 제공하는 이동 통신사가 거의 없다)에 굴복 할 것으로 예상됩니다. 그리고 이것은 (가장 가능성이 큰 IMHO) 이유입니다. MS가 스카 이프를 인수 한 후 수행 한 첫 번째 작업 중 하나는 수천 개의 릴레이를 배치하여 향후 IPv4에서 P2P 연결을 설정하는 것이 불가능할 수 있다는 것입니다 (this 참조). 이 기사의 끝 부분에있는 BS)

IPv6에 대해 더 자세히 배우기 시작하면됩니다. IPv6을 사용하면 더 이상 NAT가 없기 때문에 훨씬 쉬울 것입니다 (NPT라고하는 것이 있습니다. 하지만 그건 P2P 친화적 인 프로토콜입니다). IPv6 라우터의 문제는 (아직까지) 포트 제어 표준 프로토콜이 없다는 것입니다. 그러나 현재 제작중인 것이 있습니다 (this 참조).이/또는 다른 프로토콜이 표준화되어 CPE 제조사에서 채택 될 때 IPv6 라우터 탐색은 사소한 것입니다.

그래서 현재 가장 좋은 옵션은 앞으로 3 ~ 5 년 동안 P2P를 잊어 버리는 것입니다. 불행히도 ...

추신.2 더 많은 링크 : 1) This 내 프로젝트이며, 나를 믿어, 그것은 엉망이야; 2) CGNs in the wild.