Как одноранговые сети в мире справляются с дырочками в UDP?

767
Andrew Arrow

С биткойнами и Ethereum в новостях так много, что я начал больше изучать одноранговые сети. Мой вопрос заключается в том, нужно ли большинству людей, использующих полноценные узлы Биткойн или Эфир, открывать порт 8333 в общедоступном Интернете? Или же можно использовать что-то вроде дырокола UDP, чтобы заставить их работать без этого дополнительного шага.

т.е. получает ли обычный энтузиаст Биткойн, который устанавливает программу на свой рабочий компьютер, реально доступный TCP IP и порт, к которому могут получить доступ другие люди? Или это почти всегда включает в себя настройку маршрутизатора, чтобы сказать, что порт 8333 идет на этот конкретный компьютер. Тот же вопрос для домашних компьютеров, так как в наши дни у них также есть системы NAT.

4

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

3
harrymc

Продукты криптовалюты используют следующие порты TCP (не UDP):

  • Биткойн: 8333
  • Биткойн Тестнет: 18333
  • Litecoin: 9333
  • Тире: 9999
  • Dogecoin: 22556
  • Эфириум: 30303

Этот порт используется только для полных узлов, которые выполняют проверки транзакций и блоков для интернет-клиентов, но не требуются для не проверяющих облегченных клиентов.

Полные узлы определяются как:

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

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

Когда Bitcoin Core запускается, он устанавливает 8 исходящих соединений с другими полными узлами, чтобы он мог загружать последние блоки и транзакции. Если вы просто хотите использовать свой полный узел в качестве кошелька, вам не нужно больше, чем эти 8 соединений, но если вы хотите поддерживать облегченные клиенты и другие полные узлы в сети, вы должны разрешить входящие соединения.

Некоторые продукты используют Universal Plug and Play (uPnP) для автоматического открытия этого порта в маршрутизаторе. Большинство (но не все) маршрутизаторы поддерживают его, в противном случае необходимо вручную настроить маршрутизатор, чтобы открыть порт и перенаправить его на компьютер, на котором работает узел.

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

Рекомендации :

спасибо, отличный ответ, я также нашел этот https://dirkmittler.homeip.net/blog/archives/3340 после поиска uPnP. Таким образом, uPnP полностью отличается от UDP Hole Punching, а? Andrew Arrow 6 лет назад 1
Они не одно и то же. Хорошую статью можно найти [здесь] (https://en.wikipedia.org/wiki/UDP_hole_punching). Большинство таких P2P-программ также пытаются варьировать географическое положение своих источников, чтобы избежать замкнутых кругов - представьте себе 9 полных узлов Биткойн, каждый из которых соединяется с 8 другими и поэтому не может соединиться с остальным миром и ничего не проверять. harrymc 6 лет назад 0
Хорошо, тогда этот документ http://www.brynosaurus.com/pub/net/p2pnat/ часто цитируется как работа некоторых сетей, но в нем вообще не упоминается uPnP. Является ли эта статья просто теорией, а uPnP - реальностью? Andrew Arrow 6 лет назад 0
Это хороший документ, в котором рассматриваются возможные конфигурации сети. Это не имеет отношения к технической части того, как соединения сделаны через порты маршрутизатора, но с более высокими уровнями. Секция дырокола является правильной, и есть P2P-программы, которые используют ее по UDP, в основном некоторые торрент-клиенты, но нет продуктов криптовалюты. Продукты криптовалюты используют TCP, и пробивание дырок над ним не является надежным, в то время как эти продукты должны быть очень надежными. [TCP] (https://en.wikipedia.org/wiki/Transmission_Control_Protocol) более подходит, поскольку он надежен, упорядочен и проверен на наличие ошибок. harrymc 6 лет назад 0