2017-12-21 24 views
2

우리의 응용 프로그램은 JeroMQ 0.4.3을 사용하여 클라이언트 응용 프로그램과 API간에 메시지를 보냅니다. (ZAuth로 곡선 암호화 사용).TCP를 통해 JeroMQ를 사용하면 발신자의 IP를 얻을 수있는 방법이 있습니까?

브로커 (MDP 패턴)의 ROUTER 소켓에서 클라이언트 메시지가 전송됩니다.

브로커에서 메시지를받을 때 발신자의 IP를 찾는 가장 좋은 방법은 무엇입니까? ZeroMQ에서

, ZMQ_SRCFD 메시지 옵션 getpeername()를 사용하는 것이 가능있을 것 같다하지만 난 JeroMQ에 그 번역 할 수있는 방법을 발견하지 않았습니다.

답변

1

최근의 ZeroMQ API는 메시지가 전달할 수있는 ZMQ_SRCFD 속성을 실제로 정의합니다.

사실 A)
하나는 주로 있는지 결코, 어떤 ZeroMQ의 API 버전 (2.X ~ 3.X ~ EoY-2017의 등 4.2.2 ~? )하지 않는 한, 원격 시스템 사용합니까 실제로 견고하고 침입에 강건한 버전 강제 정책이 제자리에 자리 잡고 있습니다.

사실 B)
최근 ZeroMQ API는 tcp:// 전송 급이에 대한 정의

ZMQ_SRCFD
이 메시지에서 읽은 소켓의 파일 기술자를 돌려줍니다. 이를 통해 응용 프로그램은 getpeername(2)을 통해 원격 종점을 검색 할 수 있습니다. 각 소켓은 이 이미 닫혀 있고 일 수도 있고 이 다시 사용 된 일 수도 있습니다. 현재는 TCP 소켓 용으로 만 구현됩니다. 하나의 바람직한 JeroMQ 등을 포함

사실 C), 어떤 언어 랩퍼 또는 결합
, 자체적으로 (전체 또는 부분적인 범위 커버리지를 일) 선택된 범위를 커버한다.

특정 언어 포트/바인딩 버전에 기능이 부족한 경우 가장 좋은 다음 단계는 게시 된 소스 코드를 확장 할 가능성을 평가하여 해당 언어를 (다시) 구현하여 원하는 기능을 포함하는 것입니다. ZeroMQ 게시 된 사양에 지정된대로 원하는 API 기능을 가장 잘 충족 할 수 있도록 포트/바인딩을 만듭니다. C)를 실행할 수 없게 또는 B 하에서 발현 주요 불확실성) 당 불완전 얻는다

사실 D)의 경우
는, 하나의 정지 대신 자신의 높은 수준의 IP 어드레스 노드 -을 구현하기 위해 진행할 수있다 (재) 적절한 보안 등급에 기반한 발견 전략 ({naive self-declaration | 2 단계 IP 검증 | ... | 신뢰할 수있는 IP 유효성 검사 (IP-validation) 프로토콜) 프로토콜을 필요로하는 경우 사용할 수 있습니다.