社区
网络编程
帖子详情
<100分> 关于UDP通讯超时重发的"时机"问题!!!(顶着有分!)
jiudon
2005-09-27 05:19:34
环境:
udp协议/大文件传输/
问题:
采用时钟来控制超时重发, 感觉效果不理想, 不能根据网络的状况来动态的调整重发的时间!
求:
1. 怎么测试当前网络的状况(延时长短)?<最好有算法描述!丷哈>
2. 一般使用udp协议传数据采用什么样的"重发机制"效果比较好?!
3. 大家讨论"p2p Nat穿越"的时候, 总谈到"cone nat"不能穿透, 那么有没有办法识别nat的类型? 若有,怎么识别?
...全文
809
16
打赏
收藏
<100分> 关于UDP通讯超时重发的"时机"问题!!!(顶着有分!)
环境: udp协议/大文件传输/ 问题: 采用时钟来控制超时重发, 感觉效果不理想, 不能根据网络的状况来动态的调整重发的时间! 求: 1. 怎么测试当前网络的状况(延时长短)? 2. 一般使用udp协议传数据采用什么样的"重发机制"效果比较好?! 3. 大家讨论"p2p Nat穿越"的时候, 总谈到"cone nat"不能穿透, 那么有没有办法识别nat的类型? 若有,怎么识别?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jiudon
2005-10-21
打赏
举报
回复
谢谢各位了, 经过大家的指点,我看了TCP/IP协议的重发机制, 终于搞出来一个比较晚上的解决方案,呵呵!!
skykeen
2005-10-17
打赏
举报
回复
1. 怎么测试当前网络的状况(延时长短)?<最好有算法描述!丷哈>
==>取上一次数据发送接收的往返RTT作为参考时间,本次波动时间RT_WAVE(取常量,属经验值,视),则本次网络延时预测为 RT_NOW = a*RTT+(1-a)RT_WAVE [a,RT_WAVE为经验值,取常量,0<=a<=1]
若超时则采用快速递减,若未超时则慢启动(步增一个段),具体方案见 flashboy(爱写程序的小绵羊)的发言
2. 一般使用udp协议传数据采用什么样的"重发机制"效果比较好?!
==>普通是滑动窗口,但其效率不算太高,理解了这个机制,可以在其基础上写自己的选择重传协议
3. 大家讨论"p2p Nat穿越"的时候, 总谈到"cone nat"不能穿透, 那么有没有办法识别nat的类型? 若有,怎么识别?
cone nat 容易穿透的
symmetric NAT很困难,能否穿透看你运气如何啦
如何区分cone,symmetric等NAT类型,你须要看cone,symmetric具体表示什么,明白后是很容易写出检测程序的,建议参考一下 shootingstars那个贴子
大约是这样(实际情况比这复杂):
假如内网一台终端c对于外部节点M,N
M发现c的映射地址为a1:p1
N发现c的映射地址为a2:p2
若a1=a2,p1=p2,则你的NAT为cone型;本型具体还可分IP受限,与Port受限
若p1!=p2(或者a1~=a2)则你的NAT为symmetric型
最完整的测试大约最少需要9个轮回发送接收解析
你需要准备两个外网(相对于内网来说)地址,即M,N
dingpiao
2005-10-17
打赏
举报
回复
自己做包一级别的滑动窗口啊
yayaniuniu502
2005-10-07
打赏
举报
回复
顶!关注
flashboy
2005-10-06
打赏
举报
回复
超时时间可以动态调整的, 这也是TCP实现中的一种标准算法. 大致做法是:
系统中有一个最小超时时间min 和一个最大超时时间max.
如果当前当前初始化超时时间为n, 如果在发送数据后<n内收到确认, 则对n减小固定步长值m, n=n-m , 并且判断n不能够小于min. 如果n内没有收到确认, 则 n=n+m, 但是要判断n不能大于MAX.
就这样,可以根据网络动态变化情况实现动态调整超时间.
jiudon
2005-09-30
打赏
举报
回复
TCP的重发机制我看过了,算法有点复杂,有没有人有类似的简单点的算法啊!!!
tanggt006
2005-09-29
打赏
举报
回复
up
胜佑
2005-09-29
打赏
举报
回复
看看TCP里的重发机制。
weiziyuner
2005-09-28
打赏
举报
回复
1.就是接收字节数除以时间~
2.自己设计包头,用包的序列号。
3.已经有人做了,设计了源代码,好像也不是太准确(对于具体的运用)。
DerryZhang
2005-09-28
打赏
举报
回复
UP
load888
2005-09-28
打赏
举报
回复
嘻嘻,顶喽
rageliu
2005-09-28
打赏
举报
回复
ding
顶
jiudon
2005-09-28
打赏
举报
回复
我顶!!1
dingpiao
2005-09-28
打赏
举报
回复
忙就不重发了??
zhchyg100
2005-09-27
打赏
举报
回复
http://community.csdn.net/Expert/topic/4297/4297692.xml?temp=.9950373
laofang
2005-09-27
打赏
举报
回复
发送数据包时计算当前发送速度(发送字节数/所用时间),如果速度低于设定阀值,停止发送,隔一段时间再继续发送,重复此发送过程。
就像windows资源浏览器打开一个ftp站点拷贝文件就是动态计算速度,得出剩下时间。
100
00字讲解TCP协议(确认应答,
超时
重传,三次握手,四次挥手等等众多机制)以及
UDP
协议(
UDP
报文,校验和)
本篇文章主要讲解了TCP报文,确认应答,
超时
重传,三次握手,四次挥手,流量控制,拥塞控制,滑动窗口,捎带应答,延时应答等众多重要机制以及粘包
问题
,TCP和
UDP
的区别总结
前端面试--111
<script type="text/javascript"> var obj = {} Object.defineProperty(obj, 'txt', { get: function () { return obj },
小青龙的Java面试笔记
计算机网络 一、谈下你对五层网络协议体系结构的理解? 1)应用层 应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如域名系统 DNS,支持万维网应用的 HTTP 协议,支持电子邮件的 SMTP 协议等等。我们把应用层交互的数据单元称为报文。 2)运输层 运输层(transport layer)的主要任务就是负责向两台主机
【Linux 网络】网络基础(二)(传输层协议:
UDP
、TCP)
当出现丢包情况的时候,发送方是不会知道究竟是数据段发送的时候丢包了,还是确认应答的时候丢包,所以发送方只能进行
超时
重传。如果是第二种丢包情况,接收方就可能会收到一份同样的数据。因为重复的报文也是不可靠的一种,所以主机 B 需要进行去重(通过序号)。因为需要
超时
重传,所以数据发送出去后不会立即清除,而是保留一段时间,直到收到该数据的响应报文后,发送缓冲区中的这部
分
数据才可以被删除或覆盖。
java知识总结
所谓反射,是java在运行时进行自我观察的能力,通过class、constructor、field、method四个方法获取一个类的各个组成部
分
。在Java运行时环境中,对任意一个类,可以知道类有哪些属性和方法。这种动态获取类的信息以及动态调用对象的方法的功能来自于反射机制。序列化就是一种用来处理对象流的机制。将对象的内容流化,将流化后的对象传输于网络之间。序列化是通过实现serializable接口。
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章