Это не проблема, поэтому я реализовал UDP через TCP без использования SOCKS.

S5 протокол, описанныйRFC1928 обеспечивает поддержку UDP.Подводя итог, клиент, желающий передавать пакеты UDP через сервер SOCKS5, должен, по крайней мере:

открыть TCP-соединение с сервером SOCKS5;

Отправить запрос (срUDP ASSOCIATEраздел 4);получить от сервера адрес и порт, по которому он должен отправлять UDP-пакеты для ретрансляции;отправлять дейтаграммы (UDP) по этому адресу, инкапсулированные с некоторыми заголовками (см.раздел 7).Вот некоторые соответствующие цитаты из

раздел 6Связывание UDP завершается, когда завершается соединение TCP, к которому поступил запрос UDP ASSOCIATE.:

В ответе на запрос UDP ASSOCIATE поля BND.PORT и BND.ADDR указывают номер порта / адрес, на который клиент ДОЛЖЕН отправлять сообщения запроса UDP для ретрансляции.

а также

раздел 7Клиент на основе UDP ДОЛЖЕН отправить свои дейтаграммы на сервер ретрансляции UDP через порт UDP, указанный в BND.PORT в ответе на запрос UDP ASSOCIATE.:

Почему так много сложности?

Почему бы просто не отправлять UDP-пакеты в уже существующем TCP-соединении?РЕДАКТИРОВАТЬ:

 куточнитьЯ ожидаю, что прокси-сервер SOCKS будет принимать пакеты UDP по потоку TCP, а затем передавать их цели, используя фактический UDP. А затем получите пакеты UDP от цели и отправьте их обратно в поток TCP.Вот некоторый контекст.

Моя цель - реализовать обратную привязку, чтобы устройство Android могло использовать подключение к Интернету компьютера, к которому оно подключено, без необходимости

корень доступ как на устройстве, так и на компьютере (SimpleRT работает но требуеткорень доступ на компьютер).Моей первой идеей было запустить простой сервер SOCKS5 с

 на компьютере, так что мне нужно было только реализовать клиента. Пакеты будут передаваться с устройства на компьютер черезssh -D, благодаряadbпереадресация удаленных портов предоставленоК несчастью,adb reverse

OpenSSH SOCKS серверне поддерживает UDP, Но это было лишь ограничением от реализации, я мог бы вместо этого использовать другой сервер SOCKS.Тем не мение,

 также не поддерживает пересылку UDP.adb reverseОтсюда мой вопрос о протоколе SOCKS5.

В настоящее время я пишу PoC, реализующий свой собственный (простой) протокол через TCP, который способен ретранслировать пакеты UDP, но я разочарован тем, что не могу использовать стандартный протокол (и получаю выгоду от существующих реализаций).

Вы не можете отправлять дейтаграммы по TCP-соединению. TCP является протоколом потока байтов. Вопрос хочу иметь смысл.

Ответы на вопрос(1)

Ваш ответ на вопрос