Используя JeroMQ через TCP, есть ли способ получить IP отправителя?

Наше приложение использует JeroMQ 0.4.3 для отправки сообщений между клиентским приложением и API. (используя кривое шифрование с ZAuth).

Мы получаем клиентские сообщения от ROUTER сокет в нашем брокере (шаблон MDP).

Как лучше всего узнать IP-адрес отправителя при получении сообщения в брокере?

В ZeroMQ кажется, что это возможно, используя ZMQ_SRCFD опция сообщения и getpeername() но я не нашел способа перевести это на JeroMQ.

1 ответ

Решение

Более свежий API ZeroMQ действительно определяет ZMQ_SRCFD собственность сообщение может нести.

Факт А)
принципиально никто не уверен, какую версию API ZeroMQ ( 2.x ~ 3.x ~ 4.2.2 ~? на EoY-2017) использует удаленная система, если не введена действительно жесткая и надежная политика защиты версий на месте и активно.

Факт Б)
последний API ZeroMQ определяет для tcp:// Транспортный класс это:

ZMQ_SRCFD
Возвращает дескриптор файла сокета, из которого было прочитано сообщение. Это позволяет приложению получать удаленную конечную точку через getpeername(2), Помните, что соответствующая розетка может быть уже закрыта, даже повторно использована. В настоящее время реализовано только для сокетов TCP.

Факт С)
Любая языковая оболочка или привязка, включая предпочтительный JeroMQ или другой, должна покрывать выбранную область (будь то полная или частичная область охвата) самостоятельно.

Если в какой-либо конкретной языковой версии порта / привязки отсутствует функция, лучшим следующим шагом будет оценка возможности расширения опубликованного исходного кода, с тем чтобы также охватить желаемую функцию путем (пере) реализации языкового порта / привязки таким образом, чтобы чтобы наилучшим образом соответствовать желаемой функции API, как указано в опубликованной спецификации ZeroMQ.

Факт D)
В случаях, когда C) становится невыполнимым или неполным в соответствии с основной неопределенностью, выраженной в B), можно все же перейти к реализации собственной стратегии обнаружения (пере) обнаружения узла высокого IP-адреса на основе любого подходящего уровня безопасности, начиная с самого наивного самопровозглашения | двухэтапная IP-валидация | ... | надежный IP-валидация}-protocol, если он нужен.

Другие вопросы по тегам