| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Сети > p2p через часть роутеров |
| Автор: ShamanUA 23.11.2012, 14:07 |
| Доброго вам дня. Пишу программу и необходимо реализовать связь между двумя комп'ютерами находящихся за цепочкой NAT-ов. (см. рисунок). Часть роутеров является общой для обоих комп'ютерив. Суть задачи - пропускать трафик через первый совместный маршрутизатор (красная стрелка, цепочка COMP1-NAT3-NAT2-NAT4-COMP2)... Для этого нужно узнать всю цепочку роутеров находящихся между комп'ютером и сервером (см. рис). Как это можно узнать? какие будут идеи? ![]() |
| Автор: feodorv 23.11.2012, 16:10 |
А как такое знание может помочь задаче? По мне, так нужно прописывать маршрутизацию на NAT2. |
| Автор: ShamanUA 23.11.2012, 16:39 | ||||
если знать всю цепочку роутеров стоящие между комп'ютером и сервером и вторим комп'ютером и сервером, можно узнать адрес первого совместного роутера. Программа создается не для конкретного случая а для общего. количество роутеров в схеме неизвестна
Port forwarding (прописывать порты) - нельзя. Запрещена любая конфигурация роутеров. При передаче данных через NAT создается временна запись в таблице роутера, и этого достаточно чтобы обойтись без прописывания портов. |
| Автор: tzirechnoy 23.11.2012, 18:01 | ||
Ну, потом он вычислит по айпи админа этих роутеров и с братками завалится к ним, вежливо но настойчиво просить проковырять дырочку в файерволле. PS Надёжно -- никак. В некоторых случаях -- такие вещи представляет инфраструктура uPnP. В некоторых случаях работает вариант послать с обоих оконечных компьютэров одновременно UDP-пакеты в адрес видимых из сети роутеров с одинаковыми (ну, соответствующими друг другу) портами -- тогда каждый роутер думает, что это начало какого-то исходящего UDP-соединения, и, если он оставит номера портов как есть -- то пакеты успешно дойдут до адресата. Вообще, можно начинать читать с [url="http://en.wikipedia.org/wiki/NAT_traversal"] |
| Автор: ShamanUA 23.11.2012, 18:33 | ||||||
скайп умеет такое делать, значыть возможно както
по айпи роутера нельзя вычислить его владельца.
из сети можно видеть любой роутер... tzirechnoy, ваша идея с одновременными пакетами не будет работать я уже прочитал достаточно литературы ... и везде пишет одно и тоже ... читайте внимательнее вопрос |
| Автор: ShamanUA 23.11.2012, 19:07 | ||||
интересно где это вы такое вычитали?
с этим я еще не разобрался, но думаю это правильное направление ... |
| Автор: feodorv 23.11.2012, 19:21 | ||
Я не вычитал, я с этим работал)))
Вот есть сомнение насчёт правильности. В любом случае, если удастся разобраться, дайте знать Можно же поинтересоваться, как http://www.aif.ru/techno/article/37457... |
| Автор: ShamanUA 23.11.2012, 19:34 | ||
я уверен что роутер имеет одну и ту же айпи из разных компьютеров (если бы он имел различные айпи то тогда с ним не могли бы соединиться другие роутеры в которых прописана адресация в таблице) если можете покажите где написано что он имеет разное айпи. |
| Автор: feodorv 23.11.2012, 21:50 | ||||
IP-адрес есть характеристика интерфейса (грубо говоря - сетевой платы), а не компьютера в целом. Маршрутизаторы как раз обычно имеют несколько интерфейсов, соответственно, и несколько IP. В Вашем примере первый компьютер может работать через один интерфейс (и видеть один IP адрес маршрутизатора), другой компьютер - через другой интерфейс (и видеть другой IP адрес того же маршрутизатора). А ещё для интерфейса может быть прописан alias (синоним). В случае с NAT всё усложняется, NAT может использовать целый набор IP-адресов (выделенную подсетку). То есть удалённый сервер с которым Вы соединились второй раз, может увидеть совсем другой Ваш IP-адрес, чем это было в первый раз.
В таблицах адресации обычно всё же указывается IP-адрес интерфейса сервера, ближайшего к компьютеру, на котором формируется эта таблица. Поэтому всё работает. |
| Автор: ShamanUA 24.11.2012, 10:58 |
| feodorv, я не имею желания с вами спорить, вижу вы любите читать фантастику, читайте больше документацию ... википедия и гугл вам в помощь ... Друзья, будьте добры помогите хоть какими-то идеями ... |
| Автор: feodorv 24.11.2012, 18:25 | ||||||
Не понимаю причин столь странной реакции. Если нечто противоречит Вашим убеждениям, то это не значит, что это нечто - фантастика)))
http://www.netza.ru/2012/10/router.html
http://ruunix.ru/57-konfigurirovanie-alias-na-setevyx-interfejsax.html
http://ru.wikipedia.org/wiki/NAT |
| Автор: ShamanUA 25.11.2012, 11:07 | ||||||
feodorv, Я признаю свою неправоту. я немного неправильно понял ваши мысли и случаи которые вы имели в виду.
Я не розлядав случай который вы привели в пример ( Я рассматривал случай когда викоритсовуеться простой роутер .... и все сети которые он обеденяет одного ИР диапазона. В таком случае как привели вы, моя программа должна считать их разными и подниматься для обмена пакетами на один роутер выше.
думаю программе должно быть все равно такой случай, если соединение ушло с першго айпи то и весь обмен данными должно продолжаться с первого айпи, а о инсування другой программа и не догадываться.
Я буду использовать STUN протокол, и после открытия сессии через роутеры, буду ее поддерживать активной ... следовательно мне те що роутер имеет динаминий нат не вредит, так же как и DHCP. при DHCP - произойдет просто пересединения и докачка файла. Мы отклонились от темы. Вопрос поднят в начале темы остается актуальным .... Прошу помочь форумчат, возможно у кого-то какие-то идеи есть .... |
| Автор: tzirechnoy 26.11.2012, 08:26 | ||||||
О, я смотрю, я только подумал отписаться на ответ мне -- но не отписался. Мда.
Надёжно -- не умеет. И он использует udp hole punching (это второй мой совет) -- а когда не получается переходит на использование (промежуточных) хостов с анонсированными адресами.
Не вдаваясь в совершэнную неверность этой Вашэй фразы -- я имел в виду в адрес последнего NAT-роутера, который и будет виден в сети.
Ну, что я могу тут сказать. Не будет, так не будет, мне-то что. PS Вы ничего не знаете о работе современного IP. Вашы догадки откровенно смешны. Когда Вашы построения Вашэй будущей сети можно понять -- они тожэ смешны, но чаще всего это какой-то набор несвязанных с реальностью терминов, которые просто нельзя понять однозначно. Я не знаю, проблема это в литературе, которую Вы читаете или в Вашэм умении воспринимать информацыю. Но Вам следует что-то сделать с Вашыми знаниями (например, заняться практикой, или сменить детскую литературу для стран третьего мира на RFC и формально-логический подход к их пониманию). |
| Автор: ShamanUA 26.11.2012, 11:11 |
| tzirechnoy, смешно читать такое от человека, который ничего толкового сказать не может, толкько занимается выпендрежем, говоря "я такой умный, а вы все лузеры" ... если вы такие умные то прочтите первое сообщение и скажите что-то по теме. |
| Автор: tzirechnoy 26.11.2012, 11:58 |
| Всю полезную информацыю я сказал после слова PS в первом своём сообщении. В дальнейшэм -- sapienti sat. |
| Автор: SVN74 1.12.2012, 22:47 |
| http://it.sander.su/udp-hole-punching.php http://ilya-314.livejournal.com/109825.html |