• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

    常見P2P協(xié)議之BitTorrent分析

    來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 07:31:10
    文檔

    常見P2P協(xié)議之BitTorrent分析

    常見P2P協(xié)議之BitTorrent分析:這段時(shí)間在研究BT數(shù)據(jù)流如何突破防火墻的,但是最后好像有點(diǎn)攔截的意思,反了:(,還是把它總結(jié)一下,歡迎討論,wengpingbo@gmail.com BitTorrent 協(xié)議介紹 BitTorrent 是一種 P2P 協(xié)議。用于在對(duì)等網(wǎng)絡(luò)中,用戶群和用戶群 (peer-to-peer) 之
    推薦度:
    導(dǎo)讀常見P2P協(xié)議之BitTorrent分析:這段時(shí)間在研究BT數(shù)據(jù)流如何突破防火墻的,但是最后好像有點(diǎn)攔截的意思,反了:(,還是把它總結(jié)一下,歡迎討論,wengpingbo@gmail.com BitTorrent 協(xié)議介紹 BitTorrent 是一種 P2P 協(xié)議。用于在對(duì)等網(wǎng)絡(luò)中,用戶群和用戶群 (peer-to-peer) 之

    這段時(shí)間在研究BT數(shù)據(jù)流如何突破防火墻的,但是最后好像有點(diǎn)攔截的意思,反了:(,還是把它總結(jié)一下,歡迎討論,wengpingbo@gmail.com BitTorrent 協(xié)議介紹 BitTorrent 是一種 P2P 協(xié)議。用于在對(duì)等網(wǎng)絡(luò)中,用戶群和用戶群 (peer-to-peer) 之間的文件分享。并

    這段時(shí)間在研究BT數(shù)據(jù)流如何突破防火墻的,但是最后好像有點(diǎn)攔截的意思,反了:(,還是把它總結(jié)一下,歡迎討論,wengpingbo@gmail.com

    BitTorrent協(xié)議介紹

    BitTorrent是一種P2P協(xié)議。用于在對(duì)等網(wǎng)絡(luò)中,用戶群和用戶群(peer-to-peer)之間的文件分享。并且,對(duì)于一個(gè)文件,用戶群越大,下載速度就越快。BitTorrent協(xié)議能夠減少服務(wù)端和網(wǎng)絡(luò)環(huán)境對(duì)分享大文件的影響,由于是分布式節(jié)點(diǎn)互傳數(shù)據(jù),某一部分的網(wǎng)絡(luò)擁堵或服務(wù)器宕機(jī)并不會(huì)對(duì)整個(gè)傳輸鏈路造成太大的影響。

    BitTorrent協(xié)議是由程序員Bram Cohen在2001年四月份設(shè)計(jì)的,最終版本在2008年確定。有很多客戶端實(shí)現(xiàn)了BitTorrent協(xié)議,最常見的有Vuze、μTorrent、BitTorrent、BitComet、Transmission和Xunlei。

    BitTorrent協(xié)議組成部分

    一個(gè)BitTorrent文件傳輸過程,通常需要由以下幾個(gè)部分組成:

  • WEB服務(wù)器
  • 文件元信息(metainfo,種子)
  • BitTorrent Tracker
  • 原始下載者(發(fā)布資源者)
  • 終端用戶瀏覽器(下載.torrent種子)
  • 終端用戶下載者
  • 種子文件結(jié)構(gòu)

    一個(gè)種子文件,通常是以.torrent后綴結(jié)尾。BitTorrent協(xié)議規(guī)定,torrent文件本身,內(nèi)容必須是utf8編碼格式,并且其中的字段結(jié)構(gòu)采用bencoding編碼格式。

    Torrent種子文件由兩部分組成:announce(tracker url)和文件信息。

    下面以一個(gè)正常的torrent文件來分析種子文件的結(jié)構(gòu)。

    該種子文件的一部分如下:

    d8:announce78:http://www.chinahdtv.org/announce.php?passkey=6e7a1c7ca4164d87e9b0e00ec63aa74910:created by13:uTorrent/204013:creation datei1369699038e8:encoding5:UTF-84:infod5:filesld6:lengthi158784e4:pathl53:Iron.Man.3.2013.HDSCR.ULTRA.EDiTiON.720p.x264.chn.srteed6:lengthi107117e4:pathl54:Iron.Man.3.2013.HDSCR.ULTRA.EDiTiON.720p.x264.chn1.srteed6:lengthi93644e4:pathl54:Iron.Man.3.2013.HDSCR.ULTRA.EDiTiON.720p.x264.chn2.srteed6:lengthi4272200020e4:pathl49:Iron.Man.3.2013.HDSCR.ULTRA.EDiTiON.720p.x264.mkveee4:name56:鋼鐵俠3.Iron.Man.3.2013.HDSCR.ULTRA.EDiTiON.720p.x26412:piece lengthi4194304e6:pieces20380:012ef......:privatei1e6:source23:[hd.gg] CNHD ChinaHDTVee

    根據(jù)bencoding編碼格式,把這段字符解碼還原后,就是如下內(nèi)容:

    announce:http://www.chinahdtv.org/announce.php?passkey=6e7a1c7ca4164d87e9b0e00ec63aa749

    created by:uTorrent/2040

    creation date:1369699038

    encoding:UTF-8

    info:

    {files:[

    {length:158784,path:[Iron.Man.3.2013.HDSCR.ULTRA.EDiTiON.720p.x264.chn.srt]}, {length:107117,path:[Iron.Man.3.2013.HDSCR.ULTRA.EDiTiON.720p.x264.chn1.srt]}, {length:93644,path:[Iron.Man.3.2013.HDSCR.ULTRA.EDiTiON.720p.x264.chn2.srt]},

    {length:4272200020,path:[Iron.Man.3.2013.HDSCR.ULTRA.EDiTiON.720p.x264.mkv]}],

    name:鋼鐵俠3.Iron.Man.3.2013.HDSCR.ULTRA.EDiTiON.720p.x264,

    piece length:4194304,

    pieces:P1,P2,P3...P1019

    private:1

    source:[hd.gg] CNHD ChinaHDTV

    }

    關(guān)于具體bencoding編碼,請(qǐng)參考引用中的鏈接。從上面的結(jié)果可以看出,一個(gè)torrent種子文件有點(diǎn)類似于XML格式的文件,包含如下組成部分:

  • tracker地址,這里就是announce后面的url
  • 種子創(chuàng)建軟件及其版本號(hào),這里是uTorrent軟件創(chuàng)建的,版本號(hào)為2040
  • 創(chuàng)建日期,這里是1369699038,這個(gè)數(shù)字顯示的是從UTC 1970-1-1 00:00:00到到現(xiàn)在所經(jīng)歷的秒數(shù),如果你用工具轉(zhuǎn)換一下,你會(huì)發(fā)現(xiàn)創(chuàng)建的時(shí)間是2013-5-28 7:57:18
  • 編碼格式,這里是UTF-8
  • info區(qū),這里指定的是該種子有幾個(gè)文件,文件有多長(zhǎng),目錄結(jié)構(gòu),以及目錄和文件的名字,從上面的結(jié)果,可以看出這個(gè)種子有4個(gè)文件,3個(gè)字幕,一個(gè)視頻文件
  • Name字段,指定頂層目錄名字
  • 每個(gè)段的大小,Bittorrent協(xié)議是把一個(gè)文件分成很多個(gè)小段,然后分段下載的,這個(gè)地方就是指定每個(gè)段的大小,單位是字節(jié),這里每個(gè)段的大小大約為4MB
  • 段哈希值,就是整個(gè)種子中,每個(gè)段的SHA1哈希值拼在一起,后面的那個(gè)省略號(hào)是全部段的SHA1哈希值,很長(zhǎng),這里用省略號(hào)代替。每個(gè)段的哈希長(zhǎng)度是固定的,20個(gè)字符,所以pieces后面跟的那個(gè)數(shù)字20380其實(shí)是段數(shù)量*20,如果你用20380除以20,就會(huì)發(fā)現(xiàn)這個(gè)種子段數(shù)量為1019,乘上前面的段大小,這個(gè)種子大概有4GB大小,也就是說你把這個(gè)種子下載完后,占硬盤4GB空間
  • private值,這個(gè)屬性主要顯示這個(gè)種子是私有的,還是公有的。一般那些各大PT站就是私有的。私有的種子會(huì)禁掉DHT(distributed hash table),因?yàn)槿绻愕腸lient開這個(gè)功能,那就會(huì)跳過tracker來和其他peer進(jìn)行數(shù)據(jù)交換,在很多PT內(nèi)站(CHDbits,CMCT,CNHD)把這種行為稱為作弊,會(huì)直接ban掉你在PT站上的帳號(hào)。關(guān)于DHT的具體信息,請(qǐng)參考引用中的鏈接。
  • 源,顯示該種子的來源,這里是CNHD
  • 注意,以上的每個(gè)屬性并不是必須的,有的屬性屬于BitTorrent Enhancement Proposals (BEPs),就是BitTorrent協(xié)議的擴(kuò)展,雖然不屬于正式標(biāo)準(zhǔn)的一部分,但是很多客戶端都支持這種格式

    BitTorrent通信流程與網(wǎng)絡(luò)包結(jié)構(gòu)

    BitTorrent協(xié)議支持基于TCP或UTP網(wǎng)絡(luò)協(xié)議進(jìn)行數(shù)據(jù)傳輸,但是由于TCP協(xié)議是有連接的,需要先進(jìn)行握手。在進(jìn)行數(shù)據(jù)傳輸?shù)倪^程中,每個(gè)種子會(huì)占有大量的TCP連接,從而占有大量的用戶帶寬。這給其他需要高實(shí)時(shí)性的應(yīng)用造成很大的網(wǎng)絡(luò)壓力。

    于是BitTorrent又支持UTP協(xié)議用來進(jìn)行數(shù)據(jù)傳輸,這也是當(dāng)前大部分BT下載客戶端所采用的實(shí)現(xiàn)方式。UTP(uTorrent Transport Protocol)是基于UDP網(wǎng)絡(luò)協(xié)議的,也就是無連接協(xié)議,采用這種協(xié)議進(jìn)行數(shù)據(jù)交換,可以很容易進(jìn)行帶寬控制,不會(huì)造成網(wǎng)絡(luò)擁堵。

    下面主要分析BitTorrent中的UTP協(xié)議,因?yàn)檫@個(gè)常用嘛!

    UTP協(xié)議的包結(jié)構(gòu)如下:(不包含UDP header)


    Fig. 1 UTP包結(jié)構(gòu)(來自bittorrent.org)

  • type:數(shù)據(jù)包類型,0--帶負(fù)載數(shù)據(jù)包,就是通常在連接建立后,上傳數(shù)據(jù)或下載數(shù)據(jù)的包;1--連接結(jié)束數(shù)據(jù)包,結(jié)束一個(gè)連接;2--數(shù)據(jù)回應(yīng)包,當(dāng)一個(gè)peer收到一個(gè)帶負(fù)載數(shù)據(jù)包后,會(huì)回一個(gè)ACK包,來表示這個(gè)包已正確接收,有點(diǎn)類似于TCP的SYN的感覺,但是這個(gè)是在UDP包的數(shù)據(jù)段做連接控制;3--重置連接;4--開始一個(gè)連接
  • ver:協(xié)議版本,通常為1
  • extension:擴(kuò)展段,用于支持BEPs
  • connection_id:連接id,同一個(gè)連接id的數(shù)據(jù)包屬于一個(gè)連接,一般每?jī)蓚€(gè)peer之間會(huì)開兩個(gè)連接,一個(gè)用于發(fā),一個(gè)用于收
  • timestamp_microseconds:包的發(fā)送時(shí)間
  • timestamp_difference_microseconds:對(duì)于當(dāng)前連接,最近收到的包時(shí)間和當(dāng)前要發(fā)送的包之間的時(shí)間間隔
  • wnd_size:發(fā)送方當(dāng)前剩余窗口大小,用于進(jìn)行速度和帶寬控制。BitTorrent協(xié)議中每一個(gè)發(fā)出去的數(shù)據(jù)包,都要求接收方回一個(gè)ACK包。而一個(gè)peer的窗口大小是指當(dāng)前發(fā)送出去,但還沒有收到回應(yīng)的包的總大小,單位為字節(jié)。每一個(gè)peer都一個(gè)最大窗口值和一個(gè)窗口大小上限值。當(dāng)wnd_size小于最小UTP包大小的時(shí)候,發(fā)送方會(huì)停止發(fā)送數(shù)據(jù)包,或調(diào)整每個(gè)數(shù)據(jù)包的數(shù)據(jù)負(fù)載大小
  • seq_nr:相對(duì)于一個(gè)連接,數(shù)據(jù)包的序列號(hào),以一個(gè)包為計(jì)數(shù)單位
  • ack_nr:發(fā)送方最近接收到的包的序列號(hào)
  • 可能說這么多,有點(diǎn)混亂了,下面以一個(gè)具體的UTP包做說明。

    數(shù)據(jù)包內(nèi)容如下:

    0000 78 ac c0 55 45 4a 00 0c 86 23 b8 00 08 00 45 00

    0010 00 30 2f e7 00 00 66 11 a4 23 01 a4 60 2e db f6

    0020 42 ea 8f b9 cf 46 00 1c 00 00 21 00 19 a2 ec 07

    0030 ea 27 c3 62 4a be 00 37 f5 10 11 89 32 d4

    其中0x00-0x29是UDP header,這里不再分析。咱來看一下它的數(shù)據(jù)部分:

    210019a2ec07ea27c3624abe0037f510118932d4

    可以看出來:

  • 0x2是type字段,代表這是一個(gè)數(shù)據(jù)回應(yīng)包
  • 0x1是它的協(xié)議版本號(hào)
  • 0x00是它的擴(kuò)展字段
  • 00代表該包沒有擴(kuò)展信息
  • 0x19a2是該包的連接id,這是一個(gè)隨機(jī)數(shù)
  • 0xec07ea27是該包的發(fā)送時(shí)間
  • 0xc3624abe是這個(gè)包的發(fā)送方最近一次接收包到這次發(fā)生包之間的間隔,間隔這么長(zhǎng),表示當(dāng)前網(wǎng)絡(luò)環(huán)境不行,數(shù)據(jù)傳輸速度不是很快
  • 0x0037f510是發(fā)送方的窗口大小,也就是說當(dāng)前發(fā)送方還可以接收3.5MB的數(shù)據(jù)
  • 0x1189是該數(shù)據(jù)包的序列包,也就意味著發(fā)送方在這個(gè)連接上已經(jīng)發(fā)送了4489個(gè)包
  • 0x32d4是該發(fā)送方最近接受到的包序列號(hào)
  • BitTorrent數(shù)據(jù)包的特征與識(shí)別

    由于BitTorrent數(shù)據(jù)包是應(yīng)用層協(xié)議,所以必須要通過DPI技術(shù),才能識(shí)別這種協(xié)議的流量。識(shí)別這種流量有兩種方法:

    一是檢測(cè)兩個(gè)peer之間的大流量連接。如果發(fā)現(xiàn)兩個(gè)ip之間出現(xiàn)大量異常udp數(shù)據(jù)包,可以采取丟包的方式,來限制傳輸速率。

    另外一種方法,就是運(yùn)用DPI技術(shù),讀取UDP數(shù)據(jù)部分,如果發(fā)現(xiàn)大量的UDP包的負(fù)載前幾個(gè)字節(jié)是0x0100,則判斷為BitTorrent流量,并采取相應(yīng)的措施。

    References

    1. http://en.wikipedia.org/wiki/BitTorrent_client

    2. http://en.wikipedia.org/wiki/BitTorrent

    3. http://www.bittorrent.org/beps/bep_0000.html

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    常見P2P協(xié)議之BitTorrent分析

    常見P2P協(xié)議之BitTorrent分析:這段時(shí)間在研究BT數(shù)據(jù)流如何突破防火墻的,但是最后好像有點(diǎn)攔截的意思,反了:(,還是把它總結(jié)一下,歡迎討論,wengpingbo@gmail.com BitTorrent 協(xié)議介紹 BitTorrent 是一種 P2P 協(xié)議。用于在對(duì)等網(wǎng)絡(luò)中,用戶群和用戶群 (peer-to-peer) 之
    推薦度:
    標(biāo)簽: 時(shí)間 協(xié)議 常見
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 亚洲精品乱码久久久久久| 精品一区二区三区自拍图片区| 亚洲一日韩欧美中文字幕欧美日韩在线精品一区二 | 凹凸国产熟女精品视频app| 国产精品久久久久乳精品爆| freesexvideos精品老师毛多| 亚洲国产精品一区二区久久hs| 国产综合色产在线精品| 精品国产亚洲一区二区三区| 久久精品亚洲日本波多野结衣| 亚洲国产成人精品91久久久| 精品国产呦系列在线观看免费| 亚洲国产精品国自产电影| 999久久久无码国产精品| 亚洲AV永久青草无码精品| 免费人妻精品一区二区三区| 国产乱人伦偷精品视频不卡| 99久久亚洲综合精品网站| 国内精品伊人久久久久| 99国产精品久久| 99久久免费国产精精品| 91精品国产高清久久久久久io| 国产精品亚韩精品无码a在线| 久久国产精品成人影院| 久久亚洲私人国产精品vA| 日本伊人精品一区二区三区| 中文字幕久久精品| 真实国产乱子伦精品视频| 中文字幕亚洲精品无码| 亚洲国产成人久久精品99 | 国产精品美女久久久| 国产福利视精品永久免费| 国产精品国产三级国产AV主播| 经典国产乱子伦精品视频| 国产亚洲精品a在线无码| 精品无码国产一区二区三区AV| 无码精品人妻一区二区三区人妻斩| 亚洲国产精品无码中文字| 青青青国产精品一区二区| 精品亚洲麻豆1区2区3区| 国产精品日本一区二区不卡视频|