Автор Тема: Почему torrent-tv не работает так, как задумывалось  (Прочитано 825 раз)

gksus

  • Newbie
  • *
  • Сообщений: 2
    • Просмотр профиля
Идея раздачи данных с помощью torrent технологии очень хороша, можно сказать, гениальна: бремя распространения данных перекладывается с раздающего на потребителей.
Раздающий вбрасывает порцию данных в толпу желающих, а дальше уже заинтересованные организовывают обмен этих данных между собой, не напрягая раздающего.
Нагрузка на раздающего минимальна и мало зависит от числа клиентов. Более того, чем больше клиентов, тем быстрее данные распространяются.
Казалось бы - красота...

Но. "Всё это правильно, всё это хорошо... Но только с одной стороны."" (с)

Есть одна маленькая, но немаловажная деталь: участники обмена должны видеть друг друга.
Иными словами, у участников обмена должны быть так называемые публичные (белые) IP адреса.
RFC 1918 определяет так называемые частные (серые) IP адреса, которые не должны попадать в  интернет.
Как известно из практики файлообменных сетей, обмен данными между обладателями двух "белых" IP адресов может по инициативе любого из них,
между "белым" и "серым" - только по инициативе "серого" (поскольку "белому" до "серого"" адреса не достучатьcя),
а вот между двуми "серыми"" связь просто невозможна по инициативе ни одной, ни второй стороны.

Ну и что, спросите вы? Мой провайдер выдаёт мне белый адрес.

Отлично. Всё это работает, пока в квартире всего один потребитель интернета.
Но как быть, если помимо компьютера потребуется подключить планшет, телефон, TV бокс или что-то ещё?
Не вопрос, - отвечает провайдер, - купите роутер.

Что это означает для пользователя?
А то, что внешнему интерфейсу роутера присваивается ваш чудесный "белый" адрес от провайдера, а внутри квартиры организуется маленькая локальная сеть с, увы, все теми же "серыми" частными IP адресами из RFC1918. Обмен пакетами из домашней сети и провайдером организуется по технологии NAT и это обстоятельство полностью разрушает идею обмена между потребителями данных, поскольку доступ за NAT из интернета невозможен, а, значит и к вашему компьютеру никто не сможет обратиться. Даже идея "пробросить порты во внутрь" не решает задачу полностью, поскольку на второй компьютер в домашней сети пробрасывать уже будет нечего.

Иными словами, мы приходим к ситуации, когда, большинство участников обмена "сидит" за NATом и могут только потреблять данные.
А схема обмена всех со всеми вырождается в ситуацию с одним раздающим и всеми остальными, которые могут только потреблять данные.
« Последнее редактирование: Апрель 13, 2018, 14:54:52 от gksus »

lawin1

  • Newbie
  • *
  • Сообщений: 28
    • Просмотр профиля
Даже идея "пробросить порты во внутрь" не решает задачу полностью, поскольку на второй компьютер в домашней сети пробрасывать уже будет нечего.

Как раз Port forwarding и (или) UPnp port mapping решает все.

Цитировать
A typical home router has 4 Ethernet ports.

Whereas an IP address can have 65,536 TCP or UDP ports. Your computer gets only one IP allocated by the ISP to access the internet. Most of the home routers have NAT. This means you can have around 65,000 ports. But the router has to be configured to forward these ports to your local network. And keep in mind you cannot use well known ports (0 to 1023).
« Последнее редактирование: Апрель 17, 2018, 11:28:22 от lawin1 »

gksus

  • Newbie
  • *
  • Сообщений: 2
    • Просмотр профиля
Port forwarding, он же destination nat позволит "пробросить порт" только на один ip адрес внутренней сети.
Технически это реализуется правилом файрвола, подменяющее поле dst ip в пакете ipv4. То есть при обращении к определённому порту/портам внешнего интерфейса роутера,
роутер подменяет ip адрес внешнего интерфейса на ip адрес устройства в домашней сети и ретранслирует этот пакет в домашнюю сеть, таким образом обеспечивая "доступность"
устройства из домашней сети для устройств из интернета. Если во внутренней сети более одного потребителя телевидения, то только один из них (тот, на кого нацелен dnat) "полноценный",
все же остальные - "пассивные" потребители телевидения.

И еще одно: поскольку большими пулами "белых" адресов обладают только несколько крупных провайдеров, то только они и могут себе позволить выдавать пользователям "белые" адреса.
Если же ваш провайдер - средний или мелкий, то, почти со стопроцентной гарантией, вы сидите за NAT провайдера. Проверить очень легко - посмотреть, какой ip адрес вам выдал провайдер:
если "серый" - вы за NAT провайдера. И, конечно же, провайдер пробрасывать вам порты не будет (портов, поди, мало, а абонентов, поди, много, одному пробросишь - остальным не хватит,
так что "не доставайся же ты никому").

Так что насчет "Port forwarding решает всё" - dnat  решает проблему только с одним ip адресом в домашней сети.
"Решает всё" использование протокола ipv6: NAT не нужны, поскольку всё адреса по определению "белые" и любой участник может инициировать обмен с любым  другим участником. Правда с ipv6 есть одна маленькая загвоздка: попробуйте запросить у DNS сервера AAAA ссылку для домена torrent-tv.ru .

А пока:
если вы не сидите за NATом провайдера,
если вы правильно настроили "проброс портов" на своём роутере,
если у вас в домашней сети только один потребитель телевидения,
то только тогда у Вас torrent-tv работает так, как задумывалось

Несоблюдение любого из этих условий и мы приходим к схеме "один с сошкой, семеро с ложкой".