Pular para o conteúdo
Todos os conceitos

Protocolos de hora

Máquinas contam a hora pela rede de vários jeitos: NTP, o protocolo Time (porta 37), Daytime (porta 13) e o cabeçalho Date do HTTP. Os mais antigos contam segundos desde 1900.

Um servidor revela o relógio dele por vários serviços:

Serviço Porta O que manda
NTP UDP 123 Carimbos de 64 bits: 32 bits de segundos desde 1900 e 32 de fração
Time (RFC 868) TCP ou UDP 37 4 bytes: segundos desde 1900, em big-endian
Daytime (RFC 867) TCP ou UDP 13 A data e a hora em texto
HTTP TCP 80 ou 443 O cabeçalho Date: de cada resposta

O Time é o mais simples: basta conectar, e o servidor manda os 4 bytes e fecha.

$ nc time.nist.gov 37 | xxd
00000000: ee8b f552

Duas épocas. NTP e Time contam desde 1º de janeiro de 1900, 00:00 UTC. O relógio Unix (e o date, e o time.time() do Python) conta desde 1º de janeiro de 1970. A diferença é de 70 anos, com 17 anos bissextos: 25.567 dias, ou 2.208.988.800 segundos. Para converter:

$ date -u -d @$((0xee8bf552 - 2208988800)) +%FT%TZ
2026-10-28T04:15:14Z
2026-10-28T04:15:14Z o mesmo instante NTP e Time: segundos desde 1900 0xee8bf552 2.208.988.800 s: 70 anos Unix: segundos desde 1970 0xee8bf552 - 2208988800 1900-01-01 1970-01-01
NTP e Time contam segundos desde 1900 e o Unix desde 1970: o mesmo instante dá dois números, e a diferença entre eles é sempre 2.208.988.800 segundos.

Em Python: datetime.datetime(1900, 1, 1, tzinfo=datetime.timezone.utc) + datetime.timedelta(seconds=0xee8bf552).

O limite de 32 bits. O maior número de 32 bits, 0xFFFFFFFF (4.294.967.295), contado desde 1900, cai no começo de fevereiro de 2036: é ali que a contagem de segundos do NTP dá a volta (o fim da "era 0"). O relógio Unix de 32 bits com sinal tem o mesmo problema em 2038-01-19T03:14:07Z.

Na prática, relógio errado quebra a linha do tempo de um incidente (os logs de máquinas diferentes deixam de bater), a validação de certificados TLS e a autenticação Kerberos. E o relógio de um servidor, exposto por um desses serviços, é mais uma pista sobre ele.

Aparece nestes desafios