我正在尝试使用 bit torrent 协议创建自己的 Torrent 客户端。我目前处于可以从跟踪器获取对等列表并获取对等的 IP 和端口的阶段。
问题在我向对等方发送握手消息后开始。我按照说明发送了一个 68 字节的握手消息,其中包含哈希、客户端 ID 等。
我从对等方收到 370 字节的响应,而不是预期的 68 字节握手。当我解析响应的前 68 个字节时,它类似于握手响应。它具有相同的哈希值、客户端 ID 等。但是我不知道剩余的 302 个字节是什么。这正常吗?
是否有任何文件可以清楚地解释这一点?我找不到任何信息来帮助解决这种情况。比特洪流协议规范至少可以说是模糊的。
这是我收到的转换为字符串的响应
\u0013BitTorrent protocol\0\0\0\0\0\u0010\0\u00051O???6H*\u00118$??U\r*?:?d-UT354S-X?\u001b\u0001???rwQ\t?\0\0\0R\u0005?????????????????????????????????????\u07ff??????????????????????????????????????????\0\0\0\u0005\u0004\0\0\u0002\"\0\0\0\u0005\u0004\0\0\0T\0\0\0\u0005\u0004\0\0\0?\0\0\0\u0005\u0004\0\0\0?\0\0\0\u0005\u0004\0\0\0?\0\0\0\u0005\u0004\0\0\05\0\0\0\u0005\u0004\0\0\0\t\0\0\0\u0005\u0004\0\0\u0001Z\0\0\0\u0005\u0004\0\0\u00025\0\0\0\u0005\u0004\0\0\u0001*\0\0\0\u0005\u0004\0\0\0y\0\0\0\u0005\u0004\0\0\u0001I\0\0\0\u0005\u0004\0\0\u0002G\0\0\0\u0005\u0004\0\0\u0001?\0\0\0\u0005\u0004\0\0\0\u0001\0\0\0\u0005\u0004\0\0\u0002\f\0\0\0\u0005\u0004\0\0\u0001?\0\0\0\u0005\u0004\0\0\0?\0\0\0\u0005\u0004\0\0\0?\0\0\0\u0005\u0004\0\0\u00011\0\0\0\u0005\u0004\0\0\u0001W\0\0\0\u0005\u0004\0\0\0\u0016\0\0\0\u0005\u0004\0\0\0?\0\0\0\u0005\u0004\0\0\u0001?
前 68 个字节是我所期望的,其余 302 个字节我不知道
【问题讨论】:
【参考方案1】:我现在已经意识到这些额外的字节是什么。
它们是一个位域,并且有多个消息!我的问题是没有意识到握手后可以立即发送此信息
【讨论】: