LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 742|回复: 1

UDP的传输控制的解决提案

[复制链接]
发表于 2005-3-23 12:22:21 | 显示全部楼层 |阅读模式
我想让udp支持tcp的顺序保证机制。
首先假设我发送过来的upd段都提供了类似tcp的段序号。
于是我在应用层做了一个类似SLAB内存分配器的缓冲管理。
因为UDP的段大小限制为64KB,于是我设置了一组缓冲区64KB的3个,32KB的3个,16KB的3个,8KB的3个,4KB的3个。
这样如果udp段不是顺序到达的话,我就可以按照它最接近的大小放入相应的缓冲区,然后等待下一个udp段的到来。
这样按照udp发送过来的段大小,我可以最多保证将不是所需要的却到达的udp段缓冲至15个,最少只能缓冲3个,如果后边3个都是64KB大小的udp段的话。
如果我最终还是没有等待到那个需要的udp段的话,我就只能要求服务器重传。
大家有没有更好的建议,大家觉得这种方式速度上快不快?
发表于 2005-3-23 12:34:08 | 显示全部楼层
如果不是很必要的话,我觉得最好不要弄得那么复杂。

你是要在UDP上层设计一个协议,数据格式是你定的,有效负载能用定长的就用定长的。接收端也用定长的缓冲单元或者干脆一个大片的缓冲区。如果确实有较高的差错控制和流量控制需求,去看看“滑动窗口协议”的原理,必要的话看看TCP的相关源代码。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表