time 时间服务
37 是 RFC 868 定义的 time 服务端口,返回自 1900 年 1 月 1 日起算的 32 位秒计数。它比 NTP 简单得多,也没有平滑校准与认证机制,早已被 NTP 取代,只在极老的系统或个别网络设备上还能见到。读取参考时间可以用它,校准系统时钟不应该用它。
基本信息
| 服务 | time(RFC 868) |
|---|---|
| 协议 | TCP/UDP |
| 返回值 | 1900 纪元的 32 位秒计数 |
| 现状 | 被 NTP 取代 |
| 客户端示例 | rdate |
典型使用场景
- 用 rdate 读取对端时间做参考对照
- 老设备只支持该协议时的兼容读取
- 学习时间协议演进时理解纪年方式的差异
- 资产梳理时确认是否还有服务在监听这个端口
- 排障时区分时间读取与时间同步两种需求
读取对端时间
读取对端时间
rdate -p time.nist.gov # 仅打印,不修改本机时间
ss -lntup | grep ':37 '
# 生产环境统一用时间同步服务
chronyc sources -v时间协议对照
| 端口 | 协议 | 说明 |
|---|---|---|
| 37 | time | 返回 1900 纪元的秒计数 |
| 123 | NTP | 带平滑校准与层级同步,生产标准 |
| 13 | daytime | 返回可读时间文本,同属遗留服务 |
| 校准方式 | 跳变或平滑 | 该协议只能跳变,容易触发应用异常 |
用它校准时间会一次性跳变系统时钟,可能触发应用异常,例如定时任务错乱或数据库事务时间戳倒退。生产环境请统一使用时间同步服务,并确认所有节点都指向同一组时间源。
纪年差异容易被忽略:RFC 868 从 1900 年起算,Unix 时间戳从 1970 年起算,两者相差一个固定偏移量。做时间转换或系统对接时算错偏移,会得到完全离谱的结果。
客户端注意:读取时间类命令默认只显示结果,加参数才会写入本机时钟。排查时间偏差时先用只读方式核对,不要在业务高峰期直接改动系统时间。
选型提示:需要精度与层次化同步时用时间同步协议,需要临时读取对端时间做人工比对时才用这类遗留服务,两者的定位不要混淆。