Я не совсем понимаю, какую роль могут сыграть сегодняшние прокси-серверы, и я учусь, поэтому будьте спокойны со мной :-) У меня есть система клиент / сервер, которую я написал с использованием собственного протокола, и мне нужноулучшить клиентскую сторону для согласования выхода из прокси-среды.
У меня есть существующая клиентская и серверная система, написанная на C и C ++ для скорости и небольшое количество MFC в клиенте для обработки пользователя.интерфейс.Я написал как серверную, так и клиентскую часть системы в Windows (люди, на которых я работаю, в основном веб-разработчики, использующие все для Windows, а не выбор), придерживаясь сокетов Berkeley, как это было с помощью wsock32, для эффективности.Клиенты подключаются к серверу через нестандартный порт (хотя использование порта 80 - это вариант для выхода из некоторых сред, но протокол, который проходит через него, не HTTP).Соединения TCP остаются открытыми на время участия клиентов в конференциях в реальном времени.
Наша клиентская база распространяется на все виды сетевых сред.Мне удалось решить множество проблем, добавив возможность безопасного соединения через порт 443 и используя безопасные сокеты, которые позволяют протоколу проходить через множество сред, поскольку внутренние пакеты не могут быть перехвачены.Но все больше и больше наших клиентов находятся в среде прокси-серверов, и мои прямые подключения не проходят через них.Мое старое школьное понимание прокси-серверов заключается в том, что они действуют как прокси-сервер для внешнего HTML-контента через HTTP, возможно, локально кэшируя популярные материалы для более быстрого локального доступа, а также позволяют своим ИТ-специалистам помещать в черный список определенные сайты назначения.Заказчики жалуются на то, что мое программное обеспечение не распознает и легко перемещается по их прокси-средам, но мне трудно решить, каким должно быть мое «наилучшее соответствие».Мое программное обеспечение не разрывает соединение после каждого клиентского запроса, и в дополнение к этому пакеты могут приходить с любой стороны в любое время, в основном это ваша обычная система клиент / сервер для определенной ниши.
Мой первыйРеакция такова: «Почему они не могут просто добавить адреса моего сервера в свой белый список», но если есть программный способ, которым я могу воспользоваться, не требуя от своих ИТ-специалистов помочь ему, это политически лучше и, возможно, в любом случае, возможно, является лучшим решением.Плюс, может быть, я до сих пор не понимаю роль и назначение прокси-серверов и сред, в которых они выросли в наши дни.
Моей первой попыткой было использование WinInet с различными прокси-возможностями для установления соединения.через порт 80 на мой нестандартный сервер протоколов (который знает достаточно, чтобы распознать и ответить на простой HTTP-запрос GET и ответить на него простой страницей ответа HTTP, чтобы обойти некоторые среды, в которых используется начальный анализ пакетов (DPI)).Я получил фактический дескриптор SOCKET за объектом запроса WinInet HINTERNET и надеялся использовать его вместо существующего соединения SOCKET моего программного обеспечения, и, надеюсь, не нужно больше менять на стороне клиента.Сначала это казалось моим решением, но при дальнейшей проверке кажется, что ОС получает первый шанс при получении данных на этом сокете, так как, когда я получаю уведомление о событиях через стандартный оператор select (...) на сокете и запрашиваюразмер данных, доступных через ioctlsocket, вызов успешен, но возвращает 0 доступных байтов, чтение не работает, и оттуда идет спуск.
Может кто-нибудь рассказать мне о клиентской библиотеке (коммерческая подойдет)Позвольте мне обойти эти прокси-серверы с минимально возможной помощью пользователей и ИТ-персонала?Из того, что я прочитал, оно вышло за рамки SOCKS, и я полагаю, что кто-то должен был решить эту проблему до меня.
Спасибо за чтение моего скучного вопроса,
Ripred