Indy UDP ASSOCIATE 요청의 0.0.0.0:0 은 의도적일 수 있습니다. 그 요청은 클라이언트 측에서 예상되는 UDP 끝점을 설명하며, RFC 1928은 이를 알 수 없을 때 0을 허용합니다. 최종 서비스를 선택하지는 않습니다.

응답의 BND.ADDR/BND.PORT 는 클라이언트가 캡슐화된 데이터그램을 보내는 릴레이를 나타냅니다.

TCP control: client → SOCKS5 proxy → UDP association reply
UDP payload: client → returned relay address → target service

Indy에서 TIdUDPClient.Connect 는 투명 프록시의 OpenUDP 를 호출합니다. TIdSocksInfo 는 0 연결 필드를 제공합니다. 이후 SendBuffer 는 원하는 서비스를 SendToUDP 로 넘기고, 이것이 애플리케이션 페이로드 앞에 SOCKS UDP 대상 헤더를 만듭니다.

연결은 성공했는데 트래픽이 실패하면 반환된 릴레이, 인코딩된 대상, UDP 응답 경로를 확인하십시오. NAT/방화벽이 TCP 교환은 허용하면서 UDP를 차단할 수 있습니다.

TCP 제어 연결을 열어 두십시오. 닫으면 연결이 종료됩니다. SOCKS4/4a에는 이 작업이 없으며, SOCKS5라는 이름만으로 서버가 UDP를 지원한다고 보장할 수 없습니다.

관련 글