首页 | 乐园 | 淘宝店 | 社区 | 电驴 | 网页游戏 | 网址大全

VeryCD / 社区 / 电驴软件开发 / 精华

资源管理小组

相关主题

主题: VeryCD emule L2L 实现原理和实现方法介绍(一)

相关分类: emuledev
« 上一页 1 2

godLaugh (组长) 2007/09/05 12:15:05 顶楼 举报

一、引言

VeryCD emule 自去年推出LowToLow功能以来,经过很多网友热心的测试, 到限制为止已经比较稳定的运行了,VeryCD emule 是一个开源软件,我们遵循GPL的开放精神,开放了所有代码,但是emule的各项功能都有很大的完善空间, 我们相信还有很多网络编程爱好者热爱emule这个软件,但是由于没有相关的文档资料,估计想参与的网友可能也不知道该从何下手,因此我们准备在这里陆续贴出些资料,期待更多编程爱好者、网络系统架构师能参与进来,大家一起来完善改进emule这个优秀的P2P软件,大家一起来分享知识,分享编程的乐趣。

二、VeryCD emule L2L相关类简介和架构图

穿透功能代码主要在以下文件中实现:
NatThread.cpp、NatSocket.hcpp、 TraverseBySourceExchange.cpp、TraverseBySvr.cpp、
TraverseStrategy.cpp、 SourceExchangeNAT.cpp

它们主要完成以下类的的具体功能:
CNatThread: 穿透功能的工作线程
CNatSocket: 穿透成功,用于Peer之间通讯(也即FakeTcpSocket,用UDP模拟TCP通信,在这个类中的一些发送接收数据处理的算法我们采用了emule neo Mode的一些实现代码)
CTraverseFactory 策略工厂,创建策略组合
CTraverseBySvr 基于服务器穿透的策略类
CTraverseBySourceExchange 基于源交换穿透的策略类
CUnconnSocket 被动方收到穿透请求,创建CUnconnSocket,开始穿透
CTraverseStrategy 穿透策略类的基类
CSourceExchangeNAT 处理源交换穿透命令

系统静态结构图如下:
IPB Image

三、实现思路

CAsyncSocketEx是TCP socket,emule通过它把数据发送出去。我们扩展了CAsyncSocketEx的Connect, Send, Receive三个函数。如果是穿透连接的话,走UDP穿透的通道,否则就按原来的TCP传输。
这样的好处是:
1 合理性。我们是改进数据传输方式,应该只改动传输相关的类(即CAsyncSocketEx),其它地方代码不应该受到大的改动,对其它逻辑不应该有大的影响。
2 架构上耦合度小。主要是CAsyncSocketEx跟穿透有关系,代码与官方同步时Merge的工作量小。
3. 对上层透明。上层不必关心Peer是不是Low2Low的Peer。

穿透原理图如下
IPB Image

[下一次我们会具体介绍每个类的内部实现机理和一些算法策略,待续...]
mail: emuledev@VeryCD.com
Ps: 转载请注明出处 VeryCD emule 软件开发组 (文档编写yunchenn)

分享到开心网  分享到校内  收藏到QQ书签    订阅本主題RSS更新  美味书签

2007/09/05 12:31:45godLaugh 最后编辑 | 查看全部

Immense_Forest_Snowfield 2007/09/05 12:20:05 2楼 举报

沙发啊!!


[0] [0] [回复]

SoarChin 2007/09/05 12:20:17 3楼 举报

顶一个,附带说一句,目前代码里用的已经是NAT_SYNC2了


[0] [0] [回复]

godLaugh (组长) 2007/09/05 12:29:34 4楼 举报

对,NAT_SYNC2 是为了合并多个查询做的优化,为节约带宽做的处理


[0] [0] [回复]

hyseee 2007/09/05 12:30:54 5楼 举报

呵呵 ,看看~


[0] [0] [回复]

2007/09/05 12:32:20hyseee 最后编辑 | 查看全部

xfxgsun 2007/09/08 21:19:08 6楼 举报

应该发布一个word或者chm-help格式文档,方便查阅。对这个比较感兴趣。让国外一些mod组织看看也好,看这次他们会怎么说。


[+1] [0] [回复]

ewolfok 2007/10/04 19:41:44 7楼 举报

呵 看到这个贴子! 我实在是高兴啊!

这几天一直在读EMULE的代码! 多一些文档进度就快多了!

goodlunch,期待你多写些文档出来啊!
能解读下KAD网络和ED2K网络的耦合代码就更好了!


[+1] [0] [回复]

focus_world | to ewolfok... 2007/10/27 17:29:15 8楼 举报

to ewolfok 方便留email码?


[0] [0] [回复]

不正直的人 | 两个问题。。。。... 2007/12/14 15:20:57 9楼 举报

emule的开发团队,你们好:

我是大学三年级学生,最近在做一些关于内网穿透的工作,基本的思想是网络上讨论得比较多的UDP打洞,因为UDP协议不保证传输的正确性,所以我仿照tcp的确认、重传和拥塞控制策略,做了一个可靠的UDP传输协议用于实现UDP打洞的程序。最近看到你们的源代码和emule开发论坛上的帖子,所以就把L2L穿透的部分看了看,发现里面的原理也差不多,也使用了UDP协议模拟TCP行为,但只使用了滑动窗口和一般的超时重传,把慢启动和快速重传去掉了,直接使用RTT来计算RTO,想问一下你们这样设计是出于什么样的考虑,会不会引起拥塞。

另外,还设计了一个TCP在内网之间穿越的方案,在家用的TP-Link宽带路由器上实验了一下发现可行性不高,各种路由器对tcp连接的处理的策略也不同,所以估计成功的概率比较小。不知道贵团队中有没有对TCP穿透有自己的见解的人,希望可以讨论一下。


[0] [0] [回复]

RadishLi 2008/01/08 09:11:16 10楼 举报

电驴资源

希望开发组早日实现 高>低 . 低>低 . 低>高 . 高>高 通通可以相互下载.


[0] [0] [回复]

2008/01/11 05:37:37RadishLi 最后编辑 | 查看全部

长头发的和尚 2008/03/29 11:51:16 11楼 举报

hehe 菜鸟还是看不懂哦


[0] [0] [回复]

zyx040404 2008/04/03 21:04:45 12楼 举报

有没有Apple版的emule?


[0] [0] [回复]

ewolfok 2008/04/06 19:43:34 13楼 举报

有MAC下的Amule


[0] [0] [回复]

meteormatt 2008/04/10 20:31:13 14楼 举报

这个构架不错


[0] [0] [回复]

darne 2008/05/17 01:03:03 15楼 举报

新手 疯狂学习积累中


[0] [0] [回复]

weiqiujie9_18 2008/05/17 14:16:18 16楼 举报

我不明白,都能L2L了,为什么默认还要过滤lowid?


[+1] [0] [回复]

cwb0525 2008/08/12 20:04:43 17楼 举报

新手研究中,顶!


[0] [0] [回复]

peternt 2008/08/19 20:35:25 18楼 举报

那是国外的mod,vc版默认是不会过滤lowid的


[0] [0] [回复]

edwardfr 2008/08/24 12:58:22 19楼 举报

怎麼沒有第二部分了...


[0] [0] [回复]

snakelw 2008/10/10 15:47:00 20楼 举报

傻傻的菜鸟还是看不懂..只是希望看有什么下载了可以让我的VeryCD v1.0.4走的快点就很感激了.


[+1] [0] [回复]

panyurain 2008/12/17 12:36:39 21楼 举报

祝越来越好


[0] [0] [回复]

第四阶级 2009/01/19 14:20:19 22楼 举报

学习积累中


[0] [0] [回复]

ShejiRo 2009/01/31 21:58:46 23楼 举报

下个学期没有课,除了毕业设计,我还想做点自己喜欢的事情,就是研究研究开源的软件。
毕竟这是前人的一笔大大的财富,如果只是用他们的成果实在是太浪费了。
支持eMule,支持easyMule


[0] [0] [回复]

24-25楼已被删除

armstrong1225 2009/02/06 17:35:32 26楼 举报

学习


[+1] [0] [回复]

27楼已被删除

leonwong86 2009/02/13 00:16:16 28楼 举报

暂时只能看,不能懂


[+2] [0] [回复]

lwd650 2009/02/14 03:55:11 29楼 举报

什么时候我才能看懂哦,在我面前你们都是高手


[+1] [0] [回复]

lwd650 2009/02/14 03:56:33 30楼 举报

目前我还没有编程的真实感觉,不过马上要学了哈哈


[0] [0] [回复]

« 上一页 1 2


返回组首页

快速回复

(?) 附件上传

关于我们 | 诚聘英才 | 著作权声明 | 合作信息 | 广告事务
沪ICP备05001009号
©2003 - 2009 VeryCD.com Some Rights Reserved.