Como o protocolo de tempo de rede (ntpd) obtém o tempo certo para a minha máquina?

2

protocolo de tempo de rede (ntpd) define a hora no meu sistema automaticamente a partir de servidores de tempo na rede (ou algo assim.)

O que sempre me perguntei era como isso funciona? Tudo o que vem pela rede está em pacotes que passam por vários saltos e atrasos de uma maneira muito assíncrona, então como as informações de tempo de um lugar chegam a outro com compensação pelo tempo de viagem, etc.?

    
por Joe 04.01.2012 / 09:21

1 resposta

1

O processo está bastante envolvido, mas note que uma sincronização de NTP é uma conversa e, como você suspeita, ela precisa calcular o tempo de ida e volta para sincronizar efetivamente levando em consideração quanto tempo os pacotes levam.

Embora o cliente possa não saber a hora com precisão quando solicita uma atualização de hora, ele sabe pelo menos quando enviou o pacote. O servidor sabe a hora exata em que recebe um pacote, mais a hora exata em que envia uma resposta. O cliente sabe o tempo de intervalo entre o momento em que enviou um pacote e o recebimento da resposta.

Assim, a partir desses números, é fácil calcular a hora correta, desde que o atraso seja consistente em toda a conversa.

Nem sempre é consistente, é claro, razão pela qual vários servidores geralmente são configurados para que os erros possam ser calculados, juntamente com o cliente mantendo as informações de rastreamento de estado para que ele possa ignorar quaisquer resultados malucos.

Wikipedia é uma boa fonte de detalhes.

    
por 04.01.2012 / 09:32