NTP协议之旅
- What---啥是NTP
- Why---为什么需要NTP
- How---NTP实现原理
- Do---NTP实战
- 使用HCL 华三模拟器进行NTP配置
- 抓包分析
What—啥是NTP
NTP是在分布式网络中,进行时钟同步的协议,其具有较高的时间同步精度。所使用的传输层协议为UDP,使用端口号为123。
Why—为什么需要NTP
- 分布式网络中,设备数量多,使用NTP同步时间,节省网管工作量。
- 计费系统对时间一致性有要求,计费不准会出事。
- 多个系统之间按照时间顺序处理负责事务,时间保持同步是基础。
总之许多业务和日常生活中,许多地方都离不开NTP协议。
How—NTP实现原理
如上图,NTP协议报文交互一共需要发送两个报文,携带的时间信息:
- Client发送请求报文给Server,携带了发出时刻Client端时间t1。
- Server发送响应报文给Client,携带了Server收到请求报文的Server端时刻t2,发送应答报文的时刻t3。
- 此外Client收到响应报文时,记录收到响应报文Client时刻为t4。
根据t1,t2,t3,t4这4个时刻,下面来介绍如何计算出Server和Client的时间差offset。
进而Client端根据这个算出的offset来更新本地时间,做到与Server同步。
如上图,
设Server和Client之间的时间差为offset,在Client端请求报文发送时刻为T1时,此时Server端时间为T1’,则有方程:① T1 + offset = T1’。
设报文在Client和Server传输途中花费的时间为delay,报文到达Server时间为T2,则有方程:②T1’ + delay = T2。
同理在Server的响应报文返回时,Server的时间和Client的时间差仍然是offset,在T3时刻从Server发回的报文对应Client端时间为T3’,则有方程:③T3’ + offset = T3。
响应报文在线路上传递时间仍然为delay(这里应该有个假设,请求报文的响应报文花费的时间delay相同),则有方程:④T3’ + delay = T4。
方程组中有4个已知数T1,T2,T3,T4以及4个等式,可以解出offset和delay的值。
重要的是offset,获得了offset便知道了Client的时间与Server的时间差。
Client根据这个时间差就可以调整自己的时间了。
Do—NTP实战
使用HCL 华三模拟器进行NTP配置
- 创建两台路由器,一台做为Server,另外一台作为Client。二者通过网线连接,并且右击网线设置抓包,后面配置成功后,可以近距离观察NTP的报文。
- 分别进行NTP配置,并等待NTP状态同步成功。