2014-11-25 89 views
0

BEP9(ut_metadata)数据消息有一个total_size字段,我很难察看它的含义。解析BEP9(ut_metadata)数据消息

消息的格式如下:

<4-byte length prefix><20><1-byte extended msg id><bencode part><piece data> 

我感到困惑的两件事情:

  1. 是否长度前缀包括<piece data>一部分?
  2. total_size字段在bencode_part中指定?

在我看来,我们并不需要total_size,除非我误解了某些东西。

这是目前我如何对它进行分析:

  • 长度前缀包括<piece data>,所以我知道这个消息是完全有多大。我正在阅读那么多字节。
  • 解析<bencode_part>后,我只是消耗其余的字节,并考虑这个数据。

任何人都可以帮助我理解这种格式吗?

谢谢。

+1

我认为你所描述的消息格式缺少嵌套在标准bittorrent头中的扩展头。 – the8472 2014-11-25 10:34:47

+0

你是对的,刚刚编辑帖子。 – sinan 2014-11-25 12:24:11

回答

1
  1. 该文件的.torrent的信息部分的总长度。如果元数据对于单个消息而言太大,则元数据可能会以多个块传输。
+0

但是,握手过程中发送的信息部分的长度不是?为什么在每条数据信息中一次又一次发送? – sinan 2014-11-25 12:25:06

+1

因为规格说明如此。 “该密钥与扩展头”“中的”metadata_size“具有相同的语义 – the8472 2014-11-25 12:42:40