全双工

ude协议—基于udp的全双工可靠传输协议

試著忘記壹切 提交于 2020-03-20 20:35:11
3 月,跳不动了?>>> ude是一款基于udp的可靠传输协议,专门用于在数据传输方面对实时性要求较高的应用领域。 tcp协议虽然能保证数据的可靠传输,但它有以下几个缺点:1.tcp的数据确认机制会导致发送方重复发送一些已经被对方接收的数据,降低了带宽的有效利用率;2.tcp协议的超时重传机制严格遵守rtt公平性,即到了rtt时间才会重传丢失的数据,当rtt较大时,就会导致数据的实时性降低,这对于一些对实时性要求较高的应用(比如流媒体应用)是不能忍受的,并且这一特点会导致带宽得不到充分利用;3.在p2p传输领域,由于tcp的NAT穿透成功率极低,用tcp做p2p数据传输几乎不可行。 udp协议虽然不能保证数据传输的可靠性,但它在数据的实时性、带宽的利用率等方面有着tcp望尘莫及的优势。 ude协议,正是融合了tcp和udp各自的优点,ude协议在udp的基础之上,实现了tcp的握手连接、数据校验、超时重传等机制,并且在某些方面比tcp做的更好:1.ude协议的数据确认机制比tcp更科学,不会重复发送已经被对方接收的数据;2.ude的超时重传机制不遵循rtt公平性(可以设置rtt的上限值),这就保证了当网络延时较高时,ude也可以用于传输对实时性要求较高的数据,降低了带宽的有效利用率换取实时性,另外它不等ack的到来就重传数据(原理为第n帧没收到ack、而第n+1、n

DBUS 实现c/s 全双工

本小妞迷上赌 提交于 2019-12-06 07:27:23
前一篇文章主要介绍了dbus调用的流程,及简单的单工通信,这里记录下双工通信的流程,供后续参考。 定义dbus名称,路径,接口,方法等。 额外注意点: 1. 所有的全局资源必须加锁 2. handle-method-call中 从g_variant_get获得的字符串,不需要自己释放,系统会自动释放,注意如果后续需要使用,必须strdump出来。 #define TEST_DBUS_A "methodA" #define TEST_DBUS_B "methodB" #define TEST_DBUS_INTERFACE "com.test.hello" #define TEST_DBUS_OBJPATH "/com/test/hello" #define TEST_DBUS_NAME "com.test.hello" #define TEST_DBUS_TIMEOUT 100000 client static GDBusConnection *test_client_conn = NULL; static GDBusNodeInfo *dbus_node_info = NULL; static pthread_mutex_t callback_info_list_mutex; GHashTable *g_callback_info_list = NULL; typedef

分布式-- WebSocket 全双工通讯

久未见 提交于 2019-12-01 03:12:49
1. WebSocket 1). 背景 B/S结构的软件项目中有时客户端需要实时的获得服务器消息,但默认HTTP协议只支持请求响应模式,这样做可以简化Web服务器,减少服务器的负担,加快响应速度,因为服务器不需要与客户端长时间建立一个通信链接,但不容易直接完成实时的消息推送功能,如聊天室、后台信息提示、实时更新数据等功能,但通过polling、Long polling、长连接、Flash Socket以及HTML5中定义的WebSocket能完成该功能需要。 2). OSI 模型与 TCP/IP 下载 pdf 图1.png 3). Socket简介 Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求。Socket的英文原义是“孔”或“插座”,作为UNIX的进程通信机制。Socket可以实现应用程序间网络通信。 图2.png I. Socket可以使用TCP/IP协议或UDP协议。 TCP/IP协议 TCP/IP协议是目前应用最为广泛的协议,是构成Internet国际互联网协议的最为基础的协议,由TCP和IP协议组成: => TCP协议:面向连接的、可靠的、基于字节流的传输层通信协议,负责数据的可靠性传输的问题。 => IP协议:用于报文交换网络的一种面向数据的协议,主要负责给每台网络设备一个网络地址,保证数据传输到正确的目的地。 UDP协议