2014-12-05 4 views
0

BitTorrent 클라이언트를 개발 중이고 조각 요청에 대한 응답을 얻는데 어려움이 있습니다.BitTorrent 프로토콜이 제 조각 요청에 대한 응답을 얻을 수 없습니다.

디버깅하려면 Wireshark를 사용하여 uTorrent와 전송 간의 대화를 추적하고 내 클라이언트에서 동일한 대화를 모방하려고했습니다. 하지만 여전히 작동하지 않습니다.

다음은 내 클라이언트와 전송간에 일어나는 대화의 예입니다. (내 클라이언트도 -TR--- 접두어 피어 id를 사용하여, 이것은 단지 테스트 목적을 위해 내가 이것을 바꿀 것입니다.)

들여 쓰기 메시지는 전송 중임, 다른 것은 내 클라이언트가 보내는 메시지입니다.

이 대화는 내 클라이언트가 빠른 확장을 아직 지원하지 않기 때문에 uTorrent 및 전송이 말하는 방법과 정확히 같지 않습니다.

(BEP 6) (출력은 와이어 샤크에서 가져옵니다, 라인 --로 시작되어 내 댓글)

00000000 13 42 69 74 54 6f 72 72 65 6e 74 20 70 72 6f 74 .BitTorr ent prot 

00000010 6f 63 6f 6c 00 00 00 00 00 10 00 00 f8 9e 0d fd ocol.... ........ 

00000020 9c fc a8 52 d9 7a d6 af a4 4d 8f 73 ce 70 b6 36 ...R.z.. .M.s.p.6 

00000030 2d 54 52 32 38 34 30 2d 36 68 61 67 76 30 73 70 -TR2840- 6hagv0sp 

00000040 34 67 37 6b          4g7k 
--^my handshake to transmission 

    00000000 13 42 69 74 54 6f 72 72 65 6e 74 20 70 72 6f 74 .BitTorr ent prot 

    00000010 6f 63 6f 6c 00 00 00 00 00 10 00 04 f8 9e 0d fd ocol.... ........ 

    00000020 9c fc a8 52 d9 7a d6 af a4 4d 8f 73 ce 70 b6 36 ...R.z.. .M.s.p.6 

    00000030 2d 54 52 32 38 34 30 2d 72 73 35 68 71 67 32 68 -TR2840- rs5hqg2h 

    00000040 6e 70 68 64          nphd 
    --^transmission answers to my handshake 

00000044 00 00 00 1a 14 00 64 31 3a 6d 64 31 31 3a 75 74 ......d1 :md11:ut 

00000054 5f 6d 65 74 61 64 61 74 61 69 33 65 65 65  _metadat ai3eee 
    --^my extended handshake to transmission 

    00000044 00 00 00 72 14 00 64 31 3a 65 69 31 65 31 3a 6d ...r..d1 :ei1e1:m 

    00000054 64 31 31 3a 75 74 5f 6d 65 74 61 64 61 74 61 69 d11:ut_m etadatai 

    00000064 33 65 65 31 33 3a 6d 65 74 61 64 61 74 61 5f 73 3ee13:me tadata_s 

    00000074 69 7a 65 69 31 34 37 65 31 3a 70 69 35 31 34 31 izei147e 1:pi5141 

    00000084 33 65 34 3a 72 65 71 71 69 35 31 32 65 31 31 3a 3e4:reqq i512e11: 

    00000094 75 70 6c 6f 61 64 5f 6f 6e 6c 79 69 31 65 31 3a upload_o nlyi1e1: 

    000000A4 76 31 37 3a 54 72 61 6e 73 6d 69 73 73 69 6f 6e v17:Tran smission 

    000000B4 20 32 2e 38 34 65 00 00 00 02 05 80    2.84e.. .... 
    --^transmission's extended handshake and bitfield 

    000000C0 00 00 00 01 01         ..... 
    --^transmission unchokes me 

00000062 00 00 00 01 02         ..... 
--^my interested message 

00000067 00 00 00 0d 06 00 00 00 00 00 00 00 00 00 00 40 ........ [email protected] 

00000077 00            . 
--^piece request 

-- no answers ... 

00000078 00 00 00 0d 06 00 00 00 00 00 00 00 00 00 00 40 ........ [email protected] 

00000088 00            . 
--^piece request again, with 10 seconds interval 

-- again no answers... 

00000089 00 00 00 0d 06 00 00 00 00 00 00 00 00 00 00 40 ........ [email protected] 

00000099 00            . 
--^piece request again, with 10 seconds interval 

-- no answers... 

내가 잘못 뭐하는 거지 어떤 아이디어?

감사합니다.

편집 : 난 그냥 interested을 보낸 후 unchoke를 보내 내 클라이언트를 업데이트,하지만, 난 여전히 같은 문제가 있어요 ...

답변

0

문제는 내가 토런트의 총 크기보다 더 큰 조각을 요청 하였다 있음 .

내가 사용하고 있던 급류에는 총 12KB의 파일이 2 개 있습니다. 그러나 토렌트 파일의 크기는 16KB이고 토런트 파일은 한 장만 있고 총 파일 크기는 12KB이지만 16KB 파일을 요청했습니다.

16KB 대신 12KB를 요청한 후에 문제가 해결되었습니다.

관련 문제