Если обычный пользователь интернета хочет связаться со службой TCP на своем компьютере, но без необходимости проходить через перевод брандмауэра, я думаю, что я прав, говоря, что «лучший» способ сделать это - иметь 3-го посередине, которая будет принимать соединения как с домашнего компьютера пользователя, так и с его путешествующего компьютера и действовать как прокси.
Но как именно это достигается? Очевидно, что путешествующий компьютер просто связывается с прокси-сервером всякий раз, когда ему нужна информация, но как это затем передается обратно на домашний компьютер? Поддерживает ли домашний компьютер постоянное соединение с прокси-сервером, что обеспечивает двунаправленный поток данных?
Если это так, как бы я разработал сервер Ruby / Sinatra, который бы отслеживал эти постоянные соединения, а затем переадресовывал запросы от путешествующего компьютера дальше? (Предположим, что служба домашнего компьютера может выполнять любые вызовы, необходимые для установления связи)
Спасибо, ребята!
EDIT
Я думаю, что я слишком обобщен, я пересылаю HTTP-запросы (или, по крайней мере, запросы, поступающие с путешествующего компьютера, будут основаны на HTTP), поэтому я решил, что имеет смысл использовать sinatra для захвата запросов от путешественника. , Однако моя проблема заключается в том, как сохранить открытое соединение с домашним компьютером и прокси, чтобы я мог немедленно пересылать запросы.
Я знаю, что постоянные HTTP-соединения могут быть выполнены, но, поскольку они немного запутаны, было бы лучше, если бы домашний компьютер постоянно устанавливал соединение нижнего уровня с прокси-сервером и передавал запросы поверх этого?