rom*_*m1v 7 networking udp tcp rfc socks
总而言之,希望通过SOCKS5服务器中继UDP数据包的客户端必须至少:
UDP ASSOCIATE请求(参见第4节);以下是第6节中的一些相关引文:
当UDP ASSOCIATE请求到达的TCP连接终止时,UDP关联终止.
在对UDP ASSOCIATE请求的回复中,BND.PORT和BND.ADDR字段指示客户端必须发送要中继的UDP请求消息的端口号/地址.
和第7:
基于UDP的客户端必须在回复UDP ASSOCIATE请求时将其数据报发送到由BND.PORT指示的UDP端口的UDP中继服务器.
为什么这么复杂?为什么不在预先存在的TCP连接中发送UDP数据包?
编辑:为了澄清,我期望SOCKS代理通过TCP流接收UDP数据包,然后使用实际的UDP将它们传输到目标.然后从目标接收UDP数据包并将其发送回TCP流.
这是一些背景.
我的目标是实现反向网络共享,以便Android设备可以使用其插入的计算机的Internet连接,而无需在设备和计算机上进行root访问(SimpleRT可以工作,但需要在计算机上进行root访问).
我的第一个想法是ssh -D在计算机上启动一个简单的SOCKS5服务器,这样我只需要实现客户端.adb由于... 提供的远程端口转发,数据包将从设备传输到计算机adb reverse.
不幸的是,OpenSSH SOCKS服务器不支持UDP.但这只是实施的限制,我本可以使用另一个SOCKS服务器.
但是,adb reverse也不支持UDP转发.
因此我的问题关于SOCKS5协议.
我目前正在编写一个PoC,它通过TCP实现我自己的(简单)协议,它能够中继UDP数据包,但我很失望不能使用标准协议(并从现有实现中获益).