
Ich begann, die Möglichkeit zu erkunden, mich mit anderen über eine P2P-Verbindung zu verbinden, und codierte daher ein einfaches Socket-Programm in JAVA für Android-Geräte, in dem die Benutzer einfache Nachrichten P2P austauschen können (ich hatte damals keine Ahnung von NAT). Ich habe von NAT erfahren, also muss ich jetzt eine TCP-Verbindung mit einem anderen Benutzer herstellen, die einen Server zur Erkennung verwendet, aber die Nutzlast P2P übertragen wird. Ich habe mir auch XMPP angesehen (eine sehr gute und detaillierte Erklärung, wie das Protokoll funktioniert, istHier) und UPnP, aber ich weiß nicht, wie ich sie implementieren soll.
Eine weitere interessante Frage betrifft BitTorrent, da es auf jedem Gerät und sogar hinter einem NAT funktioniert. Ich kann keine Erklärung dafür bekommen, wie BitTorrent funktioniert.
Ich habe viel recherchiert, aber ich stecke fest.
Meine Fragen sind:
- Eine detaillierte Erklärung von BitTorrent (wieHier, nicht wie Torrents funktionieren) und wie kann NAT umgangen werden?
- Gibt es eine Möglichkeit, programmgesteuert einen NAT-Eintrag vorzunehmen?
- Reicht Socket-Programmierung für P2P aus?
- Wie schwierig ist es, ein eigenes Protokoll zu erstellen, und wie kann ich eines erstellen?
- Wenn zwei Geräte D1 und D2 p2p kommunizieren möchten und die IP des jeweils anderen kennen, sendet D1 eine Anfrage an D2, die nicht durch das NAT von D2 kommt, aber in D1s NAT sollte ein Eintrag erstellt werden. Wenn D2 also versucht, etwas zu senden, sollte D1s NAT einen Eintrag mit D2s IP finden. Warum wird das Paket dann von ihm nicht zugelassen?
Bearbeiten:
Eine der im Internet diskutierten Methoden, um NAT zu umgehen, ist die Verwendung von SIP. Das hat bei Bleep funktioniert, aber ich kann im Internet keine Implementierung davon finden. Könnte mir bitte jemand erklären, wie SIP tatsächlich funktioniert.