Свой P2P-файлообменник с блэкджеком и NAT punching: как пет-проект Z-Folder стал заменой облакам

Страницы:  1

Ответить
 

Professor Seleznov


В современных реалиях, когда интернет всё чаще напоминает минное поле с
блокировками и замедлениями, надежда на зарубежные (да и на некоторые
локальные) сервисы тает с каждым днем. В какой-то момент я пришел к выводу:
если хочешь, чтобы инструмент работал стабильно и не зависел от настроения
провайдеров или геополитики — напиши его сам.
 
Так появился, например,Fury Messenger (о котором я уже писал здесь) — мессенджер для
Android, заточенный под нестабильное соединение. Но решив проблему текстового
общения, я столкнулся со следующей «болью»: обмен файлами и документооборот. Именно на большом обьеме, а не кидая файлики или фоточки через мессенджер.
 В этой статье расскажу, как я реализовал систему прямой передачи данных между
компьютерами, почему облака — это иногда лишнее звено, и как мой «велосипед»
в итоге уехал в B2B-сегмент.
 
Проблема: Танцы с бубном вокруг VPN
 Типичный сценарий обмена файлами сегодня выглядит так:
 1.  Залить в Telegram (ограничение по размеру, скорость иногда «режут»).
2.  Закинуть на Google Drive/Dropbox (нужен VPN, который нужно то включать, то
    выключать, чтобы не отвалились другие сервисы).
3.  Передать через локальную сеть (сложно настроить права доступа, если люди
    сидят в разных сегментах или городах).
 
Мне хотелось простоты: как в старой доброй Windows Shared Folder, но через
интернет и без необходимости быть системным администратором 80-го уровня.
Чтобы можно было просто «расшарить» папку конкретному человеку и передать файл
на максимально возможной скорости канала.
 
Так родился Z-Folder.
 Архитектура: Что под капотом?
 
Я не большой фанат готовых тяжелых фреймворков там, где можно реализовать
кастомный протокол. (вообще очень люблю кастомные, бинарные протоколы) В Z-Folder я пошел по пути максимального облегчения стека.
 1. Протокол передачи
 В основе лежит UDP. Почему не TCP?
   - NAT Punching: Для установления прямого P2P-соединения между узлами,
    находящимися за NAT, UDP подходит идеально.
  - Скорость: В условиях потерь пакетов или нестабильного линка UDP позволяет
    более гибко управлять повторными отправками и окном передачи.
 
Протокол чем-то напоминает STUN, но со своими особенностями для контроля
целостности данных и управления очередями.
 
2. Пробивка NAT и Fallback
 Разумеется, чистый P2P возможен не всегда (привет, симметричные NAT в
корпоративных сетях). Схема работы выглядит так:
 
1.  Центральный сервер: Выступает точкой авторизации и «свахой» (Signaling
    server). Он знает, кто в сети, и помогает узлам найти друг друга.
2.  P2P-коннект: Узлы пытаются «пробить» NAT и соединиться напрямую. Если
    получилось — данные летят со скоростью вашего интернет-провайдера,
    минуя любые промежуточные сервера.
3.  Relay (Fallback): Если прямой коннект невозможен, система автоматически
    переключается в режим релея. В этом случае сервер выступает
    посредником, просто пересылая пакеты. Это медленнее, но
    гарантирует доставку.
 
3. Безопасность и права доступа
 Система работает по принципу «белого списка». Вы создаете пользователей в личном
кабинете (один пользователь — одно устройство). В интерфейсе вы видите список
доступных контактов. Нажимаете на пользователя — видите только те папки,
которые он расшарил именно для вас. Права можно гибко настраивать: только
чтение или чтение/запись.
 
Интерфейс и «плюшки»
 Я сторонник минимализма. Главная задача Z-Folder — сделать так, чтобы даже
человек, далекий от ИТ, мог обмениваться файлами.
 
pic
По фидюеку очень часто просили добавить "свободное место" в шаре. не знаю, для меня не было очень важной метрикой, но добавил - люди счастливы.
pic
В процессе разработки я понял, что файлообмен без контекста — это неудобно.
Поэтому добавил внутрь простенький чат. Теперь не нужно переходить в
мессенджер, чтобы написать «Лови доки», — всё происходит в одном окне.
pic
 
От пет-проекта к B2B
 Изначально я делал Z-Folder для себя и своих бизнес-партнеров. Но жизнь
подкинула интересные кейсы:
   - Кейс «Друг и локалка»: Мой знакомый никак не мог настроить общий доступ к
    папкам между двумя компами в квартире (классика Windows). Z-Folder решил
    его проблему за 2 минуты: поставил, залогинился, пользуешься.
  - Кейс «B2B»: Неожиданно проектом заинтересовались компании. Оказалось, что
    для оперативного документооборота между филиалами, особенно когда
    интернет в регионах «хромает», а VPN-шлюзы перегружены, такое легкое
    P2P-решение — настоящий спасение.
 
Итоги 
Z-Folder стал для меня ответом на вопрос: «А что если завтра отключат всё?».
Система независима от облачных хранилищ, не требует постоянного включения
VPN для доступа к файлам и выжимает максимум из доступного канала связи.
 
Сейчас сервис успешно живет, им пользуются несколько компаний и круг моих
знакомых. Это был отличный опыт создания закрытой, быстрой и надежной
экосистемы «для своих», которая переросла в нечто большее.
 
А как вы решаете вопрос передачи тяжелых файлов или документов в условиях
нынешних ограничений? Пользуетесь облаками, мессенджерами через боль или используете какие то другие решения?-Источник
 
Loading...
Error