Я чертовски погуглил по этой теме, но мне все еще нужна помощь. Есть похожие вопросы по stackoverflow, но ни один не соответствует точному (и на них нет хороших ответов).
Я хочу написать программу (если она еще не существует и если это возможно), которая позволяет пользователям Windows 7+ настраивать одноранговую ячеистую сеть с помощью одного адаптера Wi-Fi, а затем каким-то образом обеспечивает подключение, подобное обычному подключению к Интернету для каждый узел. Бонусом является то, что устройства, такие как телефоны, не нуждаются в дополнительном программном обеспечении, но могут подключаться к одному или нескольким узлам сетки, как если бы это была стандартная точка доступа.
Не знаю, как это сделать, но думаю:
- Одна беспроводная карта может быть настроена для работы в режиме adhoc программно с помощью Windows Wireless-ADHOC API.
- Специальный режим обычно исключает режим инфраструктуры, если драйвер адаптера не поддерживает его, поэтому для подключения узла к реальному Интернету потребуется второй адаптер.
- Наша программа будет иметь / нуждаться в монопольном управлении адаптером Wi-Fi.
- Аспект сети достигается независимо от adhoc-соединения с помощью протокола маршрутизации, такого как Babel.
- Интернет должен быть предоставлен через какой-то новый виртуальный адаптер, созданный нашей программой. (Какую роль играет этот новый адаптер, что делает его адаптером, с которым любая программа, поддерживающая работу с сетью, должна проконсультироваться для доступа в Интернет?)
- Если на узле доступно реальное интернет-соединение, оно будет передано этим узлом другим узлам в сети через реализацию Babel.
- Независимо от того, доступен ли Интернет с какого-либо узла, не уверен, какие службы могут быть размещены в самой сети. Как предоставляется разрешение ресурса / доменного имени?
- Если текущий узел имеет Интернет, любые запросы к Интернет-ресурсам будут проходить напрямую через него, а любые ресурсы внутри сетки будут проходить через Babel. Если этот узел потеряет прямой доступ в Интернет, весь трафик будет проходить через Babel. Нужно ли это программировать или сетевой стек Windows знает, как с этим справиться, если наша программа написана правильно?
- Поскольку это Windows 7+, IPv6 является законным выбором для адресации узлов в сети, однако ожидается, что не все подключения к Интернету будут поддерживать IPv6. Некоторые могут. Как мы отличим интернет-сегмент от сегмента сетки?
- Сетка может быть сколь угодно большой, и Babel и другие компоненты смогут обрабатывать ее с хорошей пропускной способностью, низким использованием памяти и оптимальной конвергенцией путей.
Совершенно ясно, что у меня нет предыстории, чтобы действительно завершить этот проект, но я хотел бы понять схему решения. Можете ли вы прокомментировать, что в схеме правильно, а что отсутствует / неправильно? Какие концепции стали ненужными или устаревшими из-за появления новых технологий?
Насколько простым может быть узел в эксплуатации? Насколько защищен каждый узел от атак других узлов? Отравление сетевого трафика и маршрутизации?
Я читал о проектах, которые преследуют аналогичные цели для Linux, но ничего на текущий момент для Windows. Некоторые дискуссии об автомобилях и аварийно-спасательных службах, но это другое. Меня заинтересовал ураган «Сэнди», связанный с возможностью подключения популярных операционных систем в жилых домах в ситуациях массовых отключений городских сетей. Когда для многих недоступны системы электроснабжения и связи, сетка может помочь.
Почти все участники меша не будут настраивать свои узлы заранее. Вместо этого они могут искать чужие беспроводные сети, когда их не работают, находить SSID «Free Emergency Mesh WiFi» и подключаться. Как и в случае с горячими точками, им будет представлена прокси-страница входа в систему, которая объясняет проект и предлагает ссылку для установки, если они хотят участвовать. Если нет, они все равно могут подключиться к «точке доступа» ячеистой сети в качестве клиента.