RFC 868 INTERNET STANDARD TIME · APPLICATION

Time Protocol

A service on port 37 that returns the time as a 32-bit count of seconds since 1900.

On rfc-editor.org ↗
PUBLISHED
May 1983
AUTHORS
J. Postel, K. Harrenstien
STREAM
Legacy
PORT
37 (45 octal), TCP and UDP
TIME VALUE SIZE
32 bits
EPOCH
00:00 1 January 1900 GMT
BASE SERVES UNTIL
the year 2036
DOI
10.17487/RFC0868
ERRATA
Reported errata

RFC text

Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                    J. Postel - ISI
Request for Comments: 868                           K. Harrenstien - SRI
                                                                May 1983



                             Time Protocol




This RFC specifies a standard for the ARPA Internet community.  Hosts on
the ARPA Internet that choose to implement a Time Protocol are expected
to adopt and implement this standard.

This protocol provides a site-independent, machine readable date and
time.  The Time service sends back to the originating source the time in
seconds since midnight on January first 1900.

One motivation arises from the fact that not all systems have a
date/time clock, and all are subject to occasional human or machine
error.  The use of time-servers makes it possible to quickly confirm or
correct a system's idea of the time, by making a brief poll of several
independent sites on the network.

This protocol may be used either above the Transmission Control Protocol
(TCP) or above the User Datagram Protocol (UDP).

When used via TCP the time service works as follows:

   S: Listen on port 37 (45 octal).

   U: Connect to port 37.

   S: Send the time as a 32 bit binary number.

   U: Receive the time.

   U: Close the connection.

   S: Close the connection.

   The server listens for a connection on port 37.  When the connection
   is established, the server returns a 32-bit time value and closes the
   connection.  If the server is unable to determine the time at its
   site, it should either refuse the connection or close it without
   sending anything.

Time Protocol


When used via UDP the time service works as follows:

   S: Listen on port 37 (45 octal).

   U: Send an empty datagram to port 37.

   S: Receive the empty datagram.

   S: Send a datagram containing the time as a 32 bit binary number.

   U: Receive the time datagram.

   The server listens for a datagram on port 37.  When a datagram
   arrives, the server returns a datagram containing the 32-bit time
   value.  If the server is unable to determine the time at its site, it
   should discard the arriving datagram and make no reply.

The Time

The time is the number of seconds since 00:00 (midnight) 1 January 1900
GMT, such that the time 1 is 12:00:01 am on 1 January 1900 GMT; this
base will serve until the year 2036.

For example:

   the time  2,208,988,800 corresponds to 00:00  1 Jan 1970 GMT,

             2,398,291,200 corresponds to 00:00  1 Jan 1976 GMT,

             2,524,521,600 corresponds to 00:00  1 Jan 1980 GMT,

             2,629,584,000 corresponds to 00:00  1 May 1983 GMT,

        and -1,297,728,000 corresponds to 00:00 17 Nov 1858 GMT.

AI ELI5

On this page
PROBLEMNot every system has a clock, and all clocks can be wrong, so hosts need a way to confirm or correct their idea of the time from independent sites.
MECHANISMA server on port 37 returns a 32-bit binary number: the seconds since midnight on 1 January 1900 GMT. It does this over TCP and then closes, or in a single UDP reply to an empty datagram.
THE CATCHThe RFC is an Internet Standard for hosts that choose to implement it. It says the 1900 base will serve until the year 2036.

§1A Machine-Readable Time Service

RFC 868 defines the Time Protocol, which provides a site-independent, machine readable date and time. The server sends back to the originating source the time in seconds since midnight on 1 January 1900.

One motivation is that not all systems have a date/time clock, and all are subject to occasional human or machine error. With time servers, a system can quickly confirm or correct its idea of the time by making a brief poll of several independent sites on the network.

Some computers have no clock, and clocks can be wrong. So a computer can ask a few others what time it is and check.

§2Using TCP and UDP

The protocol may run above TCP or UDP, always on port 37 (45 octal). Over TCP, the server listens, the user connects, the server sends the time as a 32-bit binary number and closes, and the user receives it and closes. If the server cannot determine the time, it should either refuse the connection or close it without sending anything.

Over UDP, the user sends an empty datagram to port 37 and the server replies with a datagram containing the 32-bit time. If the server cannot determine the time, it should discard the arriving datagram and make no reply.

You knock on door number 37, and the machine hands back one number, the time, and that is all.

TIME PROTOCOL OVER UDP (RFC 868)
UserServer (port 37)
  1. Empty datagramSent to port 37.
  2. 32-bit timeSeconds since 1 January 1900 GMT.

§3The Time Value

The time is the number of seconds since 00:00 (midnight) 1 January 1900 GMT, so that the time 1 is 12:00:01 am on 1 January 1900 GMT. The RFC says this base will serve until the year 2036.

Examples from the RFC: 2,208,988,800 corresponds to 00:00 1 Jan 1970 GMT, 2,398,291,200 to 00:00 1 Jan 1976 GMT, 2,524,521,600 to 00:00 1 Jan 1980 GMT, and 2,629,584,000 to 00:00 1 May 1983 GMT. The value -1,297,728,000 corresponds to 00:00 17 Nov 1858 GMT.

It is like counting every second since the start of 1900 on a giant stopwatch. The number gets big, but it tells you exactly when you are.