国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關(guān)注微信公眾號

對BitTorrent通信協(xié)議的分析與檢測
2007-05-28   綜合布線網(wǎng)

風靡一時的應用程序BitTorrent(BT)曾在短期內(nèi)改變了因特網(wǎng)的流量構(gòu)成,對IP網(wǎng)絡的運營、維護和管理產(chǎn)生了巨大影響。
本文建立了分析BT協(xié)議的環(huán)境,通過俘獲BT分組并對照BT協(xié)議規(guī)范,分析了BT通信協(xié)議的交互過程,并據(jù)此配合BT的特征字符串、特征端口及行為特征,提出了一種檢測通信流中存在BT通信的方法。

1、概述

  傳統(tǒng)的因特網(wǎng)服務如Web、FTP、DNS等均使用客戶機/服務器(C/S)模式進行通信。在通信過程中,提供服務的程序稱為服務器,請求服務的程序稱為客戶機。因此,在復雜通信的過程中,一個服務器很可能在另一次通信中變?yōu)榭蛻魴C,反之亦然。C/S模式的特征是:服務器是總是打開的主機,具有永久的IP地址,并可擴展為服務器池;客戶機與服務器直接通信,可以間歇地與服務器連接,可以具有動態(tài)的IP地址,并且客戶機彼此之間不直接通信。C/S模式的最大特點是服務和資源集中,所有對服務請求的處理通常是由服務器完成的。

  對等方到對等方(peer-to-peer,P2P)是近年來流行起來的通信模式,但實際上因特網(wǎng)正是基于這種理念建立起來的。隨著因特網(wǎng)用戶和服務的增多,服務器面臨的壓力越來越大,P2P又重新回到了人們的視線中。在P2P模式中,無總是打開的應用服務器,任意的端系統(tǒng)之間可直接通信,對等方間歇地連接,并可改變IP地址。P2P模式的特征是:服務和資源分布化,資源不集中存儲在某些設備上,而是分散存儲在運行P2P程序的設備上,每一個對等方都可以為其他對等方提供服務。例如,主機A要從網(wǎng)上下載一個文件a,如果以P2P模式工作,那么它工作的基本過程是:定位具有文件a的對等方,向?qū)Φ确教岢鱿螺d請求,并獲得該文件。值得注意的是,主機A在下載文件a的同時,可能也在為其他用戶提供文件(包括文件a)下載。根據(jù)定位文件a的方式不同,可將P2P應用方式分為3類:集中式目錄、分布式查詢和結(jié)合這兩者的混合方式[1]。集中式目錄模式屬于第一代P2P應用,使用一臺大型服務器(或服務器場)來提供目錄服務,其代表是Napster[2],缺點是存在單點故障、性能瓶頸和侵犯版權(quán)等問題。分布式查詢將目錄服務完全分布在覆蓋網(wǎng)絡的所有對等方中,每一個對等方負責維護一部分目錄內(nèi)容。系統(tǒng)采用洪泛查詢(query flooding)算法使用戶獲得文件信息,收到該報文的主機向它們的所有鄰居轉(zhuǎn)發(fā)該報文,這些鄰居又依次向它們的所有鄰居轉(zhuǎn)發(fā)該報文等,其代表是Gnutella[3]。第3種方式是前兩種方式的結(jié)合,其中一種實現(xiàn)方法是將覆蓋網(wǎng)絡中的對等方劃分為若干小組,每個小組選取一個具有高帶寬連接和高因特網(wǎng)連接性的成員作為組長,組長負責管理組內(nèi)成員及與其他組長通信。在小組內(nèi)使用集中式目錄服務,服務器就是該組的組長。各組長之間使用分布式的目錄服務。混合方式目前在P2P應用中使用最為廣泛,其代表是KaZaA、BitTorrent(BT)[4]。

  由于BT使用廣泛,其通信協(xié)議引起的流量巨大,BT對因特網(wǎng)的運營、維護和管理具有重要影響。為此,參考文獻[5]對BT的一般工作原理進行了介紹,參考文獻[6]在分析BT工作原理的基礎(chǔ)上,比較了BT與C/S模式應用程序的特點,提出了一種BT改進建議,但這些文獻都沒有詳細地分析BT通信協(xié)議(簡稱BT協(xié)議)原理和交互過程。為此本文深入分析了BT通信協(xié)議和其交互過程,研究了BT通信的特點,并由此提出了一種檢測通信流中存在BT通信的方法。

2、建立BT的分析環(huán)境

  支持BT協(xié)議的P2P應用程序很多,如BitBuddy、FlashBT、BitComet和BitSpirit等,這里以應用程序BT為例來分析BT協(xié)議。本文中的BT,如其后沒有“協(xié)議”兩字,表示的是BT應用程序。

  BT由如下幾部分組成:.torrent文件、種子提供站點、目錄服務器和內(nèi)容發(fā)布者/下載者。.torrent文件是一個文本文件,包含了tracker信息和文件信息兩部分。tracker信息主要是BT下載中需要用到的tracker服務器的地址和針對tracker服務器的設置;文件信息是指將目標文件計算處理后再根據(jù)BT協(xié)議的B編碼規(guī)則網(wǎng)編碼后得到的信息。BT的主要原理是把提供下載的文件虛擬分成大小相等的塊,塊大小必須為2 Kbyte的整數(shù)次方(由于是虛擬分塊,硬盤上并不產(chǎn)生各個塊文件),并把每個塊的索引信息和Hash驗證碼寫入.torrent文件中,所以.torrent文件就是被下載文件的“索引”。種子提供站點也就是.torrent文件的提供站點,為下載者提供.torrent文件下載服務。目錄服務器記錄被下載的文件的索引信息及下載該文件的用戶的信息(主要是IP地址及端口號)。早期的BT協(xié)議只支持tracker服務器,這種目錄服務器是集中式目錄與分布式查詢的混合型;在BT協(xié)議的升級版本中,增加了對DHT(分布式Hash表)網(wǎng)絡的支持,該網(wǎng)絡中目錄服務器是分布式的。本文的討論只涉及tracker服務器。內(nèi)容發(fā)布者/下載者是BT網(wǎng)絡的主體,最終的下載由它們完成。構(gòu)成BT網(wǎng)絡的這幾部分的相互關(guān)系如圖1所示。

""

圖1 BT覆蓋網(wǎng)絡的結(jié)構(gòu)


  根據(jù)BT的工作原理,為了分析BT協(xié)議的交互過程,本文重點關(guān)注本地BT客戶機的運行過程。圖2顯示了BT協(xié)議的測試環(huán)境,其中BT客戶機的IP地址是192.168.0.179,使用Active Ports工具獲取BT使用的端口號,Active Ports的版本號為1.4。使用協(xié)議分析儀Ethereal俘獲BT協(xié)議分組的交互過程,運行Ethereal協(xié)議分析儀的IP地址是192.168.0.179,Ethereal版本號為0.10.14。它們通過路由器與因特網(wǎng)相連,BT服務器位于因特網(wǎng),BT版本號為4.20.2。

""

圖2 BT協(xié)議的測試環(huán)境


3、BT協(xié)議的工作過程

  BT協(xié)議主要包括3個部分:.torrent文件的格式、tracker HTTP/HTTPS協(xié)議和Peer wire協(xié)議(使用TCP)。其中tracker HTTP/HTTPS協(xié)議是BT客戶機與tracker服務器之間的通信協(xié)議,Peer wire協(xié)議是BT客戶機之間的通信協(xié)議。

  使用Ethereal跟蹤分析下載一個文件的過程中BT協(xié)議的具體交互過程,結(jié)合BT協(xié)議規(guī)范,繪制了BT協(xié)議各組件的工作時序圖(參見圖3)。

http://anheng.com.cn/news/html/network_troubleshooting/951.html

圖3 BT協(xié)議各組件的工作時序


  3.1 .torrent文件的結(jié)構(gòu)

  圖4是下載中使用的.torrent文件的一段主要內(nèi)容,采用了B編碼。B編碼是一種簡潔的數(shù)據(jù)組織方式,支持4種數(shù)據(jù)類型:byte strings、integers、lists和dictionaries。integers、lists和dictionaries類型分別以字母i、l、d作為首定界符,以字母e作為尾定界符。byte strings類型不使用首/尾定界符,其格式為<十進制表示的字符串長度>:<字符串>,如4:spam表示字符串“spam”。這4種數(shù)據(jù)類型嵌套使用構(gòu)成了.torrent文件的內(nèi)容。其中,用*號代替空格以便于分析。

http://anheng.com.cn/news/html/network_troubleshooting/951.html

""

圖4 .torrent文件的內(nèi)容


  其中的一些主要成份如下:

  • announce:tracker服務器的URL,本例中為http://tracker.cnxp.com:8080/announce。
  • announce-list:可選。備用tracker服務器的URL列表,本例中為http://tracker.cnxp.com:8080/announce,http://btfans.3322.org:6969/announce等。
  • creation date:可選。.torrent文件的創(chuàng)建日期,使用標準的UNIX時間,本例中為1152105243。
  • comment:可選。.torrent文件制作者添加的任意格式的說明。
  • created by:可選。制作.torrent文件的工具,本例中使用的制作工具是BitComet/0.67。
  • encoding:可選。發(fā)布的資源使用的編碼方式,在本例中使用的是GBK。
  • info:發(fā)布的文件的信息。有兩種格式,單文件格式和多文件格式。單文件格式包括length、md5sum(可選)、name、piece length、pieces;多文件格式包括files、name、piece length、pieces,其中files包括length、path、md5sum(可選),每一個文件都有單獨的length、path、md5sum(可選)。本例使用多文件格式,共有兩個文件,分別是“Love Undercover Ⅲ.txt”和“影視帝國(bbs.cnxp.com).新扎師妹

  3.國語DVDSCR中字.rmvhe”,piece長度為262 144 byte.piece個數(shù)為34 780。

  .torrent文件中還包括其他一些可選項,只要它們遵循B編碼方式就能夠被客戶機識別,這里不再累述。

  3.2 tracker HTTP/HTTPS協(xié)議

  BT客戶機依次向.torrent中的tracker服務器發(fā)送連接請求,以獲得正在下載該文件的對等方列表(主要是IP地址和監(jiān)聽端口)。如果連接成功獲得列表,就關(guān)閉連接,嘗試與列表中的對等方建立連接;如果不成功,嘗試下一個tracker服務器。

  服務器tracker.cnxp.com的IP地址為61.129.77.239,btfans.3322.org的IP地址為61.129.78.114,BT客戶機與BT服務器的交互過程如圖5所示。

圖5 BT客戶機與BT服務器的交互過程


  分析這些分組,易知分組702、748(分組702的重傳)、750、752是建立TCP連接的三次握手。BT客戶機通過753號分組向tracker服務器發(fā)出獲取對等方列表的請求,754號、755號分組為應答。757-760號分組為關(guān)閉連接的交互過程。下面重點分析753號、754號和755號分組。

  753號分組中的HTTP部分內(nèi)容如圖6所示,使用*號代替空格以便于分析。

""

圖6 753號分組中的HTTP部分內(nèi)容


  其中一些成分的含義如下:

  • info_hash:.torrent文件中的info部分的Shal校驗碼,共20 byte。tracker服務器通過它在發(fā)布列表中找到對應的記錄。
  • peer_id:BT客戶機的惟一性標志,在客戶機啟動時產(chǎn)生,共20 bit。在BT V1.0中沒有規(guī)定產(chǎn)生peer_id的算法,只要求能夠保證惟一性即可。
  • port:提供上傳的端口號,亦即常說的監(jiān)控端口,這里是6641(可自行設定)。
  • key:可選。一個擴展的惟一性標志,即使改變了IP地址,也可以使用該字段標志該BT客戶機。
  • uploaded/downloaded:上傳/下載的字節(jié)數(shù)(從客戶機向tracker服務器發(fā)送“started”開始計算),服務器可以用它來做流量分析。
  • left:還需要下載的字節(jié)數(shù)。
  • compact:壓縮標志。如果值為1表示接受壓縮格式的對等方列表,即用6 byte表示一個對等方(前4 byte表示IP地址,后2 byte表示端口號);值為0表示不接受。
  • event:表明客戶機的狀態(tài),只能是started、completed、stopped等3種中的一種。
  • 除了上面這些例子中包含的參數(shù)外,可選的參數(shù)還有:
  • ip:可選。IP地址,沒有的話服務器會自己找到。
  • numwant:可選。客戶機希望從tracker服務器得到的對等方的數(shù)目。
  • trackerid:可選。如果在之前的announce中包含了trackerid,將其值設置在該處。

  服務器中有個track程序來管理這些請求,得到這一串代碼后就會用info_hash來查找列表,若找到就可以下載。接著它會反連(NatCheck)客戶機的IP地址和端口來判斷它是內(nèi)網(wǎng)用戶還是公網(wǎng)用戶(像10.10.10.x這樣的地址。是無法連通的)。接下來服務器返回現(xiàn)在正在下載這個文件的所有公網(wǎng)用戶的IP地址和端口(包含在分組754、755中,因為返回的數(shù)據(jù)比較多,所以被分片返回)。HTTP之上的部分數(shù)據(jù)如圖7所示。

圖7 HTTP之上的部分數(shù)據(jù)


  其中“1998:”及其之前的部分使用的是ASCII字符集,“1998:”之后的部分是用16進制表示的二進制數(shù)。從分組內(nèi)容可以看出interval的值為1 800。也就是BT客戶機最多每隔1 800個時間單位就與tracker服務器重新聯(lián)系一次:peers部分共有1 998 byte。對753號分組的分析可知,BT客戶機支持對對等方列表的壓縮,因此在754、755號分組返回的對等方列表是用壓縮方式存儲的,即6 byte表示一個對等方,例如da40 91 e8 41 af表示的對等方是218.64.145.232:16815,dd ea 3b 9f 7a 2f表示的對等方是221.234.59.149:31279。對等方列表的長度為1 998 byte,也就是說返回的對等方個數(shù)為333個。

  3.3 Peer wire協(xié)議

  BT客戶機會嘗試與返回的對等方列表中的部分對等方建立連接,下面以對等方列表中的221.234.59.149:31279為例,分析一下對等方之間的交互過程。如圖8所示,只分析TCP之上的部分。約定對等方A指的是221.234.59.149:31279,對等方B指的是192.168.0.179:1504。

圖8 對等方間通信過程


  建立TCP連接之后,對等方之間的交互過程包括以下幾步:

  (1)握手,通過Handshake分組實現(xiàn)。在本例中通過分組2480和2481實現(xiàn)。

  (2)互換所擁有的資源的情況。通過Bitfield分組實現(xiàn)。該例中,對等方B尚未下載任何資源,故公布資源擁有情況的只有對等方A。對等方A通過分組2487公布了自己的資源擁有情況。

  (3)互通對資源的意愿情況,包括interested、not interested、choke、unchoke等4種。本例中通過分組2490、2493實現(xiàn)。

  (4)互相請求資源,通過request piece、piece分組實現(xiàn),例如本例中的分組2495、2503、2696。

  (5)斷開連接。因Peer wire協(xié)議使用了TCP方式,對等方A與對等方B斷開連接時,只需要斷開它們之間的TCP連接即可。

  分組2495是一個request piece分組,其結(jié)構(gòu)如圖9所示,其中需要的參數(shù)有piece index(片標志)、begin offset of piece(片起始偏移地址)、piece length(片長度)。分組2696是一個answer piece分組(也稱為piece分組),其結(jié)構(gòu)如圖10所示,其中包括piece index(片標志)、begin offset of piece(片起始偏移地址)、date(數(shù)據(jù))。

圖9 request piece分組的結(jié)構(gòu)

http://anheng.com.cn/news/html/network_troubleshooting/951.html

http://anheng.com.cn/news/html/network_troubleshooting/951.html

""
圖10 piece分組的結(jié)構(gòu)


4、一種檢測BT流量的方法

  經(jīng)分析,BT應用程序的工作過程歸納如下:

  • 資源發(fā)布者制作.torrent文件并上載到種子發(fā)布站點,將客戶機連入BT網(wǎng)絡并在tracker服務器上發(fā)布信息。默認情況下,BT的監(jiān)聽端口為6881-6889,也可由使用者指定;tracker服務器的監(jiān)聽端口主要有8080、8000、6969和2710,它們采取的連接方式都是TCP。
  • BT客戶機(下載者)獲取.torrent文件,并向.torrent文件中提供的tracker服務器依次發(fā)起連接請求,直至與其中之一建立TCP連接并獲取對等方列表。使用Ethereal抓包分析,發(fā)現(xiàn)這些連接請求被接受的可能性比較小,一般不到10%。
  • BT客戶機(下載者)獲取.torrent文件,并向.torrent文件中提供的tracker服務器依次發(fā)起連接請求,直至與其中之一建立TCP連接并獲取對等方列表。使用Ethereal抓包分析,發(fā)現(xiàn)這些連接請求被接受的可能性比較小,一般不到10%。
  • BT客戶機隨機地向列表中的對等方發(fā)起連接請求,因為對等方列表中對等方個數(shù)比較多,所以在短時間內(nèi)發(fā)出大量TCP連接請求分組。這些分組的源地址相同,源端口號相鄰,目的地址/端口號不同,并且有相當一部分的目的端口號為6881-6889。
  • 如果連接建立成功,BT對等方之間進行握手,握手過程中使用特征字符串“BitTorrent protocol”。然后使用interested、not interested、choke和unchoke等4種分組互通對資源的意愿情況,之后通過Request Piece和Piece分組傳輸資源。
  • 資源傳輸完畢,關(guān)閉TCP連接。
  • 依據(jù)BT應用程序的這些特點,本文提出了檢測BT流量存在的一種方法。該檢測方法主要分4個步驟:
  • 特征字符串匹配。如果分組的負載中出現(xiàn)了字符串“BitTorrent protocol”,表明有BT客戶機運行,將該分組中的源IP地址和源端口號記為{IP.port}對,凡與此{IP,port}對相關(guān)的分組均判定為BT流量。
  • 特征端口匹配。所有使用6881-6889作為端口號的分組均被判定為BT流量。
  • tracker服務器規(guī)則。將目的端口號為8000、8080、6969和2710的TCP分組的目的IP地址標記為tracker服務器,將源端口號為8000、8080、6969和2710的TCP分組的源IP地址標記為tracker服務器,所有與tracker服務器相關(guān)的分組均被判定為BT流量。
  • 通過以上3步可以較準確地判斷流中是否存在BT業(yè)務,但并不能保證找出所有的BT分組。為了進一步增加判斷的準確性。可使用流之間關(guān)系信息。例如某一時間段內(nèi),相同兩臺主機之間的流被關(guān)聯(lián)在一起;來自不同主機的有著相同目的地址和目的端口號的流被關(guān)聯(lián)起來;在某一時間段內(nèi)來自同一主機的流被關(guān)聯(lián)起來等。

  筆者根據(jù)這種檢測BT流量的方法實現(xiàn)了相關(guān)檢測程序。由于該方法使用了特征字符串和特征端口來判斷BT流量并使用流關(guān)系,在一定程度上解決了因程序使用隨機端口帶來的檢測困難,提高了檢測的準確性。程序?qū)嶒灲Y(jié)果也表明了上述算法的有效性。限于篇幅,將另文報告。

熱詞搜索:

上一篇:交換機在網(wǎng)絡中的故障診斷技巧
下一篇:康普委托調(diào)查:亞太地區(qū)綜合布線市場增長機遇喜人(1)

分享到: 收藏
主站蜘蛛池模板: 花莲县| 济源市| 宁陕县| 津市市| 东城区| 江安县| 四川省| 奉贤区| 新建县| 德阳市| 伊宁县| 正宁县| 五指山市| 龙门县| 隆回县| 弋阳县| 蒲江县| 巴彦淖尔市| 扎囊县| 五莲县| 广南县| 渝中区| 阳朔县| 湄潭县| 德阳市| 象山县| 平和县| 云林县| 汨罗市| 弥渡县| 高台县| 钦州市| 卓尼县| 团风县| 县级市| 东至县| 前郭尔| 布尔津县| 邯郸市| 凤阳县| 乳源|