From 62061a13da396b22eafd38715f9d4a70a2ca3115 Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 12:33:37 +0000 Subject: [PATCH] docs: link official Native Protocol and Native Format specs from TCP interface page --- concepts/features/interfaces/tcp.mdx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/concepts/features/interfaces/tcp.mdx b/concepts/features/interfaces/tcp.mdx index be9b78c5c..b5f7ce427 100644 --- a/concepts/features/interfaces/tcp.mdx +++ b/concepts/features/interfaces/tcp.mdx @@ -6,4 +6,9 @@ title: 'Native interface (TCP)' doc_type: 'reference' --- -The native protocol is used in the [command-line client](/concepts/features/interfaces/cli), for inter-server communication during distributed query processing, and also in other C++ programs. Unfortunately, native ClickHouse protocol doesn't have formal specification yet, but it can be reverse-engineered from ClickHouse source code (starting [around here](https://github.com/ClickHouse/ClickHouse/tree/master/src/Client)) and/or by intercepting and analyzing TCP traffic. +The native protocol is used in the [command-line client](/concepts/features/interfaces/cli), for inter-server communication during distributed query processing, and also in some language clients (e.g. [clickhouse-go](/integrations/go#connection-details)). + +ClickHouse provides official specifications for the native protocol and the columnar format it carries: + +- [Native Protocol](/interfaces/specs/NativeProtocol) — packet framing, the connection state machine, version negotiation, and the body of every non-`Block` message. +- [Native Format](/interfaces/specs/NativeFormat) — the `Block` and column structure, the per-type encodings, and the compression frame. This format also appears outside the TCP protocol, for example with `FORMAT Native` over HTTP.