我有一个奇怪的想法。据我所知,有些软件使用UDP传输文件,以减少在TCP数据包中发现的开销。
如果我的应用程序需要TCP,并且我的局域网已经设置了软件,可以与另一端数据中心上的软件进行通信。是否可能通过UDP发送实际数据,然后在两端模拟TCP?
有没有人对这样的项目有任何想法或信息?
我有一个奇怪的想法。据我所知,有些软件使用UDP传输文件,以减少在TCP数据包中发现的开销。
如果我的应用程序需要TCP,并且我的局域网已经设置了软件,可以与另一端数据中心上的软件进行通信。是否可能通过UDP发送实际数据,然后在两端模拟TCP?
有没有人对这样的项目有任何想法或信息?
TCP和UDP都是基于IP协议的,但TCP使用不同的数据包结构,在第二层中不能使用UDP数据包模仿TCP。
当然,如果您可以控制源和目标,那么可以为TCP数据包创建可靠的UDP隧道。这需要在UDP数据包的正文中添加一些内部信息(数据包编号、ack/nack标志)。
有一个有趣的项目http://udt.sourceforge.net/
它是一种基于UDP协议的广播能力可靠文件传输机制。
嗯,我相信是这样的。你需要在两端都使用代理,但应该是可行的。
你会遇到的最大问题是UDP是设计为你不关心一些数据包是否能到达另一端。
这里有更多信息的链接:
http://www.cyberciti.biz/faq/key-differences-between-tcp-and-udp-protocols/
在我看来,通过UDP传输文件不是一个好主意。
你可以模拟UDP连接,并且也可以增加可靠性检查、排序、重传等功能。但即便如此,它仍然不是TCP,只是表现得像TCP而已。
当然,一端可以是一种“集线器”或“代理”,进行适配处理。这样,你就不再有一个2端的解决方案,实际上是一个4端的解决方案——一对使用“真实”TCP,另一对使用“自己编织”的“TCP”,并通过一个精心制作的程序将它们组合在一起。