C# 在TCP协议中封装UDP

C# 在TCP协议中封装UDP,c#,tcp,udp,encapsulation,C#,Tcp,Udp,Encapsulation,我不太确定从哪里开始,但我假设我需要某种网络驱动程序来捕获所有UDP流量。(请告诉我哪一个是最好的记录和工程) 在C#中成功捕获UDP数据包后,我将通过TCP连接将它们发送到我的服务器,在服务器上我需要将UDP发送到目标,然后将响应发送回客户端机器(即捕获数据包)然后将响应发送到程序,就像它是直接从相关服务器发送的一样 基本上我的联系如下: Client running UDP program <<==TCP connection==>> Conversion Serve

我不太确定从哪里开始,但我假设我需要某种网络驱动程序来捕获所有UDP流量。(请告诉我哪一个是最好的记录和工程)

在C#中成功捕获UDP数据包后,我将通过TCP连接将它们发送到我的服务器,在服务器上我需要将UDP发送到目标,然后将响应发送回客户端机器(即捕获数据包)然后将响应发送到程序,就像它是直接从相关服务器发送的一样

基本上我的联系如下:

Client running UDP program <<==TCP connection==>> Conversion Server <<==UDP connection==>> UDP Server 
运行UDP程序转换服务器UDP服务器的客户端 我需要以下方面的帮助:
  • 从程序捕获UDP数据包(使用网络驱动程序)
  • 将我从服务器得到的响应发送回程序(使用相同的网络驱动程序??)
编辑#1 好的,让我澄清一下。我的电脑上有一个我无法控制的程序。我没有它的来源,没有办法修改来源,我不能使用注入技术来告诉它做一些不同的事情。当然,它使用UDP连接服务器,我需要它来工作


现在,我需要让该程序工作,但我背后的安全网络,不允许UDP流量(不问)。我需要创建一个网络驱动程序,捕获我计算机上所有程序生成的所有UDP流量,将其发送到专用服务器(在该服务器中,我会编写一个服务器守护程序,将TCP转换为UDP并发送到原始目的地)。

您需要将网卡设置为混杂模式(如Ethereal/Wireshark)做您需要按特定模式过滤所有UDP数据包,以确定发送这些数据包的应用程序(可能是目标地址,也可能是有效负载)。这样就可以抓到鱼了

然后创建一个服务器,其中一边是UDP服务器(防火墙内),另一边是TCP客户端,它将UDP通信封装在TCP中,并将其发送到另一个服务器(防火墙外),而另一个服务器将执行相反的操作

总的来说,这是可行的,而不是火箭科学,只是需要对网络有很好的了解

另外,这让我想起了一个家伙是如何进入一个银行系统的,而这个系统只有一个ICPM(ping)输出。因此,他通过PING编写了TCP,并能够以这种方式进行telnet。有趣。

您需要编写一个LSP(分层服务提供商)并安装它。在实现LSP时,您的代码将获得从UDP端口接收到的实际数据包,然后将其发送到TCP服务器,TCP服务器将进行一些修改。完成后,您可以将修改后的数据包从LSP代码而不是实际数据包发送到应用程序。你可以找到一些细节

资源:


您能将您的程序指向任何IP地址吗?或者它是硬编码的吗?原因是如果你可以把它指向你自己作为服务器,你可以创建一个代理服务器,这会让事情变得更简单。运行UDP的程序是硬编码的,我不能使用注入-这就是为什么我说我需要一个网络驱动程序来截获数据包。我很好奇,为什么您的应用程序要桥接UDP和TCP流量?@MikePennington它运行在不允许UDP连接的受限网络环境中。VPN非常昂贵——它会重定向所有流量。由于TCP连接很好(而且更常见),它会降低整个系统的速度。这就是为什么要创建一个类似VPN的设置,但只针对UDP数据包。