now, i have something puzzled about Gnutella 0.6 HandShakes.In version 0.6,the progress is described as:
1. C sends the string GNUTELLA CONNECT/0.6\r\n where 0.6 is the protocol version and \r denotes the carriage return character (ASCII character 13)
2. C sends capability headers (not including vendor specific headers), each terminated by \r\n, with an extra \r\n at the end
3. S responds with the string GNUTELLA/0.6 200 string\r\n. The string should be OK, but clients are advised to only check the 200 code
4. S sends all its headers in the same format as in step 2
5. C responds with the string GNUTELLA/0.6 200 OK\r\n, as in step 3 if the client, after parsing all headers sent by S, still wants to connect. Otherwise a reply containing an error code is sent and the connection is closed
6. C sends any vendor specific headers to S in the same format as in step 2
7. Connection is established and C and S can exchange messages
But i do not know what the headers in step2,4 and 6 are.Are these the ping and pong?If they are ,why they are some but not one?
I will be appreciateed to receive your answer.If you can,please describe them in details. Thanks a lot! |