Уважаемые хабравчане, просветите по данному вопросу.
Насколько мне известно, в bittorrent сети возможна установка соединений даже между пирами за NAT'ом. Связывание (как минимум предоставление данных друг о друге) лежит на трекере. Каким образом два исходящих соединения пиров к трекеру превращаются в соединение между ними самими? Ведь, во многих случаях, сам пир не может открыть порт для входящего соединения (например, сидит за роутером). Что происходит, и на каких уровнях OSI?
В спецификации torrent протокола этот момент оказался не освещен… Или я в упор чего-то не понимаю.
Всегда считал что установка соединений между двумя пирами за NAT'ом не возможна. Хотя бы один из пиров должен быть видимым извне.
Иначе не было бы проблем с рейтингом у пользователей сидящем на одном провайдерском ip-шнике.
Примерно так:
При скачивание файла, клиент сообщает серверу данные в которых содержится Ip, хеш. Сервер обрабатывает и отправляет клиенту количество участников для обмена и их данные. После сообщения клиенту, сервер перестает участвовать в обмене, и только отправляет клиенту обновленные данные по участникам обмена, с той периодичностью, которая заложена в настройках сервера.
В классическом примере обмен клиентов за nat практически не возможен. Возможен если
1) используется протокол ipv6
2) используется udp