OpenJMS - номер порта клиента
Что касается проблемы, которую Барт имеет в NAT-маршрутизаторе, блокирующем сообщения JMS, я пытаюсь найти номер порта, на который клиенты получают сообщения openJMS. После поиска возрастов в Интернете я могу найти только информацию о портах сервера, но ничего о клиенте. Это для TCP-соединения.
Если кто-нибудь может указать мне правильное направление, я был бы очень благодарен.
Спасибо!
1 ответ
Как правило, номер клиентского порта будет отличаться для каждого нового соединения. Я не нашел никаких доказательств того, что клиенты OpenJMS используют определенные номера портов при связи с серверами. Вот несколько объяснений.
Когда клиентский процесс впервые связывается с серверным процессом, он может использовать общеизвестный номер порта для инициирования связи. Известные номера портов присваиваются определенным службам через Интернет IANA, Агентством по присвоению номеров в Интернете. Известные номера портов находятся в диапазоне от 0 до 1023.
Известные порты используются только для установления связи между процессами клиента и сервера. Когда это будет сделано, сервер выделяет эфемерный номер порта для последующего использования. Эфемерные номера портов - это уникальные номера портов, которые назначаются динамически, когда процессы начинают обмениваться данными. Они освобождаются, когда связь завершена.
Клиентские (эфемерные) порты TCP/IP и порт приложения клиент / сервер
Напротив, серверы отвечают клиентам; они не вступают в контакт с ними. Таким образом, клиенту не нужно использовать зарезервированный номер порта. На самом деле, это действительно преуменьшение: сервер не должен использовать общеизвестный или зарегистрированный номер порта для отправки ответов клиентам. Причина в том, что на одном и том же устройстве конкретное устройство может иметь как клиентское, так и серверное программное обеспечение с одинаковым протоколом. Если сервер получил HTTP-запрос на порт 80 своего компьютера и отправил ответ обратно на порт 80 на клиентском компьютере, он отправил бы ответ процессу HTTP- сервера клиентского компьютера (если имеется), а не клиентскому процессу, который отправил начальный запрос.
Чтобы узнать, куда отправить ответ, сервер должен знать номер порта, который использует клиент. Он предоставляется клиентом в качестве исходного порта в запросе, а затем используется сервером в качестве порта назначения для отправки ответа. Клиентские процессы не используют известные или зарегистрированные порты. Вместо этого каждому клиентскому процессу назначается временный номер порта для его использования. Обычно это называется эфемерным номером порта.
Аналогичный ответ на другой вопрос: Как определить номер порта для связи клиента и сервера в Интернете:
Кроме того, клиент может подключиться ко многим серверам на одном и том же порту. Когда клиенты подключаются, они будут использовать случайный порт на этом конце.
Только сервер должен беспокоиться об использовании свободного порта, а клиенты должны знать, что это за порт, иначе они не смогут подключиться к вашему серверу.
Другая возможная помощь: