Neo4j Bolt Handshake Protocol Introduced

Bolt Protocol において、サーバーとクライアントが接続を開始するためのプロトコルとして、Bolt Handshake Protocol Specification の仕様が策定されています。

本記事では、Bolt Handshake Protocol の概要について説明します。

Handshake Workflow

クライアントがサーバーと接続を開始するまでの基本的な流れは以下の図の通りです。

Bolt Handshake Protocol Introduced

まず、クライアントはサーバーに Bolt Protocol で接続を開始したい宣言を行います。これには、固定の 4 bytes のメッセージを送ります。

C: 60 60 B0 17

続いて、クライアントがサポートしている Bolt Protocol のバージョンを 4 つ 送ります。Big-endian の 32 bit 符号なし整数です。

例えば、上記の図では、以下の 4 つのバージョンをクライアントがサポートしています。

  • v4.2: 00 00 02 04
  • v4.1: 00 00 01 04
  • v4.0: 00 00 00 04
  • v3.x: 00 00 00 03

具体的には、以下の bit 列を送信します。

C: 00 00 02 04 00 00 01 04 00 00 00 04 00 00 00 03

サーバーがこの中から接続に利用する Bolt Protocol のバージョンを決定し、クライアント側に返却します。例えば、v4.1 を選択したとしましょう。

S: 00 00 01 04

まとめ

以上の流れを改めてまとめると、以下の bit 列がやり取りされていることになります。 bit の合計 3 Round-Trip かかっています。

C: 60 60 B0 17
C: 00 00 02 04 00 00 01 04 00 00 00 04 00 00 00 03
S: 00 00 01 04

以上、Binary Handshake Protocol についての概要を紹介しました。

November 14, 2021