< All Blog

Neo4j Bolt Handshake Protocol Introduced

November 14, 2021

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 についての概要を紹介しました。

Recommended Posts

  1. Neo4j Causal Clustering 紹介

    April 22, 2022
    本記事では、Neo4j における Causal Clustering (因果クラスタリング) について説明します。 クラスタリングの目的 データベースを運用する場合、単一のインスタンスを稼働させるか、Causal Clustering を用いてクラスター構成を組むか(クラスタリング)のいずれかを選択することになるでし…
  2. Neo4j Page Cache Introduced

    November 12, 2021
    Neo4j データベースにおける Page Cache について説明します。 About Page Cache Neo4j データベースは、データベースマネジメントシステム(以下:DBMS)ですので、データはディスク上に保存します。ですが、ユーザーから問い合わせがある度にディスク上から読み込んでいては大変遅いです。ま…