Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 我们如何设置代理服务器来处理UDP数据包?_Sockets_Networking_Proxy_Udp_Packet - Fatal编程技术网

Sockets 我们如何设置代理服务器来处理UDP数据包?

Sockets 我们如何设置代理服务器来处理UDP数据包?,sockets,networking,proxy,udp,packet,Sockets,Networking,Proxy,Udp,Packet,通常我们可以通过一些工具来建立代理服务器,比如CCProxy,它为HTTP、SOCKS、FTP数据包等提供代理服务。 此外,Proxifier或Proxycap用于转发客户端PC上特定应用程序的数据包。 但是,当UDP数据包被转发到代理服务器时,这些数据包无法正确转发到应用程序最初希望它们去的目的地。 当我使用网络分析仪观察UDP流量时,UDP数据包只是从我的PC传递到代理服务器,而没有最终到达正确的目的地 此外,有人建议代理服务器中未启用UDP中继,因此无法成功路由UDP数据包。如何在代理服务

通常我们可以通过一些工具来建立代理服务器,比如CCProxy,它为HTTP、SOCKS、FTP数据包等提供代理服务。 此外,Proxifier或Proxycap用于转发客户端PC上特定应用程序的数据包。 但是,当UDP数据包被转发到代理服务器时,这些数据包无法正确转发到应用程序最初希望它们去的目的地。 当我使用网络分析仪观察UDP流量时,UDP数据包只是从我的PC传递到代理服务器,而没有最终到达正确的目的地


此外,有人建议代理服务器中未启用UDP中继,因此无法成功路由UDP数据包。如何在代理服务器上启用UDP中继功能?(假设我可以完全控制代理服务器)

任何类型的代理,无论是TCP还是UDP,都需要被告知将传出数据包转发到何处。这还允许代理知道谁在请求转发,以便它可以将匹配的入站数据包路由回同一请求者

例如,让我们假设袜子。SOCKS v4不支持UDP(或IPv6),但支持。但是,它要求请求应用程序与SOCKS代理建立TCP连接,并要求它代表应用程序转发UDP数据包,直到TCP连接关闭

CCProxy、Proxycap、Proxifier等工具(无论如何,对于TCP)通过拦截传出TCP连接并将其重定向到代理服务器来工作,透明地处理任何代理握手以设置转发,然后再允许任何应用程序数据通过TCP连接。一旦建立了TCP连接,代理服务器就不需要再对连接做任何事情,因为应用程序现在直接与代理服务器对话

我不知道这些工具是否支持UDP。这将更难实现,因为没有要重定向的传出连接。必须截获每个出站UDP数据包,然后代理程序必须检查它是否已经有自己的TCP连接与数据包的本地/远程元组相关联,如果没有,则创建一个新的TCP连接并发送必要的UDP转发握手,然后封装该元组的每个出站UDP数据包,并将其发送到代理的出站IP/端口,然后从代理接收该元组的每个匹配的入站UDP数据包,以便将其解封并转发到发送原始出站UDP数据包的应用程序的本地IP/端口。由于UDP连接较少,代理服务器还必须在其到代理服务器的TCP连接上实现超时机制,以便在UDP通信空闲一段时间后最终关闭代理服务器

与TCP相比,UDP代理要做的工作要多得多

这只是袜子。HTTP/FTP代理根本不支持UDP(因为HTTP/FTP是基于TCP的协议)。还有其他隧道/代理协议,它们可能有也可能没有基于UDP的功能

因此,您必须检查代理工具的功能,看看它是否支持UDP