7

Я имею в виду, если кто-то скачивает с меня файл, не значит ли это, что я хозяин, а он со мной соединяется?

Или я к нему подключаюсь?

В любом случае, одному из нас нужен открытый порт, нет?

У меня нет маршрутизатора с открытым портом на моем компьютере в роутере, так как же я принимаю соединения?

3 ответа3

10

Если ваш маршрутизатор поддерживает UPnP, возможно, что используемое вами приложение p2p открывает порты на маршрутизаторе без необходимости ручной настройки открытых портов.

Википедия UPnP

В противном случае возможно, что ваше приложение использует процесс, называемый NAT traversal, который распространен в приложениях p2p и приложениях удаленного рабочего стола, таких как GoToMyPC или Hamachi. Эта технология предназначена для работы через преобразование сетевых адресов, которое считается брандмауэром, но также является средством для частной сети, использующей один IP-адрес в Интернете (что использует ваш маршрутизатор).

Wikipedia NAT Traversal

7

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

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

4

Я бы сравнил открытый порт с номером телефона.

Представьте, что вы можете иметь телефон для набора, но не номер телефона для приема звонков.

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

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

Я надеюсь, что эта аналогия облегчит понимание 3 возможных сценариев.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .