Какие порты использовать на самописанном tcp-сервере
Я собираюсь написать tcp-сервер для проекта, над которым работает моя компания. Сервер будет использовать несколько портов для разных задач. Во время разработки мы используем просто номер порта, который нам нравится: 1400, 1500, 1600-1650
,
Можем ли мы использовать эти порты на нашем производственном сервере? Или нам нужно подумать о некоторых проблемах безопасности и / или совместимости?
5 ответов
Как упоминал Пол, порты <1024 обычно зарезервированы для "основных" служб. (Кроме того, многие операционные системы требуют, чтобы службы, привязанные к портам <1024, запускались от имени пользователя root).
Однако есть и другие порты, которые обычно используются. Список номеров портов IANA обычно является хорошим местом для поиска; Вы должны попытаться избежать использования любого порта там, который уже зарезервирован. Хотя на практике это имеет значение только в том случае, если вы собираетесь использовать службу, у которой есть зарезервированный порт в вашей сети / на ваших серверах, проверка этого списка является хорошей привычкой, к которой следует обращаться при разработке нового сетевого приложения.,
Не проектируйте свое программное обеспечение для использования любого порта ниже 49152 по умолчанию, так как они зарезервированы IANA (даже те, кто не назначен). Пользователь может установить порт вручную во время настройки. Если вам необходимо отправить программное обеспечение с предварительно настроенным портом по умолчанию, используйте какой-либо порт в диапазоне от 49152 до 65535.
Все, что больше 1024, должно быть хорошо, если оно не используется кем-либо еще на ваших производственных серверах.
Однако почему бы не сделать его настраиваемым? Определите порты в конфигурационном файле / или каталоге, или в чем-то другом, тогда, если у вас есть конфликт, это просто быстрое изменение, чтобы изменить его на что-то другое.
Кроме того, этот метод позволяет запускать более одного экземпляра на одном компьютере (если у вас есть все, что нужно более чем одному приложению / процессу, определенному в файле конфигурации - это может включать идентификаторы очереди сообщений, имена каталогов и т. Д.). Наш текущий продукт не делает этого, и это боль в пословице.
У меня были проблемы с использованием порта 2000 для некоторых вещей. Проблема заключалась в том, что этот порт использовался вирусом давным-давно, и некоторые маршрутизаторы / брандмауэры / и т. Д. С подозрением относятся к данным на порту. Я начал по умолчанию номера портов выше 30000.
Просто любой номер порта от 1025 до 65535. Порты ниже 1024 зарезервированы для различных вещей, в основном для задач, ориентированных на ОС. Пример 25 для SMTP, 23 для Telnet, 80 для HTTP, 443 для HTTPS.
Вы должны быть осторожны, чтобы получить порт, который не используется другой службой, а также программой.