Handshake

When connecting, the handshake sequence documented below must be performed, so client and server can agree on a protocol version to use and exchange some parameters.

client -> server

  • 0x6e697863 :: Int (hardcoded, ’nixc’ in ASCII)

client <- server

  • 0x6478696f :: Int (hardcoded, ‘dxio’ in ASCII)
  • protocolVersion :: Int

client -> server

  • clientVersion :: Int

If clientVersion is 1.14 or later

  • sendCpu :: Bool (hardcoded to false in client)

If sendCpu is true

  • cpuAffinity :: Int (obsolete and ignored)

If clientVersion is 1.11 or later

  • reserveSpace :: Bool (obsolete, ignored and set to false)

client <- server

If clientVersion is 1.33 or later

  • nixVersion :: String

If clientVersion is 1.35 or later

  • trusted :: OptTrusted

client <- server