请教在公网上最合适的UDP包大小

tangrh 2004-12-27 03:35:19
UDP传输不可靠这是大家公认的,但由于它速度快,开销相对小,而且UDP打洞的成功概率一般情况下又会大于TCP打洞成功概率,因此众多P2P软件能够使用UDP时肯定使用UDP。我有这么一个疑问,假设现在A和B通过公网已经能够进行UDP包的交互,并且有一大块连续数据(如文件)要传输,那么如何确定这个UDP包的最合适大小,使得我们实现自定义可靠传输时重传的概率最小,而底层组包成功率也相对较高(太大的包在网络上传输必定要拆包,而到接收端,协议栈又要把它组合起来,如果拆太多,完整收齐组合的可能性肯定降低了,搞惯了TCP,UDP的处理还真是太麻烦而且不太习惯)。请大家畅所欲言,一起来分析分析。另外TCP一般是采用发送端超时重传(未收到确认的情况下),我想UDP下如果实现成接收端主动要求重传是否实现起来更方便点呢?比如现在完整接收100,最新收到105,那我就直接要求发送端重发101-104,这样是否可行呢?
最近要做这么一个东西(真正的P2P),还没有多少眉目,希望大家多捧场。
...全文
3201 1 收藏 35
写回复
35 条回复
boyzhang 2005年07月04日
GZ
回复 点赞
greentest 2005年06月05日
mark
回复 点赞
realsuperliu 2005年01月18日
弱弱的问一下,什么叫打洞?
回复 点赞
qyii 2005年01月18日
没有最合适吧...只有更合适!呵呵~
毕竟各网络环境时时刻刻都在变啊!
回复 点赞
tangrh 2005年01月18日
看来要结了
回复 点赞
yesry 2004年12月30日
1043
回复 点赞
tangrh 2004年12月30日
????呵呵,不解,还有很多困惑啊
回复 点赞
cnpeople 2004年12月30日
取最小的MTU
回复 点赞
tangrh 2004年12月30日
现在很想问why,而不想问怎么做
回复 点赞
tangrh 2004年12月29日
继续讨论,谁实践过啊,继续吧
回复 点赞
zyg0 2004年12月29日
忘了,文件传送的时候不是1个net下的也不要紧,就用点对点。如果不支持net的话,还得用tcp
回复 点赞
zyg0 2004年12月29日
to : qyii(向范敬宜同志学习!)
我的那个方法是避免不了完全丢包的那种情况,但是那种情况很少的,如果是互联网的话我会采用另一种方法
1.尽量小包。我用1k没有问题,但是最好是1k以下的,网络环境有时候不好,反正我采用的是1k
2.包头包头是必不可少的,如果想实现bt那种的断点续传的话就要+2各包头,1个是包的大小,一个是序号
3,重要的信息采用tcp发送,如文件的总长度,以便于以后的和包和以后的重发。
4,接收完包后在接到不完全包时就叫服务器从发,在接到包序号少的情况也从发
我个人见解,vc我不怎么样,要是vb的话,我恐怕能实现,但是现在我没有时间,项目太紧
回复 点赞
Sander 2004年12月28日
实际上每个公网的router都有MTU,可能不同,但都是1k,或512,而你的程序首先1k测试(自动测试)丢包率超出你设定的数据,就改小的packet.
--------------------------------------
另外,我想问的问题是:http://community.csdn.net/Expert/topic/3660/3660951.xml?temp=.4984705
----------
哪位有实现过 “用UDP实现可靠文件传输” 的完整的封装类

“用UDP实现可靠文件传输”的相关连接:
http://blog.csdn.net/pclili/archive/2004/12/12/213631.aspx
希望高手赐教!

回复 点赞
zyg0 2004年12月28日
只是本人的见解,没有什么最好的p2p方案,最好的 方案是tcp和udp结合用,tcp发指令,udp传大消息,文件,如果不支持net都改tcp 至少qq现在是怎么做的
晕,怎么是vb版
回复 点赞
whwjn 2004年12月28日
今天blog怎么打不开了?
回复 点赞
godsaveme888 2004年12月28日
多找点临床验证,好坏环境皆要
回复 点赞
zyg0 2004年12月28日
在公网我测试最大的 包是1k,因为多了就 会丢包,建议单位越小越好,我设置2k tcp 都有问题(仅限于某些网络环境,的某些机器 如adsl,我家机器)
回复 点赞
qyii 2004年12月28日
像BT一样...对每个包计算特征码.把特征码传过去,先进行特征码校验.通过C,S双方确定特征码无误!再由一方发送相应的包.收方收到后,可以按先后次序用对应包的特征码进行校验.

哈哈哈...这也太BT了吧!不过对于两个内网,又要通信.没办法啦!
zyg0啊,我想说的是你在VB版那个方法是防止不了UDP掉包的...

不过自己没实力...连windows网络编程也没看完!谈不上写网络程序,所以随便吹吹牛!大家当没看见好了!
回复 点赞
qyii 2004年12月28日
有意思...
暂时没什么话说,等着大的进展消息.
回复 点赞
碧螺春的马甲 2004年12月28日
公司内部局域网内 UDP 还会丢吗?因该不会了吧?
回复 点赞
发动态
发帖子
网络编程
创建于2007-09-28

7880

社区成员

6.4w+

社区内容

VC/MFC 网络编程
社区公告
暂无公告