Diagrama de comunicación inicial de Bitcoin

Estoy tratando de entender exactamente cómo se comunica inicialmente el cliente Bitcoin con otro cliente, ya que estoy creando mi propio cliente y aprendiendo cosas nuevas sobre el protocolo TCP. Según tengo entendido, el cliente de Bitcoin usa el puerto estándar (8333) como un puerto de servidor que escucha la comunicación de otros clientes, y el cliente abre nuevos puertos mientras intenta comunicarse con otros clientes. Como no estoy seguro de haber entendido correctamente la comunicación, hice este cuadro:

Mi pregunta es: ¿es correcto este diagrama y mis suposiciones, o cometí algún error al entender cómo funciona el protocolo?

Dado que se trata de TCP, probablemente sea más claro afirmar simplemente que A abre una conexión TCP al puerto 8333 de B y que esta conexión se utiliza para la comunicación posterior entre ellos.

Respuestas (1)

Estás bastante cerca, con las desviaciones, creo, principalmente en la terminología.

El cliente A escucha las conexiones en el puerto 8333. La escucha es una actividad del servidor .

El Cliente A elige un puerto efímero y abre una conexión a la dirección del Cliente B en el puerto 8333, en el que el Cliente B está escuchando . A nivel de TCP, hay un protocolo de enlace de tres vías para establecer la conexión. Imagine esta conexión como una tubería bidireccional hacia y desde la cual ambos clientes pueden leer y escribir.

Una vez establecido, el Cliente A envía Versiony el Cliente B lo recibe. El cliente B envía Versiony el cliente A lo recibe. El Cliente A envía Veracky creo que el Cliente B también envía Verack, lo cual es un reconocimiento de la compatibilidad o recibo de la versión.

Este es mi entendimiento.