对等线协议 - 长度为255且标识为255的消息

时间:2016-11-07 06:22:28

标签: sockets parsing protocols bittorrent peer-wire-protocol

我正在研究BitTorrent对等线协议的实现。我的实施问题阻止了我。它正确解析消息,直到被长度为255且id为255的消息停止。下面是从对等方接收的原始数据的转储。我相信错误的消息是偏移0x3ff,它首先解析len = 0x00FF和id = 0xFF。

0000000: 1342 6974 546f 7272 656e 7420 7072 6f74  .BitTorrent prot
0000010: 6f63 6f6c 0000 0000 0010 0000 3d76 88ff  ocol........=v..
0000020: 87d6 251a ad81 f5e4 fb90 468b a1a4 5ec0  ..%.......F...^.
0000030: 2d6c 7430 4436 302d 1361 5c7a b4cc 83e1  -lt0D60-.a\z....
0000040: 2d6a a503 0000 0011 0500 0000 0000 0000  -j..............
0000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000070: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000090: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000100: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000110: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000120: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000130: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000140: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000150: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000160: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000170: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000180: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000190: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000200: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000210: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000220: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000230: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000240: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000250: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000260: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000270: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000280: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000290: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00002a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00002b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00002c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00002d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00002e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00002f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000300: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000310: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000320: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000330: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000340: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000350: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000360: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000370: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000380: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000390: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00003a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00003b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00003c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00003d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00003e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00003f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000400: ffff ffff ffff ffff ffff ffff ffff fff0  ................
0000410: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000420: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000430: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000440: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000450: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000460: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000470: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000480: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000490: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00004a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00004b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00004c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00004d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00004e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00004f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000500: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000510: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000520: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000530: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000540: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000550: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000560: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000570: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000580: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000590: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00005a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00005b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00005c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00005d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00005e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00005f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000600: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000610: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000620: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000630: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000640: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000650: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000660: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000670: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000680: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000690: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00006a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00006b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00006c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00006d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00006e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00006f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000700: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000710: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000720: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000730: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000740: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000750: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000760: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000770: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000780: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000790: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00007a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00007b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00007c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00007d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00007e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00007f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000800: 0a

我的实现只处理具有长度前缀和id的消息,由BitTorrent协议指定,并相应地处理套接字数据。

我在BitTorrent规范中没有看到在从套接字解析数据时处理任何其他类型的消息或数据。但是我尝试使用我的客户端的每个对等端都收到了这种数据,即无法解析一个像0x00FF或0xFFFF这样的冗余长度的消息,比我预期的更多的保持活动,并且都以字节0x0a结束。我的对等线协议实现还需要什么呢?

1 个答案:

答案 0 :(得分:0)

  

0000 0011 0500

这表示一个17字节长的位域(减去消息类型)。如果这确实是真正的位域长度,那么之后的大块零和FFFF就没有意义。所以要么长度错了,要么之后就是垃圾。