Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2016, 21:12   #1
Sushev
Пользователь
 
Регистрация: 14.12.2014
Сообщений: 13
По умолчанию P2P Без (явного) проброса портов

Привет всем. Только что написал небольшие скриптики для p2p соединения двух машин за NAT. Собственно пока писал их впервые и познакомился с этими NAT'ами и STUN'ами, так что в этом не шарю. Для соединения этих машин пришлось на роутерах прокинуть порты, которые используются скриптом. И после того, как уже все заработало, возник у меня вопрос - а как skype, torrent, teamviewer и другие софтины работают без необходимости явной проброски портов?
Sushev вне форума Ответить с цитированием
Старый 18.11.2016, 21:15   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

https://ru.wikipedia.org/wiki/UPnP
p51x вне форума Ответить с цитированием
Старый 18.11.2016, 21:40   #3
Sushev
Пользователь
 
Регистрация: 14.12.2014
Сообщений: 13
По умолчанию

Ага, понял. Локальный хост без аутентификации может попросить роутер прокинуть порт. А что, если UPnP выключен на роутере? Выключил сейчас на своем, а все эти программы все равно работают.
Sushev вне форума Ответить с цитированием
Старый 18.11.2016, 21:44   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Skype работает через "суперноды" - ноды, которые не скрыты за NAT, т.е. находит посредника.
Торрент не работает если оба за NAT.
TeamViewer работает через сервер, ему вообще фиолетово.
waleri вне форума Ответить с цитированием
Старый 18.11.2016, 21:44   #5
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

teamviewer работает через сервер.
TCP - всегда двунаправленный протокол.
UDP - хотя и однонаправленный, но все межсетевые экраны создают правила для так называемого возвратного канал. Он временный.
skype, torrent.
Можно вежливо попросить роутер открыть порт.
https://ru.wikipedia.org/wiki/UPnP
https://en.wikipedia.org/wiki/Portmap
https://en.wikipedia.org/wiki/NAT_Port_Mapping_Protocol
и др.

Если это не помогает, то начинают пробовать пробить защиту.
Возвратный канал UDP и TCP имеют уязвимости если сервер с белым IP будет генерировать исходящие пакеты с подменённым Dest.IP то он сможет выдавать себя за пиры закрытые натом, но при этом для второго пира и его защиты всё будет выглядеть так как будто первые пиры находятся в глобальной сети. После установления связи общение продолжается без сервера. Сервер с белым IP участвует только на этапе соединения.

Torrent и Skype - это сети в них много компьютеров и всегда найдётся такой пир который не закрыт защитой. Вот он и будет выступать сервером.

Подробнее про пробивание защиты можно прочитать в протоколе STUN.
http://www.cyberguru.ru/networks/net...t-details.html
https://en.wikipedia.org/wiki/UDP_hole_punching
http://www.brynosaurus.com/pub/net/p2pnat/
http://www.ds.ewi.tudelft.nl/reports...S-2010-007.pdf

А вообще проще посмотреть исходники тех же торрентов
http://sourceforge.net/projects/delphibt/ - компонент для работы с BitTorrent
http://sourceforge.net/projects/torrenttorque/ - торрент-клиент на Delphi
http://sourceforge.net/projects/azureus/ - исходники Vuse (Azureus)
http://sourceforge.net/softwaremap/t...c&form_cat=265 - много чего полезного


Если пробить защиту не удаётся, то работа идет через сервера с белыми IP. А если в сети и их не оказывается тогда облом.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .

Последний раз редактировалось Pavia; 18.11.2016 в 21:47.
Pavia вне форума Ответить с цитированием
Старый 19.11.2016, 13:23   #6
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

UPnP - не работает в большинстве случаев (наверно, в 70-80%). Говорю как человек, который понимает, что говорит.

Любой мобильный интернет: все эти USB-свистки, йота и так далее. Заведомо проигрышный вариант: там Symmetric NAT и там вообще нечего ловить, ибо никакой функционал проброса порта не поддерживается.

Также можно заведомо отсечь все корпоративные сети и прочее подобное. Там тоже по нескольку NAT, вложенных друг в друга

На проводном домашнем интернете роутер твой домашний конечно же поддерживать будет UPnP, но от этого никакого толку, ибо сам роутер будет находится за другим роутером (провайдерским), который ничего подобного не поддерживает. Такое возможно в редких случаях, как например у Билайна (корбина), тебе дают белый IP-адрес, который смотрит сразу в интернет, без посредников. Там у тебя динамический IP, но он всегда голый и смотрит сразу в интернет. А также в случае покупки услуги "постоянный IP".

Последний раз редактировалось rpy3uH; 19.11.2016 в 13:34.
rpy3uH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как парсить сайт без явного указания города Parallelogram PHP 4 02.08.2015 18:46
Подключение без проброски портов Shouldercannon Работа с сетью в Delphi 3 18.08.2011 15:54
p2p клиент Ntlegend Работа с сетью в Delphi 2 02.09.2010 09:13
Имя кнопки без явного указания A_L_E_X Microsoft Office Excel 5 13.03.2010 17:49
P2P сеть Nemez Работа с сетью в Delphi 2 08.09.2008 07:22