奇怪了,关于BT的协议问题,印象中应该使用UDP协议的,而事实不是

RunningYang 2006-01-04 11:11:16
刚才看了一下BT
我用的客户端是 贪婪BT(叫 ABC 的程序)
在它下载的时候,通过防火墙看了一下,它是用 TCP 协议的

这跟我的想象有很大的差距
我想象中的模型是这样的:
协议使用 UDP/IP (原因是容易穿透局域网,实现局域网内的节点通信),通过心跳包维持。

我的疑惑是这样的:
使用 TCP/IP 协议不是要求被连接方(服务器方)必须有公网IP(或者跟客户端在一个子网里面)吗?
那么BT使用 TCP/IP 协议不是要求大量的人必须有公网IP吗?
那这样一来,使用电信的那些没有公网IP的人不是很麻烦(只能连别人,而不能被连)?那BT在南方电信的统治下不是很难维持?

然而事实似乎不是这样。

请各位高人指点一下好吗?
...全文
2102 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
fhqiplj 2006-01-09
  • 打赏
  • 举报
回复
应该是通过HighID进行转发的吧?

不是P2P的,可能是一种分布式计算的东西,使用HighID作为服务器来进行数据转换来的
superlzdcn 2006-01-09
  • 打赏
  • 举报
回复
不管是TCP还是UDP,我想穿透NAT才是关键,想从外部连接内网主机应该是不太可能,TCP中,连接似乎只能从内网发出,UDP也一样,如果你给某个网关发送一个数据包,网关只能根据端口映射情况转发数据包,可是端口映射情况外网是一无所知的,想从外部连接应该是不行的,想穿透看来还是得绕点弯子,我估计是通过服务器进行客户端的登记,记录必要信息.而且现在的好多BT软件都有服务器的,比如我用的BITCOMET和THUNDER
DrSmart 2006-01-08
  • 打赏
  • 举报
回复
呵呵,不过网上的都是udp实现的p2p,不知如何解释,难道bt不算啊
skyMountain 2006-01-07
  • 打赏
  • 举报
回复
BT,还有eMule都采用TCP,不支持NAT穿透的。实际上,市面上常见的协议,支持NAT穿透的非常少。究其原因,可能是UDP的文件传输算法过于繁杂吧,流量控制,差错控制等等都要自己实现。eMule协议中有UDP数据包,但并不是拿来做文件传输的。BitComet等宣称说有内网穿透功能,其实仅仅是利用NAT的UPNP功能,在NAT上进行端口影射而已,并非我们常讨论的内网穿透。
Stefine 2006-01-07
  • 打赏
  • 举报
回复
呵呵,路过,学习
vc_asm 2006-01-07
  • 打赏
  • 举报
回复
理论上TCP也能穿透的,不过我觉的PPlive是用UDP的,其实,你能写TCP穿透的代码,那你也能写UDP的可靠传输的,两者难度因差不多,不过,这个时候再写TCP是没有意议了,因为UDP的快速会让你吃津,因为有的时候不需要非常可靠的
yingpf 2006-01-06
  • 打赏
  • 举报
回复
怎么可能用UDP?如果用udp,下载的文件恐怕会打不开
flashboy 2006-01-06
  • 打赏
  • 举报
回复
其实大多数主流的P2P软件还是以TCP为主,UDP为辅的. 包括很多P2P STREAM软件. UDP只不过用来传输一些频道信息或者登陆信息而已. 而数据流还是用TCP传输的.
RunningYang 2006-01-06
  • 打赏
  • 举报
回复
再顶一下
ddddh 2006-01-05
  • 打赏
  • 举报
回复
感觉BT服务器都是公网的服务器。客户端都是从公网服务器下载的,而客户端上传也是传到公网的服务器上,这样其它的客户就可以从比较近的公网服务器下载资料,这就是所谓的资源公享吧,其实并不是P2p的
---------------------------------------------------
BT只有tracker服务器,维护当前下载用户的列表(ip+端口)。交换文件当然是p2p的。
ddddh 2006-01-05
  • 打赏
  • 举报
回复
没有注意bt用的什么协议,不过前一段时间看了BT的帮助,里面提到了bt的用户好像分为两种,一种是HighID,一种是LowID,HighID之间可以交换连接,而LowID只能和HighID交换连接,如果这样做的原因只是因为协议的话,那么BT应该是使用的TCP
-----------------------------------------------------------

你说的是eMule吧:)
noneone 2006-01-05
  • 打赏
  • 举报
回复
没有注意bt用的什么协议,不过前一段时间看了BT的帮助,里面提到了bt的用户好像分为两种,一种是HighID,一种是LowID,HighID之间可以交换连接,而LowID只能和HighID交换连接,如果这样做的原因只是因为协议的话,那么BT应该是使用的TCP
football 2006-01-05
  • 打赏
  • 举报
回复
我的疑惑是这样的:
使用 TCP/IP 协议不是要求被连接方(服务器方)必须有公网IP(或者跟客户端在一个子网里面)吗?
那么BT使用 TCP/IP 协议不是要求大量的人必须有公网IP吗?
那这样一来,使用电信的那些没有公网IP的人不是很麻烦(只能连别人,而不能被连)?那BT在南方电信的统治下不是很难维持?


不管你如何上网,连到公网上去,终究是有个公网的ip地址的。不信你可以自己试试看,虽然通过电信的路由,可能会给多个上网机器使用同一个ip地址。

vc_asm 2006-01-05
  • 打赏
  • 举报
回复
感觉BT服务器都是公网的服务器。客户端都是从公网服务器下载的,而客户端上传也是传到公网的服务器上,这样其它的客户就可以从比较近的公网服务器下载资料,这就是所谓的资源公享吧,其实并不是P2p的

RunningYang 2006-01-05
  • 打赏
  • 举报
回复
没有注意bt用的什么协议,不过前一段时间看了BT的帮助,里面提到了bt的用户好像分为两种,一种是HighID,一种是LowID,HighID之间可以交换连接,而LowID只能和HighID交换连接,如果这样做的原因只是因为协议的话,那么BT应该是使用的TCP


看人介绍eMule好象是这样的
还没有找到中文的BT协议

看了一下PPLIVE在防火墙中的显示,它应该也是基于TCP的,可是奇怪的是它也用UDP监听一些IP地址的端口,不知道是什么作用

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧