서버(S)를 통해 간접적으로 서로 통신하도록 되어 있는 두 개의 장치(A와 B)가 있습니다.
/---\ /---\ /---\
| A | <===> | S | <===> | B |
\---/ \---/ \---/
A와 B는 독립적으로 S에 연결, 연결 해제 및 다시 연결할 수 있습니다.
내 접근 방식은 명명된 파이프를 버퍼로 사용하고 두 개의 netcat 인스턴스를 사용하여 A와 B에 대한 포트를 열고 수신된 콘텐츠를 한 파이프에 저장한 다음 다른 파이프에서 다시 콘텐츠를 보내는 것이었습니다.
다음 명령을 사용하여 실행합니다.
mkfifo a2b
mkfifo b2a
nc -n -u -lkvp 5050 < b2a | tee a2b &
nc -n -u -lkvp 5051 < a2b | tee b2a &
옵션 설명:
-n
: 네임서버 가용성 문제 방지-u
: UDP 사용-l
: 듣기 시작-k
: 연결이 끊어진 후에도 계속 열려 있습니다.-v
: 장황하다| tee fifo
: 수신된 문자를 stdout으로 출력하고 쓰기fifo
A와 연결 S:5050
하고 B와 연결하여 S:5051
(예: nc -uv S 5050
A의 경우) 일부 문자를 보내면 해당 문자가 S의 출력에 나타나지만 B에서는 수신되지 않습니다(그 반대의 경우도 마찬가지).
내가 뭘 잘못했나요?
내가 달성하려는 목표에 대한 올바른 용어는 무엇입니까? 브리징, 터널링, 전달, 중계입니까?