Порты Bittorrent, зачем они мне?

Я рассматриваю распределение файлов между филиалами, использующими Bittorrent. Я понимаю, что клиенту Bittorrent нужны порты в диапазоне 6881-6999 для пересылки в Интернет для ускорения передачи.

Что я не понимаю, так это: как это делает вещи быстрее? Я мог бы понять, что если не обеспечить надлежащие средства связи между клиентами, они не смогут разговаривать друг с другом. Но везде, куда бы я ни посмотрел, я вижу только совет: "Просто перенаправьте порты, и передача ускорится"

Извините, если это не по теме, но мне кажется, что это связано с сетью.

7 ответов

Типичным примером протокола P2P является Bittorrent. В этом протоколе сообщения часто управляются трекером. Это означает, что для передачи данных требуется минимум три узла:

+-----+               +---------+      +------+      
|     |  1.1.1.1:500  |         |      |      |      
| You |<------------->| Tracker |<---->| Peer |
|     |               |         |      |      |      
+-----+               +---------+      +------+      

Соединение для вас начинается с сообщения трекеру вашего IP-адреса и порта, к которому вы подключаетесь. Затем трекер сохраняет это в таблице состояний:

+--------------+------------+
| Nodes        | Completion |
| 1.1.1.1:500  | 0%         |
| 2.2.2.2:1000 | 100%       |
+--------------+------------|

Peer установил, что он подключен к порту 1000. Мы вернемся к этому.

Адреса 1.1.1.1 а также 2.2.2.2 представляют внешние адреса устройств NAT. Эти устройства широко распространены в современном Интернете, поскольку почти у каждого пользователя установлен маршрутизатор для доступа к нескольким компьютерам, мобильным телефонам, игровым приставкам и т. Д.

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

Однако: поскольку один адрес может быть подключен только к порту в диапазоне 1-65535Как ваш маршрутизатор узнает, подключить ли запрос порта 500 к вашему компьютеру с запущенным торрент-клиентом? Вы проинструктировали его, предоставив ему правило, называемое переадресацией портов, чтобы сказать "любые соединения, которые вы получаете через порт 500, я хочу переадресовать мне" - где me Ваш внутренний адрес (один из 10.x.x.x, 192.168.x.x или же 172.16.x.x).

Поскольку вы только что присоединились к "рою", объявив трекеру, трекер отправит вам приведенную выше таблицу состояний. Вы знаете, что только что присоединились и имеете 0% завершения, но это Peer имеет 100% завершение, что означает, что вы знаете, если вы подключитесь к нему, вы сможете начать получать данные.

Если Peer не "переадресовал" свой порт (1000, как он сообщил трекеру, когда объявил), однако вы не сможете подключиться и начать получать данные. Это явно нежелательно, так как теперь вы не можете завершить торрент, потому что никто не может поделиться им.

Если Peer не объявлял с тех пор, как вы подключились, он еще не знает, что вы существуете. Однако, если вы правильно настроили переадресацию портов, когда он объявит и получит новую таблицу состояний с вами, он может инициировать соединение с вами. Это будет работать, так как ваш порт переадресован.

Если у вас обоих не была включена переадресация портов, то, несмотря на то, что вы оба объявляли трекеру, потому что порты, о которых вы сказали трекеру, на самом деле не доходят до вашей машины, все возможные соединения для передачи данных блокируются вашими роутерами /NAT устройства.

Итак, вкратце: переадресация портов помогает обеспечить работоспособность обмена данными P2P, упрощая установление соединений - и, если каждый участник не разрешает переадресацию портов какого-либо рода, обмен данными P2P невозможен.

В этом вопросе тонна плохих данных. Bittorrent работает по схеме "tit-to-tat", в которой загружаемые клиенты получают предпочтение при загрузке. Чтобы загрузить данные, другие клиенты должны иметь возможность подключиться к вам, что не может произойти, если вы NAT или отключены. Таким образом, вы открываете порты, чтобы позволить другим клиентам подключаться, вы загружаете некоторые данные и получаете загрузки с более высоким приоритетом.

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

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

Вот тривиальная ссылка на это поведение.

Кроме того, вам не нужно использовать эти порты. Любой диапазон портов будет работать до тех пор, пока ваш клиент знает, что ему открыто, чтобы он мог информировать трекер.

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

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

Я не стал бы беспокоиться об этом, если вы просто передаете личные файлы. Клиенты увидят друг друга как-нибудь. На самом деле вы должны отключить другое DHT или открытие.

Я считаю, что это позволяет трекерам и клиентам опрашивать сервер Bittorrent (ваш компьютер) более точно и быстрее, потому что он не полагается на трансляцию NAT, чтобы получить то, что ему нужно.

Чтобы BitTorrent мог загружать порции, ему сначала необходимо подключиться к клиенту, у которого есть порции, которые им нужны. Есть два способа установить эту связь

  • Подключитесь к клиенту и попросите куски
  • Загрузите чанк клиенту, и пока это соединение открыто, попросите чанки взамен

Чтобы первый работал, необходимо настроить брандмауэр, чтобы разрешить входящие подключения через порты, которые прослушивает Bittorrent. Это ничем не отличается от настройки веб-сервера или FTP-сервера.

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

Когда вы скачиваете через bittorrent, вы можете передавать данные через прокси или путем установления прямых связей с другими пользователями. Поскольку пользователи подключаются к вашей машине, им нужно открыть порты. В противном случае он будет использовать NAT для разрешения соединений с вашей машиной, что медленнее и поддерживается не всеми клиентами. Следовательно, меньше клиентов равняется более медленным загрузкам.

Другие вопросы по тегам