Por que o SOCKS5 exige retransmitir UDP sobre UDP?

oSOCKS5 protocolo, descrito porRFC1928 fornece suporte para UDP.

Para resumir, um cliente que deseja retransmitir pacotes UDP através de um servidor SOCKS5 deve, pelo menos:

abra uma conexão TCP com o servidor SOCKS5;enviar umUDP ASSOCIATE solicitação (cfseção 4);receber do servidor o endereço e a porta para onde deve enviar os pacotes UDP para serem retransmitidos;enviar datagramas (UDP) para esse endereço, encapsulado com alguns cabeçalhos (cfseção 7)

Aqui estão algumas citações relevantes, deseção 6:

Uma associação UDP termina quando termina a conexão TCP em que a solicitação UDP ASSOCIATE chegou.

Na resposta a uma solicitação UDP ASSOCIATE, os campos BND.PORT e BND.ADDR indicam o número da porta / endereço para onde o cliente DEVE enviar mensagens de solicitação UDP a serem retransmitidas.

eseção 7:

Um cliente UDP DEVE enviar seus datagramas para o servidor de retransmissão UDP na porta UDP indicada por BND.PORT na resposta à solicitação UDP ASSOCIATE.

Por que tanta complexidade?Por que não apenas enviar pacotes UDP na conexão TCP pré-existente?

EDITAR: Paraesclarecer, Espero que o proxy SOCKS receba pacotes UDP em um fluxo TCP e depois os transmita ao destino usando o UDP real. E, em seguida, receba pacotes UDP do destino e envie-os de volta ao fluxo TCP.

Aqui está algum contexto.

Meu objetivo é implementar o tethering reverso, para que um dispositivo Android possa usar a conexão com a Internet do computador em que está conectado, sem exigirraiz acessar no dispositivo e no computador (SimpleRT funciona mas requerraiz acesso no computador).

Minha primeira idéia foi iniciar um servidor SOCKS5 simples comssh -D no computador, para que eu só precisasse implementar o cliente. Os pacotes seriam transmitidos do dispositivo para o computador através deadb, graças aencaminhamento de porta remota fornecido poradb reverse

Infelizmente,OpenSSH Servidor SOCKSnão suporta UDP. Mas foi apenas uma limitação da implementação; eu poderia ter usado outro servidor SOCKS.

Contudo,adb reverse também não suporta encaminhamento UDP.

Daí a minha pergunta sobre o protocolo SOCKS5.

Atualmente, estou escrevendo um PoC implementando meu próprio protocolo (simples) sobre TCP, capaz de retransmitir pacotes UDP, mas estou desapontado por não poder usar um protocolo padrão (e me beneficiar das implementações existentes).

questionAnswers(1)

yourAnswerToTheQuestion