比特彗星-端口阻塞解決方案-1.7 P2P模式 和C/S模式的差異
1.7 P2P模式和C/S模式
問:為什么使用bt下載的時(shí)候會(huì)涉及到開端口的問題?
而其他的下載方式 比如瀏覽器 網(wǎng)盤 等都不存在這個(gè)問題?
答:這其實(shí)就涉及到傳輸模式上的一些區(qū)別也就是?P2P模式 和 C/S 模式
我們先講 C/S 模式
C/S 模式 (Client-Server)?即服務(wù)端-客戶端 模式
我們平時(shí)使用的應(yīng)用大部是 C/S 模式的
CS結(jié)構(gòu)看起來像這樣:

圖片來自維基百科
在這個(gè)結(jié)構(gòu)中有一臺(tái)中心服務(wù)器
用戶想要下載文件必須連接這個(gè)中心服務(wù)器?資源存儲(chǔ)在這個(gè)中心服務(wù)器中
下載速度和服務(wù)器的帶寬有關(guān)
如果服務(wù)器的帶寬是固定的
那下載的用戶越多 每個(gè)用戶的平均下載速度也就越慢
如果中心服務(wù)器失效 那么其他用戶也就無法進(jìn)行下載了
在這個(gè)結(jié)構(gòu)里面 一般來說 服務(wù)端只提供服務(wù)
而客戶端只使用服務(wù)
而連接一般由客戶端發(fā)起?服務(wù)端接受連接
這些中心服務(wù)器幾乎都是有公網(wǎng)ip的?(可被直接訪問)
所以不太需要考慮客戶端的網(wǎng)絡(luò)環(huán)境
問:所以這就是網(wǎng)盤不開會(huì)員下載慢的原因嗎?
答:算是一個(gè)重要的原因
如果免費(fèi)用戶下載不限速 那將產(chǎn)生巨大的帶寬成本
所以對(duì)非會(huì)員用戶下載限速 也算是正常的操作
問:那P2P呢?
答:P2P 是 (peer-to-peer)的縮寫 即 對(duì)等式網(wǎng)絡(luò)
bt下載 電騾(eMule)部分游戲聯(lián)機(jī) 等 會(huì)使用這種模式
P2P結(jié)構(gòu)看起來像這樣:

圖片來自維基百科
在P2P模式中沒有 客戶端 和 服務(wù)端之分
也可以認(rèn)為每臺(tái)設(shè)備既是 服務(wù)端 也是?客戶端
每個(gè)設(shè)備之間是平等的
可以同時(shí)作為資源的請(qǐng)求者和提供者
我們稱其為節(jié)點(diǎn)
資源通常存儲(chǔ)在各個(gè)節(jié)點(diǎn)上
當(dāng)一個(gè)節(jié)點(diǎn)加入P2P網(wǎng)絡(luò)并共享資源時(shí),它將提供自己擁有的資源
(例如文件、數(shù)據(jù)、帶寬等)給其他節(jié)點(diǎn)使用。
其他節(jié)點(diǎn)可以通過與擁有資源的節(jié)點(diǎn)者直接通信,請(qǐng)求并獲取所需的資源
問:所以P2P網(wǎng)絡(luò)中的節(jié)點(diǎn)需要像C/S模式中的中央服務(wù)器那樣 打開端口
而其他節(jié)點(diǎn)來訪問?
答:是的
問:端口也不是一定要開吧?我可以去連接其他的節(jié)點(diǎn)啊?
答:對(duì),開放端口不是必須的 可以去主動(dòng)連接其他節(jié)點(diǎn)
但是其他節(jié)點(diǎn)需要開放端口來接受你的請(qǐng)求
如果其他的節(jié)點(diǎn)也沒有開放端口
那它們也無法接受你的請(qǐng)求
而如果你的節(jié)點(diǎn)開放了端口 就可以接受其他節(jié)點(diǎn)的請(qǐng)求
無論對(duì)方是否開放端口
問:這么來說兩個(gè)未開放端口的節(jié)點(diǎn) 無法相互連接了?
答:是的?連接關(guān)系如下
公網(wǎng)節(jié)點(diǎn):此處表示開放端口的節(jié)點(diǎn)?
內(nèi)網(wǎng)節(jié)點(diǎn):此處表示未開放端口的節(jié)點(diǎn)
》和《 表連接發(fā)起方向
公網(wǎng)節(jié)點(diǎn)1 》公網(wǎng)節(jié)點(diǎn)2 √
公網(wǎng)節(jié)點(diǎn)1《 公網(wǎng)節(jié)點(diǎn)2 √內(nèi)網(wǎng)節(jié)點(diǎn)1 》內(nèi)網(wǎng)節(jié)點(diǎn)2 X
內(nèi)網(wǎng)節(jié)點(diǎn)2《 內(nèi)網(wǎng)節(jié)點(diǎn)1 X公網(wǎng)節(jié)點(diǎn) 》內(nèi)網(wǎng)節(jié)點(diǎn) X
公網(wǎng)節(jié)點(diǎn)《 內(nèi)網(wǎng)節(jié)點(diǎn) √
兩公網(wǎng)節(jié)點(diǎn)之間可以互相連接
兩內(nèi)網(wǎng)節(jié)點(diǎn)不能互相連接
公網(wǎng)節(jié)點(diǎn)無法主動(dòng)連接內(nèi)網(wǎng)節(jié)點(diǎn)
內(nèi)網(wǎng)節(jié)點(diǎn)可以主動(dòng)連接公網(wǎng)節(jié)點(diǎn)
問:這么說來端口不通也可以用bt下載咯?
那開端口有什么好處呢?
答:一般認(rèn)為 端口是否開放 對(duì)上傳速度影響較大
對(duì)下載速度的影響相對(duì)較小
開放端口可以獲得更好的上傳速度
接受其他節(jié)點(diǎn)的連接請(qǐng)求 比 向其他節(jié)點(diǎn)發(fā)起請(qǐng)求效率更高
問:可是我要上傳速度有什么用呢?
答:為BT網(wǎng)絡(luò)做貢獻(xiàn) 確切的說為其他節(jié)點(diǎn)做貢獻(xiàn)
你的下載速度是別人的上傳
而你的上傳是別人的下載
如果沒有人上傳 那么也沒有人有下載速度
問:P2P不會(huì)像C/S模式 那樣產(chǎn)生帶寬費(fèi)用的問題?
答:還是會(huì)的,不過這個(gè)費(fèi)用是各個(gè)節(jié)點(diǎn)分擔(dān)的
如果是在家中使用bt下載那使用的就是家庭網(wǎng)絡(luò)的帶寬
問:那家庭網(wǎng)絡(luò)的上傳和下載速度不對(duì)等
豈不是下載速度也很慢
答:只要節(jié)點(diǎn)的數(shù)量夠多就行
每個(gè)節(jié)點(diǎn)貢獻(xiàn)少量上傳速度 總量還是很可觀的
這也是bt下載人越多越快的原因