Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > p2p через часть роутеров


Автор: ShamanUA 23.11.2012, 14:07
Доброго вам дня. Пишу программу и необходимо реализовать связь между двумя комп'ютерами находящихся за цепочкой NAT-ов. (см. рисунок).
Часть роутеров является общой для обоих комп'ютерив. Суть задачи - пропускать трафик через первый совместный маршрутизатор (красная стрелка, цепочка COMP1-NAT3-NAT2-NAT4-COMP2)...
Для этого нужно узнать всю цепочку роутеров находящихся между комп'ютером и сервером (см. рис).
Как это можно узнать? какие будут идеи?
user posted image

Автор: feodorv 23.11.2012, 16:10
Цитата(ShamanUA @  23.11.2012,  15:07 Найти цитируемый пост)
Для этого нужно узнать всю цепочку роутеров 

А как такое знание может помочь задаче?
По мне, так нужно прописывать маршрутизацию на NAT2.

Автор: ShamanUA 23.11.2012, 16:39
Цитата

А как такое знание может помочь задаче?

если знать всю цепочку роутеров стоящие между комп'ютером и сервером и вторим комп'ютером и сервером, можно узнать адрес первого совместного роутера.
Программа создается не для конкретного случая а для общего.
количество роутеров в схеме неизвестна
Цитата

По мне, так нужно прописывать маршрутизацию на NAT2.

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
Цитата

Надёжно -- никак. 

скайп умеет такое делать, значыть возможно както

Цитата

он вычислит по айпи админа этих роутеров 

по айпи роутера нельзя вычислить его владельца.

Цитата

одновременно UDP-пакеты в адрес видимых из сети роутеров

из сети можно видеть любой роутер...


tzirechnoy, ваша идея с одновременными пакетами не будет работать

я уже прочитал достаточно литературы ...
и везде пишет одно и тоже ... читайте внимательнее вопрос

Автор: feodorv 23.11.2012, 18:59
Цитата(ShamanUA @  23.11.2012,  17:39 Найти цитируемый пост)
если знать всю цепочку роутеров стоящие между комп'ютером и сервером и вторим комп'ютером и сервером, можно узнать адрес первого совместного роутера.

Роутеры могут иметь 10 тысяч IP адресов, тем более с участием NAT. И IP-адрес одного и того же роутера, видимый с первого компьютера, может отличаться от IP-адреса роутера, видимого со второго компьютера. В общем случае)))

Но всё же вопрос повис в воздухе:
Цитата(feodorv @  23.11.2012,  17:10 Найти цитируемый пост)
А как такое знание может помочь задаче?

В чём тогда состоит задача? Начально она была сформулирована так:
Цитата(ShamanUA @  23.11.2012,  15:07 Найти цитируемый пост)
Пишу программу и необходимо реализовать связь между двумя комп'ютерами находящихся за цепочкой NAT-ов

Для реализации связи нет необходимости знать структуру сети. Сеть уже должна быть настроена. И даже если Вы каким-то образом узнаете IP-адрес первого совместного роутера, то как это знание поможет с реализацией связи между двумя компьютерами?

Автор: ShamanUA 23.11.2012, 19:07
Цитата

IP-адрес одного и того же роутера, видимый с первого компьютера, может отличаться от IP-адреса роутера, видимого со второго компьютера

интересно где это вы такое вычитали?

Цитата

И даже если Вы каким-то образом узнаете IP-адрес первого совместного роутера, то как это знание поможет с реализацией связи между двумя компьютерами?

с этим я еще не разобрался, но думаю это правильное направление ...

Автор: feodorv 23.11.2012, 19:21
Цитата(ShamanUA @  23.11.2012,  20:07 Найти цитируемый пост)
интересно где это вы такое вычитали?

Я не вычитал, я с этим работал)))

Цитата(ShamanUA @  23.11.2012,  20:07 Найти цитируемый пост)
с этим я еще не разобрался, но думаю это правильное направление ...

Вот есть сомнение насчёт правильности. В любом случае, если удастся разобраться, дайте знать  smile 

Цитата(ShamanUA @  23.11.2012,  19:33 Найти цитируемый пост)
скайп умеет такое делать, значыть возможно както

Можно же поинтересоваться, как http://www.aif.ru/techno/article/37457...

Автор: ShamanUA 23.11.2012, 19:34
Цитата

Я не вычитал, я с этим работал)))

я уверен что роутер имеет одну и ту же айпи из разных компьютеров (если бы он имел различные айпи то тогда с ним не могли бы соединиться другие роутеры в которых прописана адресация в таблице)
если можете покажите где написано что он имеет разное айпи.

Автор: feodorv 23.11.2012, 21:50
Цитата(ShamanUA @  23.11.2012,  20:34 Найти цитируемый пост)
я уверен что роутер имеет одну и ту же айпи из разных компьютеро

IP-адрес есть характеристика интерфейса (грубо говоря - сетевой платы), а не компьютера в целом. Маршрутизаторы как раз обычно имеют несколько интерфейсов, соответственно, и несколько IP. В Вашем примере первый компьютер может работать через один интерфейс (и видеть один IP адрес маршрутизатора), другой компьютер - через другой интерфейс (и видеть другой IP адрес того же маршрутизатора). А ещё для интерфейса может быть прописан alias (синоним). В случае с NAT всё усложняется, NAT может использовать целый набор IP-адресов (выделенную подсетку). То есть удалённый сервер с которым Вы соединились второй раз, может увидеть совсем другой Ваш IP-адрес, чем это было в первый раз. 

Цитата(ShamanUA @  23.11.2012,  20:34 Найти цитируемый пост)
если бы он имел различные айпи то тогда с ним не могли бы соединиться другие роутеры в которых прописана адресация в таблице)

В таблицах адресации обычно всё же указывается IP-адрес интерфейса сервера, ближайшего к компьютеру, на котором формируется эта таблица. Поэтому всё работает.

Автор: ShamanUA 24.11.2012, 10:58
feodorv, я не имею желания с вами спорить, вижу вы любите читать фантастику, читайте больше документацию ... википедия и гугл вам в помощь ...

Друзья, будьте добры помогите хоть какими-то идеями ...

Автор: feodorv 24.11.2012, 18:25
Цитата(ShamanUA @  24.11.2012,  11:58 Найти цитируемый пост)
вы любите читать фантастику, читайте больше документацию

Не понимаю причин столь странной реакции. Если нечто противоречит Вашим убеждениям, то это не значит, что это нечто - фантастика)))

Цитата
Маршрутизатор обычно имеет несколько маршрутизирующих сетевых интерфейсов, каждому из которых задается IP адрес из диапазона сети, к которой он подключается.

http://www.netza.ru/2012/10/router.html

Цитата
Достаточно часто необходимо назначить на один сетевой интерфейс несколько ip.

http://ruunix.ru/57-konfigurirovanie-alias-na-setevyx-interfejsax.html

Цитата
Динамический NAT — Отображает незарегистрированный IP-адрес на зарегистрированный адрес от группы зарегистрированных IP-адресов.

http://ru.wikipedia.org/wiki/NAT

Автор: ShamanUA 25.11.2012, 11:07
feodorv, Я признаю свою неправоту. я немного неправильно понял ваши мысли и случаи которые вы имели в виду.

Цитата

я уверен что роутер имеет одну и ту же айпи из разных компьютеро

Я не розлядав случай который вы привели в пример (
Я рассматривал случай когда викоритсовуеться простой роутер .... и все сети которые он обеденяет одного ИР диапазона.
В таком случае как привели вы, моя программа должна считать их разными и подниматься для обмена пакетами на один роутер выше.

Цитата

Достаточно часто необходимо назначить на один сетевой интерфейс несколько ip.

думаю программе должно быть все равно такой случай, если соединение ушло с першго айпи то и весь обмен данными должно продолжаться с первого айпи, а о инсування другой программа и не догадываться.

Цитата

Динамический NAT — Отображает незарегистрированный IP-адрес на зарегистрированный адрес от группы зарегистрированных IP-адресов.

Я буду использовать STUN протокол, и после открытия сессии через роутеры, буду ее поддерживать активной ... следовательно мне те що  роутер имеет динаминий нат не вредит, так же как и DHCP. при DHCP - произойдет просто пересединения и докачка файла.

Мы отклонились от темы.
Вопрос поднят в начале темы остается актуальным ....
Прошу помочь форумчат, возможно у кого-то какие-то идеи есть ....

Автор: tzirechnoy 26.11.2012, 08:26
О, я смотрю, я только подумал отписаться на ответ мне -- но не отписался. Мда.

Цитата
скайп умеет такое делать, значыть возможно както


Надёжно -- не умеет. И он использует udp hole punching (это второй мой совет) -- а когда не получается переходит на использование (промежуточных) хостов с анонсированными адресами.

Цитата
из сети можно видеть любой роутер...


Не вдаваясь в совершэнную неверность этой Вашэй фразы -- я имел в виду в адрес последнего NAT-роутера, который и будет виден в сети.

Цитата
tzirechnoy, ваша идея с одновременными пакетами не будет работать


Ну, что я могу тут сказать. Не будет, так не будет, мне-то что.

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)