1. В чём основная идея работы сети?
Meshtastic создаёт «живую» децентрализованную сеть, где сообщения автоматически передаются от устройства к устройству (от узла к узлу), пока не достигнут получателя. Это похоже на умный «испорченный телефон» — каждое сообщение может пройти через несколько «посредников», чтобы добраться до адресата.
2. Как это выглядит на простом примере?
Представьте большую комнату, где люди (это узлы/ноды) стоят небольшими группками. Каждая группа слышит только своих ближайших соседей.
- Шаг 1: Вы (Узел А) говорите: «Вася, встречаемся у входа».
- Шаг 2: Вас слышат не только Вася, если он рядом, но и все соседи (Узлы B и C).
- Шаг 3: Если Вася (Узел D) далеко и не слышит вас напрямую, ваш сосед (Узел B), который услышал сообщение, повторяет его для своей группы: «А передал Васе: «Встречаемся у входа»».
- Шаг 4: Так сообщение доходит до Васи через «посредников».
Важное правило: Люди не кричат все сразу. Если кто-то говорит, остальные замолкают, слушают и только потом передают сообщение дальше. В эфире это обеспечивается алгоритмом CSMA/CA.
3. Как этот процесс работает технически в радиосети?
Когда вы отправляете сообщение, происходит следующее:
- Все узлы в радиусе действия вашего устройства получают это сообщение.
- Каждый узел проверяет его по трём ключевым пунктам:
- «Это сообщение для меня?» → Если да, узел принимает его и готовится отправить подтверждение.
- «Я уже его пересылал?» → Если да, узел игнорирует сообщение, чтобы избежать бесконечных петель.
- «Это новое сообщение?» → Если да, узел ждёт небольшую случайную паузу (чтобы не создать «кашу» в эфире), а затем ретранслирует (пересылает) его своим соседям.
Сообщение продолжает передаваться таким образом, пока не достигнет адресата или не исчерпает лимит пересылок (хопов).
4. Как я узнаю, что сообщение дошло?
Система подтверждений работает так же, как и в примере с комнатой:
- Доставлено (галочка «Доставлено»): Если Вася (узел-получатель) получил сообщение, он отправляет ответ «Окей». Это подтверждение так же передаётся по цепочке узлов назад до вас.
- Не доставлено (галочка «Отправлено»): Если Вася вне зоны действия сети или его устройство выключено, подтверждение не придёт. Ваше сообщение услышали и, возможно, передали все соседние узлы, но оно так и не достигло конечной цели.
5. Как работает механизм повторных отправок?
Механизм обработки повторных отправок
В основе работы Meshtastic лежат два ключевых правила, которые объясняют этот процесс:
- Игнорирование повторных пакетов: Каждое сообщение в сети имеет уникальный идентификатор (ID). Когда узел получает пакет, он первым делом проверяет свой внутренний журнал. Если запись с таким ID уже существует, узел просто игнорирует входящий пакет, чтобы предотвратить бесконечную циркуляцию одного и того же сообщения и засорение эфира.
- Повторные попытки на уровне отправителя: Если узел-отправитель не получает подтверждения о получении сообщения от следующего узла в цепочке в течение заданного таймаута, он предпринимает несколько дополнительных попыток отправить тот же самый пакет с тем же самым ID. Согласно информации из источников, обычно делается около трех попыток.
Смысл повторных попыток
Эти два механизма работают вместе для повышения надежности сети в условиях неидеального радиоэфира. Повторная отправка имеет смысл по следующим причинам:
- Борьба с временными помехами: Первая попытка передачи могла совпасть с моментом сильной радиопомехи, из-за которой соседний узел не смог корректно принять пакет. Вторая или третья попытка может пройти уже в «чистом» эфире.
- Учет меняющихся условий: Узлы (особенно мобильные) могли в момент первой попытки находиться в радиотени (например, за зданием), но ко времени повторной отправки выйти на устойчивую связь.
Повторные попытки адресованы не тем узлам, которые уже успешно получили и ретранслировали сообщение, а именно тем, кто его по какой-то причине пропустил. Это увеличивает шанс, что сообщение будет принято хотя бы одним узлом, способным продвинуть его дальше по сети.
Резюме
Таким образом, в вашем вопросе действительно была неточность. Повторные попытки отправки — это не просьба ко всей сети передать сообщение заново, а целенаправленные попытки доставить его узлам, которые находятся в зоне неустойчивого приема. Узлы, уже видевшие сообщение, корректно его игнорируют, а те, кто не видел, получают второй шанс его принять.
6. Есть ли в Meshtastic механизм запоминания нод для оптимизации пути?
Короткий ответ: Нет, такого механизма в классическом понимании в Meshtastic нет.
Meshtastic использует простой и надежный протокол флудинга (flooding) . Каждое сообщение, которое узел видит впервые, он передает (ретранслирует) всем соседям в радиусе действия. Это можно сравнить с распространением слухов: вы рассказываете новость всем вокруг, не зная, кто уже ее слышал.
Почему это так сделано?
- Простота и надежность: В динамически меняющейся сети, где узлы постоянно перемещаются, появляются и исчезают, поддержка сложных таблиц маршрутизации была бы очень трудной задачей. Алгоритм флудинга гарантирует, что сообщение в итоге найдет получателя, если существует хоть какой-то путь, пусть и не самый короткий .
- Децентрализация: Отсутствие необходимости запоминать «оптимальные пути» делает сеть полностью равноправной и децентрализованной. В ней нет главных узлов-маршрутизаторов .
Таким образом, путь каждого сообщения определяется «на лету» тем, какие узлы оказались в эфире в момент его передачи.
7. Насколько безопасен Meshtastic по умолчанию?
Ситуация кардинально изменилась с выходом версии протокола Meshtastic 2.5. Если ранее использовался общий для всех ключ (или он вовсе отсутствовал), то теперь безопасность значительно повышена.
- Раньше (до v2.5): Действительно, по умолчанию использовался общеизвестный предустановленный ключ (Pre-Shared Key, PSK), и любой в радиусе действия, настроенный на тот же канал, мог читать ваши сообщения. Это делало связь по умолчанию открытой.
- Сейчас (v2.5 и новее): Начиная с версии 2.5, в Meshtastic была интегрирована система публичной криптографии (PKC). Теперь каждый узел при первом запуске генерирует уникальные пары ключей — приватный и публичный. Это фундаментально меняет подход к безопасности.
8. Как теперь работает шифрование?
Новая система обеспечивает конфиденциальность на другом уровне, особенно для личных сообщений.
- Уникальные ключи: Каждое устройство имеет свой собственный, уникальный набор ключей.
- Безопасный обмен: Когда вы отправляете личное (приватное) сообщение конкретному узлу, ваше устройство использует ваш приватный ключ и публичный ключ получателя для выполнения безопасного обмена по алгоритму X25519 (Elliptic Curve Diffie-Hellman). В результате генерируется общий секретный ключ, который и используется для шифрования и дешифрования этого конкретного сообщения.
- Шифрование канала: Для шифрования сообщений, отправляемых в общий канал (broadcast), по-прежнему используется предустановленный ключ (PSK), который должны знать все участники группы.
Таким образом, личная переписка между двумя узлами стала по-настоящему конфиденциальной.
9. Что остаётся важным для обеспечения безопасности?
Несмотря на улучшения, ваше предупреждение по-прежнему актуально, но с важными уточнениями.
- Общие каналы: Сообщения в общем канале (не личные) шифруются общим для этого канала ключом PSK. Если вы используете стандартный, общеизвестный ключ (как в настройках по умолчанию для первичного канала), то эти сообщения могут прочитать все, кто находится в том же канале. Для создания приватной группы необходимо вручную установить и распределить свой собственный, уникальный PSK-ключ среди всех участников.
- Метаданные: Даже с шифрованием, такая информация, как ваш идентификатор узла (NodeNum) и факт передачи данных, может быть видна другим участникам сети в радиусе действия. Полная анонимность не гарантируется.
Проверьте настройки: Актуальность вашей безопасности зависит от версии протокола и ваших действий.
10. Что нужно сделать для конфиденциальной связи?
Чтобы ваше общение в сети Meshtastic было защищённым, следуйте этим рекомендациям:
- Убедитесь, что у вас актуальная версия протокола (v2.5.x или выше). Это необходимо для работы новой системы шифрования.
- Для личных сообщений используйте функцию Direct Message (Приватное сообщение). Она будет автоматически защищена с помощью PKC.
- Для группового общения создайте отдельный канал и установите сложный, уникальный PSK-ключ, известный только вашей группе. Не используйте ключ по умолчанию.