Я бы хотел использовать Google App Engine для запуска http-трафика на устройствах, которые будут находиться за брандмауэрами/маршрутизаторами/NAT. Эти устройства будут получать команды от GAE. Я мог бы опросить устройства GAE для поиска новых сообщений, но это использует большой трафик. В качестве альтернативы, я мог бы попытаться открыть связь постоянно, но это очень дорого и плохо.Использование Google App Engine для запуска сообщений на устройство за брандмауэром
Устройства не будут иметь статических IP-адресов. Тем не менее, они будут периодически общаться с Google App Engine, и устройство может затем прослушать порт, который они только что открыли для любых входящих сообщений. Если я понимаю TCP Hole Punching, поскольку устройства уже отправили трафик на GAE, у них будет назначенный порт, который переводится в порт, который прослушивает устройство, и, соответственно, GAE имеет отверстие, доступное в брандмауэре.
Однако, для того чтобы GAE отправил трафик на устройство, ему необходимо знать порт назначения устройства на его общедоступном IP-адресе. Здесь лежит проблема, поскольку GAE не предоставляет источник/удаленный порт для входящего трафика. Не зная порта, которое только что использовало устройство, я не могу отправить устройству ничего, кроме сообщений ответа HTTP. Я не могу инициировать сообщения http/tcp на этом устройстве.
Итак, знает ли кто-нибудь о способе получения входящего источника/удаленного порта для GAE или знает альтернативный способ запуска трафика на устройства, расположенные за брандмауэрами?
TL; DR: Как вы получаете удаленный порт для сообщений HTTP, отправленных в приложения на GAE?
Спасибо, это то, что я понял. И я не считал, что внутренние адреса меняются, что делает перфорирование отверстий не очень эффективным. Итак ... Я думаю прокси-сервер apache (double?) Для обоих GAE и устройств на EC2, который запрашивает запросы на брандмауэр и из брандмауэра. Указанный прокси-сервис добавит удаленный порт addr + в заголовок или как часть строки запроса, чтобы GAE мог запомнить, куда в конечном итоге отправить прокси-трафик. Имеет ли это смысл? – danwiding