А как будет работать p2p чат без сервера, если юзеры будут за NAT ?
Как юзеры будут находить друг друга без серверов, если у них будут динамические IP ?
Ну, наверняка будут какие-то начальные публичные узлы на серверах. Имеется в виду, что они будут такими же равноправными единицами, как и все остальное. Ну, а дальше все зависит от дизайна протокола, вот например пробивка NAT в RTMFP: https://tools.ietf.org/html/rfc7016#section-3.5.1.6
grey_rat: Почему не p2p? Все узлы равноправны. При установке указывается какой-то начальный список доверенных узлов, далее этот список может изменяться уже в соответствии с дизайном протокола. Управляющих серверов при этом нет. Любая нода не за NAT может играть роль вспомогательной для пробивки NAT.
Какая-то нода должна иметь статический IP и при этом находиться постоянно в сети, иначе списки узлов будут не актуальны уже на завтрашний день (с обновлением их IP).
Если вспомогательная нода с белым IP и проброшенным портом выйдет из сети, то у остальных переписка в чате неожиданно оборвётся.
grey_rat: Если каждая нода с белым IP выполняет роль "вспомогательной", то проблема выхода "вспомогательной" ноды из сети не так уж актуальна, если мы рассчитываем на вменяемое общее кол-во нод в сети. Я только не пойму все никак, почему Вы это считаете не p2p? Это скорее проблемы, с которыми приходиться мириться при реализации p2p в современной сети. Извините за дотошность, но мне правда интересно.
Потому что такая p2p сеть становится сильно зависимой от многих условий. И проще поднять серверный чат, с различными правилами, например антимат и антифлуд со 100% доступностью чем городить чат, для которого так или иначе придётся подымать особенные ноды. Вменяемое количество нод из ничего в одно мгновение не появится. Это p2p на костылях.