Bitcoin initial communication diagram

5

2

I'm trying to understand how exactly does the Bitcoin client communicate initially with another client, as I'm making my own client and learning new things about TCP protocol. As I understand, the Bitcoin client uses the standard port (8333) as a server port that is listening to other clients' communication, and the client opens up new ports as it is trying to communicate with other clients. As I'm not sure if I understand the communication correctly, I made this chart:

My question is: is this diagram and my assumptions correct, or did I make some mistake in understanding how the protocol works?

ThePiachu

Posted 2011-11-02T21:09:55.730

Reputation: 42 235

2Since this is TCP, it's probably clearer to simply state that A opens a TCP connection to B's port 8333 and that this connection is used for subsequent communication between them. – David Schwartz – 2011-11-02T22:57:45.203

Answers

2

You're pretty close, with the deviations being I think primarily in terminology.

Client A listens for connections on port 8333. Listening is a server activity.

Client A chooses an ephemeral port and opens a connection to the address of Client B on port 8333, on which Client B is listening. At the TCP level, there is a three-way handshake to establish the connection. Imagine this connection as a bi-directional pipe to and from which both clients can read and write.

Once established, Client A sends Version and Client B receives it. Client B sends Version and Client A receives it. Client A sends Verack and I think Client B also sends Verack, which is an acknowledgement of the version compatibility or receipt.

This is my understanding.

Colin Dean

Posted 2011-11-02T21:09:55.730

Reputation: 6 834