Почему p2p-соединениям не нужны открытые порты?

5587
Zequez

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

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

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

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

7
почему бы не скачать сетевой анализатор типа [wireshark] (http://www.wireshark.org/download.html) и узнать Conrad Frix 12 лет назад 0

3 ответа на вопрос

10
Dustin G.

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

Википедия UPnP

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

Wikipedia NAT Traversal

Я думаю, что он, вероятно, говорит о NAT Traversal. Короткая версия состоит в том, что существует сторонний сервер (который имеет открытые порты), который согласовывает соединение между двумя клиентами P2P. NReilingh 12 лет назад 1
Так какой из них лучше? Разве UPnP не представляет собой угрозу безопасности? РЕДАКТИРОВАТЬ: не берите в голову, я просто нашел это: http://networking.nitecruzr.net/2006/01/nat-routers-with-upnp-security-risk-or.html Zequez 12 лет назад 0
7
Scott Chamberlain

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

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

Очень интересная статья спасибо ^^ Zequez 12 лет назад 0
4
Sitoplex

I would compare open port with a telephone number.

Imagine you can have a telephone to dial, but not a telephone number to receive calls.

For two parties to talk to each other (or one talking all the time) it does not matter who actually dial. The important part is that at least one them has a telephone number, then the other partner just calls him.

If none of them has a telephone number, a supernode is used in some systems, which could be friend that receives two calls, one from each of them, and joins them together. This is the only way to talk if none of the two parties has a telephone number. The problem is that the conversation is then constrained to the quality of the telephone line of this supernode friend.

I hope this analogy makes it easier to understand the 3 possible scenarios.

Похожие вопросы