
나는 p2p 연결을 사용하여 다른 사람과 연결하는 옵션을 탐색하기 시작하여 사용자가 p2p 간단한 메시지를 공유할 수 있는 안드로이드 장치용 JAVA의 간단한 소켓 프로그램을 코딩했습니다(NAT에 대해서는 전혀 몰랐습니다). 그 다음에). NAT에 대해 알게 되었으므로 이제 검색을 위해 서버를 사용하지만 페이로드는 p2p로 전송되는 다른 사용자와 TCP 연결을 설정해야 합니다. 나는 또한 XMPP를 살펴보았습니다(프로토콜이 어떻게 작동하는지에 대한 매우 훌륭하고 자세한 설명은 다음과 같습니다).여기) 및 UPnP가 있지만 구현 방법을 모르겠습니다.
또 다른 흥미로운 질문은 BitTorrent에 대한 것입니다. 왜냐하면 BitTorrent는 모든 장치, 심지어 NAT 뒤에서도 작동할 수 있기 때문입니다. BitTorrent가 어떻게 작동하는지에 대한 설명을 들을 수 없습니다.
많이 조사했지만 막혔습니다.
내 질문은 다음과 같습니다
- BitTorrent에 대한 자세한 설명(예:여기, 토렌트 작동 방식이 아님) NAT 주변에서 어떻게 작동할 수 있습니까?
- 프로그래밍 방식으로 NAT 항목을 만드는 방법이 있습니까?
- p2p에 소켓 프로그래밍이 충분합니까?
- 자신만의 프로토콜을 만드는 것이 얼마나 어렵고, 어떻게 만들 수 있나요?
- 두 장치 D1과 D2가 p2p 통신을 원하고 서로의 IP를 알고 있는 경우. D1이 D2에 요청을 보냈는데 D2의 NAT를 통과할 수 없지만 D1의 NAT에 항목이 생성되어야 합니다. 따라서 D2가 무언가를 보내려고 하면 D1의 NAT는 D2의 IP가 포함된 항목을 검색해야 합니다. 그렇다면 왜 패킷이 허용되지 않습니까?
편집하다:
NAT 관련 작업을 위해 네트워크에서 논의된 방법 중 하나는 SIP를 사용하는 것입니다. 그것은 Bleep에서는 효과가 있었지만 인터넷에서는 그 구현을 찾을 수 없습니다. 누군가 SIP가 실제로 어떻게 작동하는지 설명해 주시겠습니까?