Bitcoin anfängliches Kommunikationsdiagramm

Ich versuche zu verstehen, wie genau der Bitcoin-Client anfangs mit einem anderen Client kommuniziert, während ich meinen eigenen Client erstelle und neue Dinge über das TCP-Protokoll lerne. Soweit ich weiß, verwendet der Bitcoin-Client den Standardport (8333) als Serverport, der die Kommunikation anderer Clients überwacht, und der Client öffnet neue Ports, wenn er versucht, mit anderen Clients zu kommunizieren. Da ich nicht sicher bin, ob ich die Kommunikation richtig verstehe, habe ich diese Tabelle erstellt:

Meine Frage ist: Sind dieses Diagramm und meine Annahmen korrekt, oder habe ich einen Fehler gemacht, als ich verstanden habe, wie das Protokoll funktioniert?

Da es sich um TCP handelt, ist es wahrscheinlich klarer, einfach anzugeben, dass A eine TCP-Verbindung zum Port 8333 von B öffnet und dass diese Verbindung für die nachfolgende Kommunikation zwischen ihnen verwendet wird.

Antworten (1)

Sie sind ziemlich nah dran, wobei die Abweichungen meiner Meinung nach hauptsächlich in der Terminologie liegen.

Client A wartet auf Verbindungen an Port 8333. Das Abhören ist eine Serveraktivität .

Client A wählt einen ephemeren Port und öffnet eine Verbindung zur Adresse von Client B auf Port 8333, auf dem Client B lauscht . Auf TCP-Ebene gibt es einen Drei-Wege-Handshake , um die Verbindung herzustellen. Stellen Sie sich diese Verbindung als bidirektionale Pipe vor, zu und von der beide Clients lesen und schreiben können.

Nach der Einrichtung sendet Client A Versionund Client B empfängt es. Client B sendet Versionund Client A empfängt. Client A sendet Verackund ich denke, Client B sendet auch Verack, was eine Bestätigung der Versionskompatibilität oder des Empfangs ist.

Das ist mein Verständnis.