Я только что загружал новый дистрибутив Linux с помощью uTorrent и начал задаваться вопросом, как uTorrent (и другие битторренты) отправляют файлы друг другу через маршрутизаторы NAT? Очевидно, они используют трекеры, чтобы представиться, но как они передают информацию друг другу? Есть ли технический документ по этому поводу? Я не смог найти :/
Спасибо.
Как BitTorrents соединяются друг с другом?
Ответы (2)
В большинстве случаев они этого не делают. У меня ограниченная сеть, и каждый раз, когда я запускаю свою торрент-программу, она предупреждает меня, что некоторые необходимые порты/функции недоступны для меня.
Если у одной стороны есть ограниченная сеть, а у другой открытая сеть, ограниченный клиент всегда будет подключаться к открытому клиенту. Если у вас есть два ограниченных клиента, они не смогут подключиться друг к другу. Причина, по которой это вообще работает, заключается в том, что у большинства (достаточного количества) людей в торрент-сети есть какой-то вид переадресации портов или UPNP (универсальный plug and play), чтобы облегчить это.
Торрент-клиенты работают на основе так называемых распределенных хеш-таблиц. Они начинают с набора известных корней и разветвляются в поисках других связанных узлов (то есть соседей). Установите с ними соединения и поддерживайте их до установленного предела. Поскольку клиент инициирует соединение, все, что нужно сделать удаленному устройству, — это вернуть данные, и вы прекрасно получите их через NAT. Так работает сетевой трафик.