Skip to content

lemon-mint/timeserver

Repository files navigation

Time Server

HTTP Time Server that returns the current server time

How it works

Terminology

  • t0: time when the client sends the request
  • t1: time when the server receives the request
  • t2: time when the server sends the response
  • t3: time when the client receives the response

Protocol

  1. The Client sends a request GET /tt to the server.

The server is written in Go and returns the current time in the following format:

18446744073709551615$18446744073709551615
  1. The Client can parse the response by splitting the string by $ and converting the first part to t1 and the second part to t2.

  2. The Client can calculate offset by the following formula:

offset = (t1 - t0 + t2 - t3) / 2;
  1. The Client also can calculate sync error by the following formula:
error = Math.abs(t3 - t0 - (t2 - t1)) / 2;
  1. The Client repeats the request several times and calculates and records the offset and error for each request.

  2. After that client calculates the confidence interval using the Intersection algorithm.