【问题标题】:client and server time sync with new Date()客户端和服务器时间与 new Date() 同步
【发布时间】:2022-11-24 13:14:44
【问题描述】:

我正在尝试尽可能准确地同步客户端和服务器之间的时间。

我阅读了很多文章,其中大部分都推荐我们使用 NTP 时间同步,或基于流的协议,例如 TCP。

两者都需要客户端先询问服务器时间,并使用往返时间同步时间。

但我也开始知道,当我们使用具有相同时区 (UTC) 的 new Date 时,浏览器(客户端)和节点(服务器)输出相同的东西。

那么为什么我们需要同步客户端和服务器之间的时间呢?

分别使用UTC时区不是更好吗?

使用基于 NTP 的时间同步与在不同环境中使用具有相同时区 (UTC) 的 new Date() 相比有什么优势?

【问题讨论】:

  • 不同的计算机可能有不同的时钟,用户的计算机可能有很大不同的时钟,不良用户可能会故意更改他们的时钟以引入错误或作弊等。使用共同的可信源可以解决这个问题,尽管人们有时仍然可以解决它,你应该始终假设每个客户都不可信任!
  • @AndrewCarter 感谢您的帮助。但是即使单独的设备使用相同的时区,它们也会彼此不同吗? stackoverflow.com/a/54701755/10851011
  • @koo 我认为你没有抓住要点:你永远不能信任远程客户端(并且时区无关紧要:始终只使用 UTC)
  • 我现在可以将手机的时钟更改为 1940 年 11 月 1 日上午 9:00:)
  • 设备怎么知道呢?设备无法凭空得出正确的时间。必须告诉时间。通常这发生在工厂,但不一定永远保持准确。甚至数字手表也会坏掉。 (关于人们故意更改设备时钟时间的观点也很好。如果许可证持续到 2021 年,而你将计算机设置为永久在 2020 年,你会想知道。)

标签: utc ntp


【解决方案1】:

除非计算机使用 NTP,否则不能假定它知道准确的时间。就像模拟时钟一样,尤其是对于较旧的计算机,时钟可能会走得更快或更慢,从而变得越来越不准确。或者电池可能失效,导致计算机丢失时间信息,并重置为默认值; NTP 是一种机制,计算机可以通过该机制询问权威来源以确保其时钟正确。人们使用教堂的钟声来确保他们的祖父钟准时运行,然后他们会使用电视新闻;现在 NTP 就是为这个目的服务的。

在服务器上,您可以确保 NTP 客户端正在运行,从而确保服务器时钟正确。由于您无法控制客户端计算机,就您所知,可能是 1970 年 1 月,询问您信任的服务器是最安全的做法。

【讨论】:

  • 我的计算机都使用 NTP,它们有时会得到错误的时间,因为我的一个域控制器中的硬件时钟会稍微关闭。所以使用 NTP 并不意味着任何准确性。
猜你喜欢
  • 2013-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多