一. TCP/IP基本觀念

1. IP :

每台在TCP/IP網路上的電腦必須具備的一個代表號或一個地址.IP又分為private IP(192.168.x.x /10.x.x.x /172.16.x.x~172.31.x.x)和public IP(除了少數特殊IP,只要不是private IP就是public IP).

2. port :

port可視為TCP/IP網路中電腦提供的某種服務的門牌號碼,號碼(port的數值)是多少不重要,號碼代表的服務才重要.例如: port80代表web的服務, port21代表FTP的服務, 我的port12345代表BT的服務(每個人的BT port設的不一定相同).port的數值是多少完全和上下載速度無關.以BT為例,當別的電腦企圖用 你的IP:12345 連結你的電腦,表示他要求你提供BT的上下載資料的服務.

3. TCP的協定 :

送出端送出一個封包(資料)後一定要等到接受端回覆一個收到無誤的訊息(ACK),才會繼續送出下一個封包,如果送出端在一定的時間內等不到ACK就會再重送一次.對上下載頻寬不對稱的ADSL而言,當BT下載資料量很大時,除了正常的上載資料佔用上載頻寬外,相對也會有比較多的回覆ACK佔用較多的上載頻寬回覆ACK訊息.所以BT上載頻寬不可以設的太滿(無限制),除非在作種時沒什麼下載資料.

二. BT基本觀念

BT的精神雖然是分享,但BT實作的內部有人性"你敬我一尺我還你一丈"的機制,因此有人主張上載頻寬不要限制,利己利人.這點我並不完全認同,相信你看了上一段的"TCP的協定"就會瞭解原因.
至於ADSL上載頻寬應該怎麼設,從儘量提高下載速度的觀點出發,我的建議是種子很多時,儘量降低全局最大上傳速度.種子很少時,儘量提高全局最大上傳速度,但不要用無限制,這樣比較有機會提高下載速度

三. BT常見名詞

1. 用戶(peer) :
每個用BT軟體上下傳資料的電腦.

2. 種子(seed) :
torrent發佈者或已100%完成下載,只上傳分享的的用戶.這種用戶愈多愈好.由於國內使用率比較高的BT軟體都是彼岸的產品,有的軟體把torrent檔案翻譯成種子,所以會有人說"我下載了xx種子..."

3. 分享率 :
上傳資料量 / 下傳資料量的比率,是一種BT的良心度,沒實際作用.

4. 健康度 :
你連結到的用戶所擁有完整原始資料的百分比,健康度超過100%時即使你沒連結到種子還是可以成功下載完成.

5. 優先率 :
對排隊任務的效果比較明顯,對已經上下傳任務的效果比較不明顯,優先率高的排隊任務優先下載.

6. 本地 :
你主動連結別的peer,通常安裝好BT軟體開始下載時就看得到.

7. 遠程 :
別的peer主動連結你,少了遠程就少了連接到高速peer/seed的數目和機會,相對的會降低下載的速度.

8. 網內互聯 :
兩個沒有設定port mapping的內網用戶也可透過UDP互相連結,對內網用戶略有幫助.

9. torrent檔案 :
..torrent是一個提供BT下載所需的資訊檔,內容包含檔名,大小,驗證碼,使用的tracker等資訊.

10. tracker :
tracker是一個資料庫,記錄著torrent檔案和每個peer的IP/port..等資訊,每個peer都必須連到tracker取得別的peer的IP/port..等資訊才能和別的peer連線上下傳資料.
tracker的功能只提供相同下載任務的peer/seed資訊給彼此,和上下傳速度完全無關.上下傳速度是取決於peer/seed間的互動.

11. 內網 :
在BT的意義和原來的LAN略有不同,是指使用private IP的電腦,通常有安裝IP分享器.

12. 外網 :
在BT的意義和原來的WAN略有不同,是指使用public IP的電腦.

13. 驗證碼 :
就是用一種數學公式(演算法)去對整個目錄或檔案做運算所得到一組唯一且不可逆的數值,所以兩個有相同驗證碼的目錄或檔案代表兩者完全相同,用來確認你下載的目錄或檔案和原來的目錄或檔案完全相同沒有被篡改.
BT在建立torrent檔時會依分塊(Piece)大小來分割被分享檔案,並對這些Piece用SHA1演算法產生20Bytes的驗證碼,每種BT軟體都用這個驗證碼來檢查那些Piece已正確下載/尚未下載.

14. 磁碟緩存 :
就是將下載的資料先存在記憶體內,等記憶體內的資料到了一定的數值或比例再一次寫入硬碟,以減少硬碟讀寫的次數,達到保護硬碟的目的.

15. 代理伺服器(PROXY) :
PROXY有兩種功能,一是當成資料暫存(cache)可有效降低網路資源的重複使用,通常用在暫存網頁.
另一個就是當作電腦的代理.電腦(BT)不直接和欲連接的另一台電腦(tracker)連接,而是透過第三台電腦(PROXY)當中間人,所以tracker只認得PROXY的IP.tracker把資料送給PROXY再由PROXY把資料送給BT.用這種方法就可以隱藏(變更)BT電腦的IP,達成欺瞞防火牆或tracker的目的.

四. 常見問題

Q: 為什麼我的BT無法下載
A: 1. 個人電腦的XP或個人防火牆阻擋BT程式使用網路
   2. 被學校,公司或社區網路管理單位阻擋BT程式使用網路
   3. 設定的PROXY代理伺服器無法連上tracker
   4. tracker忙碌或掛了或封了你的IP.

Q: 為什麼Tracker等待回應很久卻無法連結
A: Tracker Response Error:unregistered torrent in Tracker: 有些tracker為了
   管理,避免資源被濫用或為了過濾內容,會要求註冊並上傳torrent檔案.如果發佈
   torrent的人沒上傳torrent檔案,Tracker就會回覆這個訊息並拒絕連接的要求.
   Tracker Return Code: 400, Stop! in Tracker: 可能是BT軟體的問題,換一種BT
   軟體看看.
   Tracker Return Code: 403, Stop! in Tracker: 被tracker封了IP,試試使用
   PROXY代理伺服器.

Q: 為什麼別人的下載速速有100多KB/s,我只有個位數
A: 一方面如果可能的話使用愈高速的線路,高速下載的機會愈大.另一方面除了調整設
   定之外,能否達到高速下載還是得視種子/peer多寡,連接到peer分享的頻寬而定.
   下載速度的快慢除了設定之外還要靠運氣(tracker分配給你的peer/seed).

Q: 如何調整設定
A: 1.如果你是adsl的用戶就把BT上傳速度設的比adsl上傳頻寬低,如果還想同時上網
     就要設的更低,但下載完成別忘了加大上傳頻寬回饋他人,別當落跑一族.
   2.一次不要同時下載多個任務,最好一次一個.如果下載速度實在不理想可視情形增
     加下載任務.
   3.取消windows XP的防火牆,另外安裝別的防火牆,或替windows XP的防火牆打開BT
     監聽埠.
   4.不要安裝windows XP SP2,不然要用EvID4226Patch調高TCP/IP half-open
     connection.
   5.如果你是區域網路(內網)用戶,啟動UPnP port mapping功能(IP分享器必須也要
     支援UPnP)或自行在IP分享器的NAT或虛擬伺服器功能中設定port mapping.
   6.全局最大上載連接數設2
   7.安裝BT Engine也許有幫助
   8.最後還要靠點運氣,連到大頻寬分享的peer/seed.

Q: 為什麼我的BT看不到遠程
A:  bitcomet的[peer列表]的[位置]如果沒有"遠程"或bitspirit的[連接]沒有向下的
   黃色箭頭,bittorrent會出現黃色燈號的話就是防火牆或IP分享器沒打開BT的port.
   打開BT的port的方法如下 :
   IP分享器 :
    在IP分享器的虛擬伺服器功能中設定port mapping,方法如下:
    假設你的IP是192.168.1.1, BT的port是10000
    伺服器位址     內部網路端埠   型態    網際網路端埠
    192.168.1.1        10000      TCP        10000

防火牆 :
    除非你已另外安裝其他家的防火牆產品,否則不建議你把XP的防火牆關閉.
    A.已另外安裝其他家的防火牆產品:
      1. 在網際網路連線 或 區域網路 上雙按,然後按〔內容]
      2. 按一下〔進階〕索引標籤,然後取消〔網際網路連線防火牆〕
    B.只有XP的防火牆:
      1. 在網際網路連線 或 區域網路 上雙按,然後按〔內容]
      2. 按一下〔進階〕索引標籤,〔網際網路連線防火牆〕打勾,然後按一下〔設定]
      3. 按一下〔新增〕以開啟新的連接埠
      4. 在〔描述〕方塊中輸入一個易懂的名稱,例如:BT port 10000(假設你的BT監
         聽port是10000)
      5. 在〔您的網路上這個服務所在電腦的名稱或 IP 位址〕方塊中輸入: 127.0.0.1
      6. 在〔外部連接埠〕與〔內部連接埠〕方塊中輸入連接埠號碼10000,大部分情
         況下是使用相同的號碼
      7. 按一下〔TCP〕,然後按一下〔確定〕

Q: 如何設定IP分享器
A: 通常在IE瀏覽器網址列輸入 http://192.168.x.x(視IP分享器的廠牌而定) ,再輸入
   管理員的帳號密碼才能進入設定畫面,詳細的操作請參考IP分享器說明書.

Q: 開BT後瀏覽網頁都跑不動
A: 為了防止網絡蠕蟲病毒的傳播攻擊,微軟在Windows XP SP2把等待連接數限制成10
   個,這會降低BT等P2P軟體的下載速度,還會導致IE等瀏覽器沒有連接可用而無法打
   開網頁.你可下載並執行 EvID4226Patch /L=xxx ,xxx就是你要改的數目,例如
   EvID4226Patch /L= 500 (建議改成500),重新啟動後生效.

Q: 使用BT會很傷硬碟嗎
A: 不會啦,如果沒長時間以1MB/s以上速度下載是沒關係的.
   只要使用"磁碟緩存" 和 "下載前先分配空間"(bitcomet的名詞),再定期重組硬碟
   就好了.

Q: 下載到99%就不能下載
A: 1.停止下載
   2.按右鍵/重新檢查完整性(每個BT軟體的方式不同)
   3.如果變成100%就ok,如果還是99%再繼續下載,這次應該能成功,否則就是seed有問題.
   4.如果是影片可用VLC media player(小紅帽)播放大部份格式的影片,rm/rmvb除外.
     或用影片修復軟體處理後再用一般的player觀賞.

Q: 為什麼開啟torrent會跑出一個黃色驚嘆號就無法下載
A: 你的下載存放路徑名稱或檔案名稱有  :"|<>/\*?  這些字元,改掉就可以下載了.

Q: 為什麼windows 98/me的用戶常會下載到??的檔案
A: 因為windows 98/me不支援unicode,試試安裝Unicode補完計畫,可解決大部份問題.
    http://search.cpatch.org/downloa ... unicodeaton_240.exe
   或改用bitspirit
   1. 先在[檔案總管]建立預備儲存的資料夾,例如:xyz
   2. 一開始開啟torrent檔案時的[檔案設定]內,選擇全部檔案,按[另存到]xyz就像改
      資料夾名稱.如果單獨選檔案,按[另存到]xyz,可更改檔名.

Q: 如何成為種子
A: 下載完成後不要關閉BT就會自動變成種子

Q: 加入tracker對BT下載有何幫助
A: 加入tracker的優點是會增加連接peer的機率(大部份的情形下都沒有用),缺點是浪
   費電腦資源和頻寬,tracker填入的越多,會增加連接peer的機率.
   加入一大堆tracker有時會收到反效果,建議只要加入不需要註冊的tracker就好.

Q: 為什麼我原來下載速度有100多KB/s,但現在變成0KB/s
A: 可能是剛發佈torrent檔,全世界只有一個種子,當你以某個速度下載到當時的最大
   完成度(例如20%,其他人也是20%),這時你的下載速度會急速下降到0.當別人的完成
   度比升高0.x%你就又開始下載.如此週而復始一直到100%為止.
   不過是否如此還得看其他人是否和你有一樣的完成度而定.

Q: 全局最大上傳速度要怎麼設定才能提高下載速度
A: 請參考 "二. BT基本觀念"

Q: 如何知道我的BT port有沒有打開
A: 最簡單的方法就是看有沒有"遠程"

BT觀念分享和常見問題彙整的更多相关文章

  1. [亂數] <細說> C/C++ 亂數基本使用與常見問題

    陸陸續續寫了 EA  一.二年,以前亂數引導文回頭看時才發現,怎麼有這麼多細節的錯誤.沒系統. 這篇文章主要引導初學者使用亂數,同時附上常被翻出來討論的議題,C/C++適用,唯以 C 語言撰之. 也由 ...

  2. 如何将ADT项目导入Android studio及常見問題

    ADT导出Android studio项目 右键-->ExportAndroid/Generate Gradle build files--> Android studio导入项目 Fil ...

  3. IIS配置發佈網站常見問題及設置

    解决方法: 修改.NET Framework 版本为相应版本即可,我以前用的是2.0换成4.0的时候出现这个错误. 我的win7系统, 1.打开IIs点击IIS根节点 2.看右边的“操作”->点 ...

  4. ROHS無鉛問題解答!ROHS IPC SGS

    無鉛smt(smd)問題1. 問Maxim關于無鉛的定義是什么?答無鉛表示在封裝或產品制造中不含鉛(化學符號為Pb).IC封裝中,Pb在外部引腳拋光或電鍍中很常見.對于晶片級封裝(UCSP和倒裝芯片) ...

  5. ASP.NET MVC 開發心得分享 (21):Routing 觀念與技巧

    ASP.NET MVC 預設在 Global.asax 所定義的 RegisterRoutes 方法中可以輕易的定義你希望擁有的網址格式,嚴格上來講這並非 ASP.NET MVC 的專利,而是從 AS ...

  6. 整理幾種常見PCB表面處理的優缺點

    這只是一篇整理文,而且我個人僅從事過後段的電路板組裝,而未從事過電路板製程,所以有些見解純粹只是個人看法,如果有些不一樣的聲音或錯誤也歡迎留言討論. 隨著時代的演進,科技的進步,環保的要求,電子業也隨 ...

  7. [心得] 如何利用liquibase進行資料庫版本控制 - 基礎觀念

    前言 - 會寫這篇除了是要記錄一下使用的過程之外,也是發現到網路上找來的教學幾乎都是跟其它環境做結合 比較沒有單純利用command進行的流程.也沒有整體觀念的介紹,所以將我所理解的整理分享給大家. ...

  8. (转)約瑟夫問題的兩個O(log n)解法

    約瑟夫問題的兩個O(log n)解法 這個是學習編程時的一個耳熟能詳的問題了: n個人(編號爲0,1,...,n-1)圍成一個圈子,從0號開始依次報數,每數到第m個人,這個人就得自殺, 之後從下個人開 ...

  9. 有關AWS EC2 (EBS 收費)的問題

    有關AWS EC2 (EBS 收費)的問題 之前一陣子的時候,公司在使用Amazone Web Service (AWS)的 EC2 (Amazon Elastic Compute Cloud).不過 ...

随机推荐

  1. AWS EC2 MySQL迁移到RDS案例

    Amazon Relational Database Service (Amazon RDS) 是一种Web 服务,可让用户更轻松地在云中设置.操作和扩展关系数据库.它可以为行业标准关系数据库提供经济 ...

  2. Golang 在 Mac、Linux、Windows 下如何交叉编译(转)

    原文地址:Golang 在 Mac.Linux.Windows 下如何交叉编译 Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下. Mac 下 ...

  3. python使用MySQLdb模块连接MySQL

    1.安装驱动 目前有两个MySQL的驱动,我们可以选择其中一个进行安装: MySQL-python:是封装了MySQL C驱动的Python驱动:mysql-connector-python:是MyS ...

  4. Maven依赖标红线,非jar包冲突问题

    Maven依赖标红线 在pom中引入依赖fastdfs-client时,该依赖可以正常引入,但是查看Maven Project时,该依赖下总是有几个依赖报红线,并不是依赖冲突,测试代码无法正常运行.想 ...

  5. Python装饰器--decorator

    装饰器 装饰器实质是一个函数,其作用就是在不改动其它函数代码的情况下,增加一些功能.如果我们需要打印函数调用前后日志,可以这么做 def log(func): print('%s is running ...

  6. git相关知识(github,idea等的配置)

    本地git提交文件到github上: 1.在github上创建项目 2.使用git clone https://github.com/xxxxxxx/xxxxx.git克隆到本地 3.编辑项目 4.g ...

  7. Node.js + Express中间件详解

    使用中间件 Express是一种路由和中间件Web框架,它具有自己的最小功能:Express应用程序本质上是一系列中间件函数调用. 中间件函数是可以访问请求对象 (req),响应对象(res)以及应用 ...

  8. 基于TcpListerer的web服务器 和 基于HttpListerer的web服务器

    摘自<Asp.Net 本质论>作者:郝冠军 /* 为了简化基于TCP协议的监听程序,.NET在System.Net.Sockets命名空间中提供了TcpListerer类,使用它,在构造函 ...

  9. Ubuntu中安装deb包程序

    deb是Debian Linux的安装格式,跟Red Hat Linux的rpm非常相似,最基本的安装命令是:dpkg -i file.deb dpkg 是Debian Package的简写,是为De ...

  10. ffmpeg录制流媒体,正常方式停止录制

    QProcess m_Process; m_Process.setProcessChannelMode(QProcess::MergedChannels); //拼接命令行字符串 QString cm ...