LINUX.ORG.RU
ФорумAdmin

Как создаются peer-to-peer соединения?

 , , , ,


0

2

Вот установил я Syncthing. Он соединился с сервером, тот определил, что оба моих пира из одной сети, преспокойно их соединил между собой и отключился. И теперь я в задумчивости.

Как он это делает? Вот есть TCP-соединения двух пиров за NAT'ом к серверу синхронизации в интернете. Вот он видит, что они из одного айпи. Но как он совершенно выводит себя из передачи? Как он соединяет два этих клиентских TCP-соединения между собой и исключает себя?

Может кто-нибудь прояснить этот момент? Я не требую диаграмм, хотя бы примерный механизм хэндовера по модели OSI.

P.S. Вполне возможно, что я что-то не так понимаю, и сперва сервер отправляет им уведомление «А вы случаем не рядом, проверьтесь?», и если они нашли друг друга и сами, то отключается. Но если здесь какой-то более хитрый механизм, был бы рад любой подсказке.

★★★

В локальной сети пиров можно искать, используя broadcast пакеты. Посмотри сниффером.

Black_Roland ★★★★ ()
Ответ на: комментарий от Black_Roland

Хм, хороший вариант, попробую вечерком Wireshark'ом.

Думал, вдруг кто-то уже знает ответ

Adonai ★★★ ()

Вообще не знаю как там Syncthing работает, но для поиска участников без трекера используются LPD и DHT.

Black_Roland ★★★★ ()

Как он это делает? Вот есть TCP-соединения двух пиров за NAT'ом к серверу синхронизации в интернете.

А что, есть?

Вот он видит, что они из одного айпи. Но как он совершенно выводит себя из передачи? Как он соединяет два этих клиентских TCP-соединения между собой и исключает себя?

А почему ты думаешь, что оно так происходит? С чего ты вообще уверовал в существование решений для ситуации «из одного NATа» окромя «не выпендриваться и каким-нибудь local discovery искать друг друга»?..

t184256 ★★★★★ ()
Последнее исправление: t184256 (всего исправлений: 1)
Ответ на: комментарий от t184256

А почему ты думаешь, что оно так происходит? С чего ты вообще уверовал в существование решений для ситуации «из одного NATа» окромя «не выпендриваться и каким-нибудь local discovery искать друг друга»?..

Ну хорошо, предположим другую гипотетическую ситуацию. Есть два клиента из сетей разных провайдеров, хотят синхронизироваться. Означает ли это в таком случае, что весь трафик обязан будет идти через сервер?

Adonai ★★★ ()
Ответ на: комментарий от Adonai

Нет. Есть костыли, про которые ты хочешь услышать, но я затрудняюсь сказать, где на них реально полагаются. Безальтернативное гоняние данных через сервер, TURN, STUN и «не подключилось — ну и фиг с ним, есть и другие пиры» — вот то, что точно используют.

t184256 ★★★★★ ()
Ответ на: комментарий от Adonai

Все предельно просто.

Всегда есть третья сторона (будь то трекер или стороны пир). Как например работает sip, он просо говорит о том что неким двум хостам нужно соединится, в том или ином порядке.

Valor ()
Ответ на: комментарий от Adonai

Означает ли это в таком случае, что весь трафик обязан будет идти через сервер?

Если не удастся установить прямой пир между клиентами, конечно все будет идти через сервер

anonymous ()

Пир может сам прислать адрес, на котором он доступен. Потом трекер передаст этот адрес другому пиру, и, если они рядом, пойдет обмен напрямую.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.