Всем привет. Не могу понять почему не работает UDP через SOCKS5. Что я делаю:Я соединяюсь с SOCKS сервером и говорю, что хочу сделать UDP ASSOCIATE. В ответ на это SOCKS высылает IP и Port - куда можно слать UDP.
Я генерирую UDP пакет на этот адрес и порт с содержимым:
2 байта резерв
1 байт - фрагмент
1 байт - протокол ipv4
4 байта IP адрес куда надо отправить UDP с SOCKS
2 байта - порт куда отправить
3 байта - данные. В результате получился такой набор:
000001015f1f2e01029a313233
2 байта резерв + 1 фрагмент + ip = 95.31.46.1 + порт 666 + данные 123.
Все это дело отправляю на SOCKS5. Но к сожалению, на сервер 95.31.46.1:666 ничего не приходит.
Подскажите, пожалуйста, что я сделал неверно
> Подскажите, пожалуйста, что я сделал неверноПодробно описал то, что в общем-то значения не имеет, ничего не сказал о том, что может дать пищу для ума. Что за сервер, как именно данные отправляешь, что на сервере с файрволлом, что на клиенте с файрволлом...
> 1 байт - фрагментзачем там 01 стоит? если это начало большой датаграммы, что не влезла в один пакет, то должен быть последующий с увеличенным номером, и финальный с >=0x80
Поле FRAG показывает, является ли эта датаграмма самостоятельной или
же фрагментом. Если датаграмма - фрагмент, то установленный старший
бит является признаком последнего фрагмента, в то время как значение
X'00' показывает, что это обычная датаграмма. Значения от 1 до 127
обозначают на позицию фрагменте в последовательности. Каждый
получатель будет иметь REASSEMBLY QUEUE (очередь сборки) и REASSEMBLY
TIMER (таймер сборки) связанные с такой фрагментной датаграммой.
Очередь сборки должна быть переинициализирована и связанные с ЙЙней
фрагменты выкинуты всякий раз при истечении таймера сборки или
с приходом новой датаграммы, чье значение в поле FRAG меньше,
чем наибольшее значение поля FRAG датаграмм, обработанных
при сборке фрагмента. Таймер сборки должен быть не менее 5 секунд.
Приложениям рекомендуется избегать фрагментацию везде, где только
это возможно.Реализация фрагментации опциональна, в реализациях где фрагментация
не поддерживается, должны отбрасываться любые датаграммы, у которых
поле FRAG отлично от X'00'.
>[оверквотинг удален]
> с приходом новой датаграммы, чье значение в поле FRAG
> меньше,
> чем наибольшее значение поля FRAG датаграмм, обработанных
> при сборке фрагмента. Таймер сборки должен быть не менее
> 5 секунд.
> Приложениям рекомендуется избегать фрагментацию везде, где только
> это возможно.
> Реализация фрагментации опциональна, в реализациях где фрагментация
> не поддерживается, должны отбрасываться любые датаграммы, у которых
> поле FRAG отлично от X'00'.Выставил фрагмент в 00, все заработало. Спасибо. Истина так близко была)