Я начал изучать возможность подключения к другому с помощью соединения p2p, поэтому я закодировал простую программу сокетов в JAVA для устройств Android, в которой пользователь, в котором пользователи могут делиться простыми сообщениями p2p (у меня не было никакой идеи о NAT тогда). Я узнал об NAT, поэтому теперь мне нужно установить TCP-соединение с другим пользователем, который использует сервер для обнаружения, но передается полезная нагрузка p2p. Я также посмотрел на XMPP (очень хорошее и подробное объяснение того, как работает протокол: here) и UPnP, но я не знаю, как их реализовать.Подключение P2P через NAT?
Другой интересный вопрос, который возникает, это BitTorrent, потому что он может работать на любом устройстве и даже за NAT. Я не могу понять, как работает BitTorrent.
Я много исследовал, но застрял.
Мои вопросы:
- Подробное объяснение BitTorrent (как here, а не как потоки работают), и как она способна работать вокруг NAT?
- Есть ли способ сделать вход NAT программным путем?
- Является ли программирование сокетов достаточным для p2p?
- Насколько сложно создать собственный протокол и как его построить?
- Если два устройства D1 и D2 хотят передать p2p, и они знают IP-адрес друг друга. D1 отправляет запрос D2 и не может пройти через NAT D2, но должна быть запись, созданная в NAT D1. Поэтому, когда D2 пытается отправить что-то NAT, D1 должен обнаружить запись с IP-адресом D2. Тогда почему пакет не разрешен?
Bittorrent использует [UDP отверстие штамповки.] (Http://en.wikipedia.org/wiki/UDP_hole_punching) Я не думаю, что есть подробные объяснения того, насколько доступно в сети. – Encombe
@ Encombe Я прочитал про отверстие. 1. Не всегда успешно 2. Сообщения не могут передаваться с использованием UDP, что очень ненадежно. – user3439988
@Encombe Также вы могли бы рассказать мне, как эти протоколы относятся к динамическому IP-адресу, а IP-адрес телефона остается неизменным для одного сеанса или того, что является периодом ожидания? – user3439988