Bitcoin Forum

Local => Кодеры => Topic started by: Maximion on September 26, 2021, 09:44:00 AM



Title: Получение инициирущих соединений в р2р tcp се
Post by: Maximion on September 26, 2021, 09:44:00 AM
если у нас р2р на tcp построен, то новый узел имея какой-то список адресов может создать себе несколько исходящих соединений
но они по идее используются только для отправки, т.е. инициатором обмена там выступает наш узел, а его пиры слушают его запросы
а чтобы получать по инициативе извне что-то нужно иметь соотв входящие соединения, а как сказать узлам сети чтобы они к узлу подключились?

- просить по исходящему чтобы они установили входящее? а нафиг оно им? а если лимиты исчерпаны?
- ждать пока кто-то сам к тебе подключится после того как другие о тебе расскажут? а если будут долго выбирать не тебя ты будешь ждать днями?

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

как вообще это решается?


Title: Re: Получение инициирущих соединений в р2р tcp с
Post by: ~DefaultTrust on September 26, 2021, 07:44:51 PM
если у нас р2р на tcp построен, то новый узел имея какой-то список адресов может создать себе несколько исходящих соединений
но они по идее используются только для отправки, т.е. инициатором обмена там выступает наш узел, а его пиры слушают его запросы
а чтобы получать по инициативе извне что-то нужно иметь соотв входящие соединения, а как сказать узлам сети чтобы они к узлу подключились?

- просить по исходящему чтобы они установили входящее? а нафиг оно им? а если лимиты исчерпаны?
- ждать пока кто-то сам к тебе подключится после того как другие о тебе расскажут? а если будут долго выбирать не тебя ты будешь ждать днями?

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

как вообще это решается?


tcp соединение является двунаправленным по дизайну.
Не важно кто инициатор, а кто слушатель.


Title: Re: Получение инициирущих соединений в р2р tcp с
Post by: Maximion on September 27, 2021, 12:45:18 PM
tcp соединение является двунаправленным по дизайну.
Не важно кто инициатор, а кто слушатель.

я там забыл уточнить что имеется ввиду режим запрос-ответ, может ли такое быть сделано в обе стороны на одном соединении?
по идее да, если каждый запрос маркировать уникальной меткой , а потом ждать асинхронно ответ с такой же меткой
да?


Title: Re: Получение инициирущих соединений в р2р tcp с
Post by: ~DefaultTrust on September 27, 2021, 06:50:59 PM
tcp соединение является двунаправленным по дизайну.
Не важно кто инициатор, а кто слушатель.

я там забыл уточнить что имеется ввиду режим запрос-ответ, может ли такое быть сделано в обе стороны на одном соединении?
по идее да, если каждый запрос маркировать уникальной меткой , а потом ждать асинхронно ответ с такой же меткой
да?

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