1.7 P2P模式和C/S模式
2023.08.20
问: 为什么使用bt下载的时候会涉及到开端口的问题?
而其他的下载方式比如浏览器 网盘 等都不存在这个问题?
答:这其实就涉及到传输模式上的一些区别
也就是 P2P模式 和 C/S 模式
我们先讲 C/S 模式
C/S 模式 (Client-Server) 即服务端-客户端 模式
我们平时使用的应用大部是 C/S 模式的
CS结构看起来像这样:
在这个结构中有一台中心服务器
用户想要下载文件必须连接这个中心服务器
资源存储在这个中心服务器中
下载速度和服务器的带宽有关
如果服务器的带宽是固定的
那下载的用户越多
每个用户的平均下载速度也就越慢
如果中心服务器失效
那么其他用户也就无法进行下载了
在这个结构里面 一般来说 服务端只提供服务
而客户端只使用服务
而连接一般由客户端发起 服务端接受连接
这些中心服务器几乎都是有公网IP的 (可被直接访问)
所以不太需要考虑客户端的网络环境
问: 所以这就是网盘不开会员下载慢的原因吗?
答: 算是一个重要的原因
如果免费用户下载不限速 那将产生巨大的带宽成本
所以对非会员用户下载限速 也算是正常的操作
问: 那P2P呢?
答:P2P 是 (peer-to-peer)的缩写 即 对等式网络
bt下载 电骡(eMule)部分游戏联机 等 会使用这种模式
P2P结构看起来像这样:
在P2P模式中没有 客户端 和 服务端之分
也可以认为每台设备既是服务端也是客户端
每个设备之间是平等的
可以同时作为资源的请求者和提供者
我们称其为节点(结点) 资源通常存储在各个节点上
当一个节点加入P2P网络并共享资源时 它将提供自己拥有的资源
例如文件、数据、带宽等 给其他节点使用
其他节点可以通过与拥有资源的节点者直接通信 请求并获取所需的资源
问: 所以P2P网络中的节点需要像C/S模式中的中央服务器那样
打开端口让其他节点来访问?
答: 是的
问: 端口也不是一定要开吧?我可以去连接其他的节点啊?
答: 对 开放端口不是必须的 可以去主动连接其他节点
但是其他节点需要开放端口来接受你的请求
如果其他的节点也没有开放端口
那它们也无法接受你的请求
而如果你的节点开放了端口 就可以接受其他节点的请求
无论对方是否开放端口
问: 这么来说两个未开放端口的节点 无法相互连接了?
答: 是的 连接关系如下
公网节点: 此处表示开放端口的节点
内网节点: 此处表示未开放端口的节点
》和《 表连接发起方向
- 公网节点1 》公网节点2 √ 公网节点1《 公网节点2 √
- 内网节点1 》内网节点2 X 内网节点2《 内网节点1 X
- 公网节点 》内网节点 X 公网节点《 内网节点 √
两 公网 节点之间 可以 互相连接
两 内网 节点 不能 互相连接
公网 节点 无法 主动连接内网节点
内网 节点 可以 主动连接公网节点
问: 这么说来端口不通也可以用bt下载咯?
那开端口有什么好处呢?
答: 一般认为 端口是否开放 对上传速度影响较大
对下载速度的影响相对较小
开放端口可以获得更好的上传速度 接受其他节点的连接请求
比向其他节点发起请求效率更高
问: 可是我要上传速度有什么用呢?
答: 为BT网络做贡献 确切的说为其他节点做贡献
你的下载速度是别人的上传
而你的上传是别人的下载
如果没有人上传 那么也没有人有下载速度
问: P2P不会像C/S模式 那样产生带宽费用的问题?
答: 还是会的,不过这个费用是各个节点分担的
如果是在家中使用bt下载那使用的就是家庭网络的带宽
问: 那家庭网络的上传和下载速度不对等
岂不是下载速度也很慢
答: 只要节点的数量够多就行 每个节点贡献少量上传速度
总量还是很可观的 这也是bt下载人越多越快的原因