五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

節(jié)點發(fā)送元數(shù)據(jù)文件的擴展給 Bittorrent 帶來什么

2023-06-25 10:48 作者:IMFile  | 我要投稿

這個擴展(Extension for Peers to Send Metadata Files)的目的是允許客戶端加入一個 swarm ,而無需先下載一個種子(.torrent)文件。相反,該擴展允許客戶端從同類節(jié)點那里下載元數(shù)據(jù)。它使得支持磁力鏈接成為可能,在網(wǎng)頁上僅含有足夠的信息以加入該 swarm(即 info hash)。簡單來說,這個擴展可以讓用戶不用下載種子(.torrent)文件就能下載所需文件。

元數(shù)據(jù)

在這個擴展中,只傳輸 metadata 部分,稱為 “info-dictionary” 。因為這部分數(shù)據(jù)足以讓其他客戶端知道如何加入到特定的 “swarm” 中,并開始下載文件數(shù)據(jù)。而通過使用 info-hash 來驗證 metadata 的完整性,可以確保客戶端從可靠的來源下載 metadata,而不會受到惡意修改的影響。

元數(shù)據(jù)被分成大小為 16KiB(16384 字節(jié))的塊進行處理。這些元數(shù)據(jù)塊從 0 開始索引。每個塊的大小都是 16KiB,除了最后一個塊可能會比 16KiB 小。

擴展頭部

當客戶端與其他節(jié)點建立連接時,它們會通過握手消息進行通信。元數(shù)據(jù)擴展使 Extension Protocol 規(guī)定的擴展協(xié)議來向其他節(jié)點宣布自己的存在。具體而言,它將”ut_metadata” 條目添加到擴展握手消息的”m” 字典中,用于標識此消息所使用的消息碼。此外,它還在握手消息中添加了”metadata_size” 字段(不在”m” 字典中),用于指定元數(shù)據(jù)的字節(jié)數(shù)。換句話說,當客戶端和其他節(jié)點建立連接并進行擴展握手時,如果元數(shù)據(jù)擴展可用,則客戶端將發(fā)送一個包含”ut_metadata” 和”metadata_size” 字段的擴展握手消息,以告知其他節(jié)點它支持獲取元數(shù)據(jù)。

分機握手消息示例:

{'m': {'ut_metadata', 3}, 'metadata_size': 31235}

擴展信息

擴展消息已編碼。有 3 種不同類型的消息:

  1. request

  2. data

  3. reject

請求消息

請求消息是一個字典,沒有額外的鍵(即附加信息)。如果節(jié)點支持該擴展,它會響應一個 reject 或者 data 消息,響應的 piece 必須與請求時相同。具體而言,請求和響應都涉及到相同的數(shù)據(jù)塊(piece)。

在該網(wǎng)絡中,一個節(jié)點必須驗證它發(fā)送的任何數(shù)據(jù)塊(piece)都通過了 info-hash 的校驗。也就是說,在該節(jié)點獲得完整的元數(shù)據(jù)之前,它不能運行 SHA-1 算法來驗證所生成的哈希值與 info-hash 相同。如果一個節(jié)點沒有完整的元數(shù)據(jù),那么當它收到其他節(jié)點的元數(shù)據(jù)請求時,它必須向請求方發(fā)送一個”reject” 消息來拒絕請求。這是因為只有具有完整元數(shù)據(jù)的節(jié)點才能夠正確地進行 info-hash 校驗。因此,該網(wǎng)絡確保了文件傳輸?shù)耐暾院蜏蚀_性,從而防止了潛在的惡意操作或數(shù)據(jù)損壞。

例:

{'msg_type': 0, 'piece': 0}
? ? ?d8:msg_typei0e5:piecei0ee

請求消息正在請求第一個 metadata piece 。

數(shù)據(jù)消息

數(shù)據(jù)消息在字典中增加了一個新的條目,即 “total_size” 。該鍵具有與擴展標頭中的 “metadata_size” 相同的語義,并且它的值為整數(shù)。這個鍵表示整個數(shù)據(jù)塊的總大小或長度,用于指示接收方需要接收多少數(shù)據(jù)才能完全重建原始數(shù)據(jù)。

在傳輸元數(shù)據(jù)時,需要先將字典序列化為二進制數(shù)據(jù),并根據(jù)協(xié)議要求加上長度前綴。這個長度前綴不僅要包括字典本身的長度,還要包括元數(shù)據(jù)的一些附加信息,這些附加信息被稱為 metadata piece 。 metadata piece 不是字典的一部分,而是消息的一部分。如果 metadata piece 是元數(shù)據(jù)的最后一部分,則其大小可以小于 16KB;但如果不是最后一部分,則其大小必須是 16KB 。

例:

{'msg_type': 1, 'piece': 0, 'total_size': 3425}
? ? ?d8:msg_typei1e5:piecei0e10:total_sizei34256eexxxxxxxx...

x 表示二進制數(shù)據(jù)(元數(shù)據(jù))。

駁回消息

拒絕消息不包含任何附加鍵或值,如果收到該消息,則應理解為對應的對等方?jīng)]有被請求的元數(shù)據(jù)。這意味著該對等方無法提供所需的數(shù)據(jù)片段。客戶端可以通過在服務一定數(shù)量的請求消息后開始拒絕它們來實現(xiàn)洪泛攻擊的保護。這個數(shù)量通常是所請求的元數(shù)據(jù)塊數(shù)乘以一個因子。

例:

{'msg_type': 2, 'piece': 0}
? ? ?d8:msg_typei1e5:piecei0ee

Magnet URI?格式

magnet URI 格式為:

v1: magnet:?xt=urn:btih:<info-hash>&dn=<name>&tr=<tracker-url>&x.pe=<peer-address>
v2: magnet:?xt=urn:btmh:<tagged-info-hash>&dn=<name>&tr=<tracker-url>&x.pe=<peer-address>

<info-hash>

<tagged-info-hash>

<peer-address>

xt dn tr x.pe

詳情見此篇

參考鏈接

  • http://bittorrent.org/beps/bep_0009.html


節(jié)點發(fā)送元數(shù)據(jù)文件的擴展給 Bittorrent 帶來什么的評論 (共 條)

分享到微博請遵守國家法律
师宗县| 朝阳区| 清涧县| 库尔勒市| 三河市| 武安市| 郸城县| 大英县| 乌拉特后旗| 土默特左旗| 恩施市| 苍梧县| 社旗县| 龙胜| 彭泽县| 泸水县| 临城县| 本溪| 宣汉县| 方正县| 黄浦区| 华蓥市| 五台县| 高清| 鞍山市| 会泽县| 湘乡市| 汉沽区| 康保县| 行唐县| 吐鲁番市| 松原市| 肥城市| 怀化市| 镇坪县| 克什克腾旗| 都昌县| 云安县| 孝感市| 红安县| 准格尔旗|