두 컴퓨터를 직접 연결하려면, 전통적인 인터넷 모델은 각 기기가 외부에서 접근 가능한 공인 IP를 갖고 인바운드 연결을 받아들여야 합니다. 하지만 실제 사용자 PC는 대부분 가정·사무실 공유기 뒤 사설망에 숨어 있고, 방화벽은 요청하지 않은 외부 트래픽을 조용히 차단합니다. Seetrol은 중계(Relay) 서버 구조로 이 문제를 근본적으로 우회합니다. 한쪽이 상대에게 인바운드로 접속을 시도하는 대신, 양쪽 PC가 모두 서버로 아웃바운드 연결을 시작하고, Seetrol MY 서버가 두 연결을 하나의 세션으로 연결합니다.
중계 서버는 두 가지 역할을 수행합니다. 먼저 두 아웃바운드 연결을 매칭하고 서로의 공인 주소를 교환해 주는 시그널링(Signaling) 서버 역할을 하며, 직접 연결이 성립되지 않을 때에만 암호화된 스트림을 대신 전달하는 데이터 중계(Relay) 서버 역할을 합니다.
실행되면 클라이언트가 중계 서버로 AES-256으로 암호화된 아웃바운드 연결을 엽니다. 암호화된 아웃바운드 요청이라 로컬 방화벽과 공유기가 통과시킵니다.
이 소켓은 주기적 Keep Alive로 계속 유지되어, 서버가 언제든 클라이언트에 도달할 되돌림 경로를 확보합니다. 인바운드 불필요
고객이 짧은 세션 코드를 입력하면, 서버는 이를 이용해 인증하고 고객 소켓을 해당 상담원 소켓과 매칭합니다.
시그널링 서버로서, 서버는 각 측에 상대의 공인 IP·포트(인터넷에서 보이는 주소)와 세션 키를 알려 줍니다. 직접 연결을 시도하는 데 필요한 정보입니다.
홀펀칭(P2P): 양측이 동시에 상대의 공인 주소로 패킷을 전송합니다. 각 NAT가 이미 응답을 예상하고 있으므로 직접 P2P 터널이 형성됩니다 — 최저 지연.
중계 폴백: 엄격한 NAT가 P2P를 막으면 암호화 스트림을 서버가 대신 전달합니다. 조금 느리지만 언제나 연결됩니다.
| 단계 | 실제로 회선에서 일어나는 일 | 방화벽을 통과하는 이유 |
|---|---|---|
| 연결 | 고객과 상담원이 각각 중계 서버로 암호화된 아웃바운드 소켓을 엽니다. | 아웃바운드 연결은 대체로 허용되며, NAT가 되돌림 경로를 자동으로 만듭니다. |
| 등록 | 각 측이 세션 식별자로 등록하고 Keep Alive로 연결을 유지합니다. | 서버가 양쪽으로 향하는 살아 있는 통로를 갖습니다. 포트포워딩·수신 포트가 없습니다. |
| 시그널 | 세션 코드를 검증하고, 각 측의 공인 IP·포트와 키를 교환합니다. | 메타데이터만 오갑니다. 작고 빠르며, 기존 아웃바운드 소켓을 그대로 사용합니다. |
| 통과 | 홀펀칭으로 직접 P2P 경로를 시도하고, 실패하면 중계로 전환합니다. | 동시에 전송된 아웃바운드 패킷으로 양쪽 NAT가 상대의 응답을 유효한 세션으로 인식하게 됩니다. |
| 스트림 | 화면 프레임은 한 방향, 키보드·마우스 입력은 반대 방향으로 흐릅니다 — 모두 AES-256 암호화. | 성립된 경로(직접 P2P 또는 서버 중계) 위에서 동작합니다. |