Преодоление ограничений брандмауэров - PullRequest
1 голос
/ 26 июня 2010

Если обычный пользователь интернета хочет связаться со службой TCP на своем компьютере, но без необходимости проходить через перевод брандмауэра, я думаю, что я прав, говоря, что «лучший» способ сделать это - иметь 3-го посередине, которая будет принимать соединения как с домашнего компьютера пользователя, так и с его путешествующего компьютера и действовать как прокси.

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

Если это так, как бы я разработал сервер Ruby / Sinatra, который бы отслеживал эти постоянные соединения, а затем переадресовывал запросы от путешествующего компьютера дальше? (Предположим, что служба домашнего компьютера может выполнять любые вызовы, необходимые для установления связи)

Спасибо, ребята!

EDIT

Я думаю, что я слишком обобщен, я пересылаю HTTP-запросы (или, по крайней мере, запросы, поступающие с путешествующего компьютера, будут основаны на HTTP), поэтому я решил, что имеет смысл использовать sinatra для захвата запросов от путешественника. , Однако моя проблема заключается в том, как сохранить открытое соединение с домашним компьютером и прокси, чтобы я мог немедленно пересылать запросы.

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

1 Ответ

1 голос
/ 26 июня 2010

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

Если вы хотитеБолее непрерывный поток данных, вы можете не захотеть использовать sinatra - особенно для получения данных с путешествующего компьютера.Проверьте Event Machine - http://wiki.github.com/eventmachine/eventmachine/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...