일부 P2P 네트워킹을 실험하려고합니다. 내가 조사한 가장 큰 장애물 중 하나는 입니다. "클라이언트가 NAT/방화벽 뒤에 있다면 어떻게합니까?", 나중에 홀 펀칭에 대해 알아 냈지만 항상 작동하는 것은 아닙니다.
지금까지 내가 이해할, 나는 그것이 실패 할 수 있습니다 이유를 이해하지 않습니다, 이것은 내가 지금까지 알고있는 것입니다 : 위의 그림을 바탕으로 p2p 구멍 펀칭에 대해 열심히 무엇입니까?
, 이것은 이해하는 방법을 얼마나 성공적으로 연결 설립 될 수있다.
- 앨리스 (1) 디렉토리 서버에 대한 연결을 생성하여 네트워크 을 결합한다. 이 경우, Alice의 NAT는 공용 IP에서 로컬 IP로 매핑을 만듭니다.
- 디렉토리 서버 연결 및 저장을 수신 앨리스의 디렉토리의 공공
ip:port
을 수행하는 같은 (2), 네트워크를 결합하고 발행 그의ip:port
디렉토리에 - 앨리스
- 밥봅과 통신하고 싶어합니다. 그래서 그녀는 Bob의
ip:port
디렉토리를 찾습니다. (3) - 앨리스는 밥의
ip:port
그녀가 서버에서 가지고있는 데이터를 전송합니다. (5)는 자신의 지역에ip:port
ip:port
이다에서 밥도 매핑을 갖는다 - 때문에, NAT는 단지 데이터가 자신의 컴퓨터에 Bob의 공용
ip:port
에 수신 된 전송한다. - 동일하게 작동합니다. 앨리스
나는 내가 이해하는 바를 설명 할 때 분명히 희망을 갖고 있습니다. 제 질문은 이것에 대해 무엇이 그렇게 어렵거나 신뢰할 수 없는가라는 것입니다. 분명히 뭔가 빠져 있어야합니다. 그게 뭔지 설명해 주시겠습니까?
답변 해 주셔서 감사합니다! 한 가지 문제는'Alice의 NAT 서버에서 NAT 매핑이 타임 아웃 될 것입니다. '디렉토리 서버가 Alice에게 끊임없이 ping을가함으로써 이것을 해결할 수 없습니까? 그렇지 않다면 전형적인 P2P 클라이언트는 어떻게이 문제를 해결할 수 있습니까? – Krimson
1) 작동 할 수도 있습니다. 2) 모르겠다. 필자는 NAT 인식 P2P 시스템의 소스 코드를 읽는 것을 시도한 적이 없습니다. (하지만 당신은 할 수 있습니다.) 3)이 전체 질문은 StackOverflow의 주제와 관련이 없습니다. –