Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Соединение клиентов напрямую (через сервер)

244
22 мая 2011 года
UAS
2.0K / / 19.07.2006
Озадачился вопросом: как установить соединение между двумя клиентами напрямую в обход сервера (сервер может только сообщить адреса клиентов) с учётом того, что клиенты могут быть на сером IP?

Проще говоря - как работают сервисы типа Skype/torrent? Приведу пример.
Есть центральный сервер. Есть 100500 клиентов. Клиент входит в сеть и сообщает серверу, что он онлайн. Затем клиент хочет начать общение (пересылку данных) с другим клиентом. Сервер в данном случае может сказать - онлайн нужный клиент или нет и дать на него адрес. После этого клиент должен подключиться к другому клиенту. Тут и возникает вопрос - а как их соединить?
Если бы клиенты имели белый IP - то всё понятно. А если нет? То как и каким образом произвести подключение? Т.е. как тогда идентифицируются клиенты?

В сетях не силен. В гугл не пинать, ибо я хз как там верно составить запрос - выдает мне стандартные клиент-сервер.
360
22 мая 2011 года
P*t*
474 / / 15.02.2007
А ты уверен, что Skype и torrent такое умеют?
Может в торренте клиенты могут соединяться напрямую только если у одного из них есть белый ip, а иначе - через посредника?
244
22 мая 2011 года
UAS
2.0K / / 19.07.2006
Ну с Торрентом, может, всё сложнее, т.к. там существуют ретрекеры + учитываются локальные сиды + много ещё факторов, так что ладно, его учитывать не будем.

А в Скайп просто переводит их на соединение между собой. Хотя вот про посредника я не знаю.
Точно знаю, что старый QIP (2005) файлы передавал тоже не через сервер, а напрямую. При этом я точно помню, что обменивался файлами с людьми, при этом что у них, что у меня был серый IP.
360
22 мая 2011 года
P*t*
474 / / 15.02.2007
О, я нашел :)
http://ru.wikipedia.org/wiki/STUN
7
22 мая 2011 года
@pixo $oft
3.4K / / 20.09.2006
Вообще-то старый QIP передавал файлы напрямую,только если была возможность.А соединение в вышеозначенных тобой программах наверняка происходит через посредника.Можно кому-то позвонить и запустить сетевой монитор для проверки,например
278
22 мая 2011 года
Alexander92
1.1K / / 04.08.2008
По поводу QIP'а. Несколько лет назад достаточно подробно ковырял протокол ICQ, там все не так просто. Не знаю, как обстоит дело сейчас, но по тому стандарту (имею в виду версии протокола <= 11) "прямой" обмен файлами был возможен только если клиент мог предоставить реальный адрес. В протоколе был предусмотрен запрос возможности прямой передачи данных. Собственно, это было не только для обмена файлами, общение тоже могло происходить напрямую.
14
22 мая 2011 года
Phodopus
3.3K / / 19.06.2008
Естественно, если у 2х участников обмена серые IP, прямое соединение между ними "за просто так" невозможно. Если у одного "белый" у другого серый - только с инициацией от серого. Тут можно в протоколе договориться чтобы была возможность "перезвонить по указанному номеру"
278
22 мая 2011 года
Alexander92
1.1K / / 04.08.2008
Собственно, чего далеко ходить: посмотрите на активный и пассивный режим FTP-сервера. Привожу пример. Пусть, к примеру, FTP-сервер стоит за NAT'ом, причем наружу проброшены только стандартные порты TCP 20 и TCP 21. Очевидно, такой сервер может работать только в активном режиме. Если будет два серых адреса, никакое подключение не пройдет.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог