我有一个奇怪的想法。 我听说过,从我的理解使用UDP来传输文件在降低TCP数据包中发现的开销软件。
如果我的应用程序需要TCP和我的局域网有软件安装与海岸与他们的终端软件安装在另一侧的另一数据中心通信。 有没有可能通过UDP但比两端模拟TCP发送实际的数据?
我依稀记得一些关于7层,但我不能确定,如果协议是其中的一层,而且我不确定如果TCP是无法模拟/在网络上使用UDP时实现完美。 有没有人有这样的项目,任何想法或信息?
我有一个奇怪的想法。 我听说过,从我的理解使用UDP来传输文件在降低TCP数据包中发现的开销软件。
如果我的应用程序需要TCP和我的局域网有软件安装与海岸与他们的终端软件安装在另一侧的另一数据中心通信。 有没有可能通过UDP但比两端模拟TCP发送实际的数据?
我依稀记得一些关于7层,但我不能确定,如果协议是其中的一层,而且我不确定如果TCP是无法模拟/在网络上使用UDP时实现完美。 有没有人有这样的项目,任何想法或信息?
如果你问,如果你可以使用UDP作为第2层 ,那么答案是肯定的,排序的。 有迹象表明,允许您创建使用UDP传输,如隧道到另一个网络的各种协议L2TP连的IPsec(与NAT穿越) 。 你也可以做它在应用层 。
如果你问如果TCP在UDP实现,答案是否定的。 首先, TCP数据包和UDP数据包有一个不兼容的格式。 其次,TCP和UDP具有不同的协议号(在可见IP报头 ),这意味着发往一个UDP端口TCP业务将不会被传递到正确的上层协议。
TCP和UDP是建立在IP之上,但是TCP使用不同的数据包结构,并在第2层是不可能模仿使用UDP分组中的TCP。
当然,如果你有源和目标上的控制,则有可能创造的TCP报文可靠的UDP隧道。 这将需要在UDP分组的主体一些内部信息(分组号,ACK / NACK标志)。
有一个有趣的项目http://udt.sourceforge.net/
它是建立在顶部的UDP广播能力的可靠的文件传输机制。
PseudoTCP是在UDP上实现TCP算法的协议。 据介绍,因为对TCP的NAT穿越比UDP复杂得多。 但是,一些P2P应用确实需要节点之间的可靠的数据传输。
所以,据我所知,有两个PseudoTCP变化:设的Libjingle和Libnice.Libjingle是从谷歌的开源库,它最初是为每增加。 你可以看看文件共享例如从设的Libjingle: https://developers.google.com/talk/libjingle/file_share 。 近日,Chrome桌面还使用PseudoTCP实现从设的Libjingle可靠的连接。
如果我的应用程序需要TCP和我的局域网有软件安装与海岸与他们的终端软件安装在另一侧的另一数据中心通信。 有没有可能通过UDP但比两端模拟TCP发送实际的数据?
第一个UDP套接字是从TCP套接字不同的命名空间。 您将无法在一端写UDP发送或在另一端接收TCP。 TCP和UDP是等协议; 在高于IP的层同时存在。 你不能用一个欺骗对方。
是的,你可以制定一个UDP协议模拟TCP。 不过,如果你完全模拟TCP,它在技术上有更多的开销。 因为TCP是实现为分组和你的模拟TCP在分组的机身上实现。
如果您只需要TCP的一个或两个功能(如基本排序),然后在UDP实现它是非常有用的。
晕使用2-3(IIRC)UDP模仿TCP,然后完全成熟的TCP的不同特点进行初始化游戏状态的协议。 我开枪打你首先网络,GDC公布
例如,在一种情况下,他们派出3个重复的UDP数据包,以克服数据包丢失。
如果你控制两端的软件,它是符合成本效益,以建立自己的协议,那么UDP可以通用的。
做到这一点,现在在Linux-3.18 +的一个方法就是使用美孚在UDP(FOU),它实现了通用UDP封装( GUE )。 这里有一个很好的介绍FOU ,而那男人页IP-缶 。
或者,如果你想要一个[开源]基于UDP的文件传输系统也有类似的事情UDT , UFTP , 海啸,UDP ,甚至是谷歌的QUIC 。
嗯,我相信是这样。 你需要在两端使用代理,但它应该是可能的。
你要碰到的最大问题是,UDP被设计,如果某些数据包永远不要让它到另一端,你不在乎的想法。
下面是更多的一些信息的链接:
http://www.cyberciti.biz/faq/key-differences-between-tcp-and-udp-protocols/
恕我直言,这不是通过UDP来传输文件是个好主意。
TCP的问题是它的算法,而不是它的头。
你当然可以实现在UDP上的TCP算法。 这将有效地一样隧道TCP数据报UDP数据包的内部。 但是,所有这些所完成的是架空的几个字节添加到每个数据包,并要求另一个端点解开包。
UDP本身只是在IP之上的薄垫片:它的访问IP包的便捷方式切换,而无需深入到内核或从路由器接收特殊处理网络。 实现在UDP上的可靠传输的主要原因是摆脱TCP算法远赞成的东西更有效。 FileCatalyst上面所提到的一个公司,这样做,和我自己的公司数据考察,公司这样做也是如此。
所以,你可以在UDP上实现TCP算法,但你不会想。
您可以模拟像在UDP连接,你也可以添加可靠性检查和订购和重传等。 - 但是,它仍然不是TCP,它只是行动的方式。
当然,端部中的一个可以是一种“中心”或确实的适应“代理”的。 然后,你没有2的端到端解决方案,但实际上4端到端的解决方案 - 一对与“真正的” TCP和其他与“自我编”,“TCP” - 你用适当制作的节目放在一起。