1,实验了一下,如果要下载一个资源,需要在得知这个资源的类似URL字串(私下告知,BBS发布,邮件发布等等),一个例子:
xp2p:192.168.0.2:5000:filename.avi:someidbyMD5dad
如例子所示字串由五部分组成,分别是:
xp2p: 192.168.0.2:5000:filename.avi:someidbyMD5dad
自定义协议头: ip :port : filename :client程序生成的MD5串。
通过wireshark抓包分析:
a,发出udp包,携带了另一个应用层协议,拷,内网不能上外网当时没有马上查资料,居然把这么重要的一个东西给忘了。
b,这个应用层协议携带一个body,wireshark可以看见其中包含本机的hostname,另外一个是MD5串,还有一些<nums>5</nums>字样的信息。
c,没有迹象表面我的client去链接了某一个特定的服务器,client活动期间localhost只向外发生了一个包,desIP是串中的ip,desPort是串中的Port,这说明这种协议没有一个处理交换list的服务器,下载连接的方式完全依靠串进行。
d,基于c的描述,又是怎么样实现多点网络状的下载模式呢?A公布了他的 xp2p串,B,C,D都使用这个串去下载,B是怎么连到C的呢?猜想A在这个时候就是一个server,这个问题是需要好好分析的。
2,实验共享一个文件。
wireshark根本没发现有包发出去。
a,说明共享的时候也根本没有我猜想的去服务器注册告知的步骤。
b,共享一个文件后,完全依靠在BBS处公开自己的串,让别人来主动下载。这样就是说,谁提供共享文件,谁就提供串号,谁就完全被动被链接,谁就在分布p2p下载的时候作为其他client相互连接分块管理的server。
c,综合第一项基本可以肯定本机上的这个小exe文件既是server有是client了。
3,使用自己先共享一个文件,得到串码后,自己再下载。
wireshark没有发现任何包。
程序检测出是自己的时候可能就去走回环地址,我所探测的网卡上就看不见包了。
4,内网p2p下载工具和eMule的不同
内网p2p的优点:
y1,完全不依赖list server作为peer的寻址途径,彻底没有固定可被攻击(技术或法律)的server了;
y2,完全可以在任何内网使用。
内网p2p的缺点:
q1,不便于搜索;
5,我想实现的搜索功能该怎么实现呢?
a,在集中发布信息的BBS上搜索。目前不太可行,一则现在在BBS上公布的资源不多;二则时效性特别差。总之是现在用的人太少,发布的信息也太少。
b,探测网段的特定Port。目前我在共享一个文件时,Port一般是不做修改的,默认是5000,80%都会这样操作,但是还有两个问题需要解决:
q1,如果不是5000怎么办?候选方案:搜索其他不变的属性,比如应用层的那个协议特征,这个比较难啊,我不是netgate我怎样探到A的包?;
q2,即使搜索到是打开的,如果获取A上共享的资源呢?-->获取活动包的文件名?但是文件名是根本不在网上传播的,网上传播的只有MD5码。
总之,很难搜索。
6,今后几天可以做些实验
t1,不同ip之间A和B的下载码流信息。
t2,A共享,B连A,之后C连A,B和C是如何交流的。
t3,继续t2,关掉A,B和C是如何继续的。