Я написал сервер Java для прослушивания порта 49474. Мой клиент работает на телефонах Android по всей территории США. Конечно, они будут подключаться из разных сетей: дома, на работе, в школе, в библиотеке, McDonalds. Трафик между сервером и клиентом через сокет Java, передающий необработанный JSON.
Кто-то сказал мне, что я должен использовать порт 80 или 443 И что мой трафик должен быть фактическим трафиком HTTP, иначе маршрутизаторы / брандмауэры обнаружат, что мой трафик не является трафиком HTTP, и сбросят его.
Насколько часто сетевой администратор блокирует подключения к портам в диапазоне, в котором находится мой порт?
Кроме того, если я просто переключу номер порта на 443, обнаружит ли маршрутизатор / брандмауэр, что мой трафик не является HTTP-трафиком, и заблокирует ли он даже хорошо известный порт?
Короткий ответ это зависит. Как и в случае с почтовыми серверами, администратор удаленной сети решает, какой трафик принимать, а какой запрещать.
Это правда, что некоторые сети не допускают произвольных подключений изнутри наружу. Я установил те, которые есть, и те, которые нет, в зависимости от требований безопасности клиента.
Если ваш трафик может законно обрабатываться через HTTP / HTTPS (вы говорите, что это JSON, но, если я не ошибаюсь, JSON - это протокол содержимого, а не транспортный протокол), а сервер работает на порте 80/443, вы увеличиваете свои шансы людей, попадающих на ваш сервер. Если вы отойдете от стандартного порта, меньше клиентов сможет связаться с вами. Если вы используете нестандартные протоколы на стандартных портах, меньше клиентов сможет связаться с вами.
Что вы действительно хотите знать, так это пропорция клиентов, которые не смогут связаться с вами, и я не знаю ни одной опубликованной работы, позволяющей количественно оценить это. Но в данный момент я не вижу для тебя причины не для запуска этой службы с использованием стандартного транспортного протокола на его стандартном порту, и пока вы не установите, что у вас есть такая веская причина, было бы глупо не соблюдать стандарты.
Блокируют ли сетевые администраторы исходящий трафик на незнакомые порты?
Да. В большинстве удалось В сетях, вероятно, будет брандмауэр, который ограничивает исходящий трафик в соответствии с локальными политиками и предотвращает злоупотребления. Фактические конфигурации будут отличаться, но вы не можете всегда полагаться на открытый необычный порт.
Кроме того, если я просто переключу номер своего порта на общий номер порта, такой как 80 или 443, будет ли маршрутизатор / брандмауэр обнаруживать, что мой трафик не является трафиком HTTP (S), и блокировать его?
Могут быть заблокированы даже общие номера портов, и единственный способ доступа пользователей к Интернету через прокси-сервер который сможет распознавать действительные HTTP-запросы.
Когда веб-порты действительно открыты и к Интернету можно получить прямой доступ, брандмауэр все еще может использовать глубокая проверка пакетов разрешить только действительный HTTP через порт HTTP, хотя у меня сложилось впечатление, что DPI не так распространен, как прокси-сервер.
Рекомендация: у вас будет наибольшая мобильность, когда вы используете общий веб-порт для своего сервера, и ваше приложение должно соблюдать настройки прокси и использовать HTTP (S).