webrtc NTP网络时间同步

原文链接:https://blog.csdn.net/zhangkai19890929/article/details/85239220

假设我们有2个设备A和B,A的时间是10::00:00am ,B的时间是11::00::00am,现在我们要把A和B的时间统一.

首先我们以B的时间为统一的时间源,这样时间才好统一.

实际上我们要统一时间,我们需要计算的是,A和B之间的时间差(一个小时).

我们把问题转化为数学题:

  1. Device A发送一个NTP报文给Device B,该报文带有它离开Device A时的时间戳,该时间戳为10:00:00am( t 1 t_1 t1
  2. 当此NTP报文到达Device B时,Device B加上自己的时间戳,该时间戳为11:00:01am( t 2 t_2 t2
  3. 当此NTP报文离开Device B时,Device B再加上自己的时间戳,该时间戳为11:00:02am( t 3 t_3 t3
  4. 当Device A接收到该响应报文时,Device A的本地时间为10:00:03am( t 4 t_4 t4

所以我们需要求:

1.这个ntp往返一次所需要花费的时间?

两种解法:
第一种解法:

t = ( t 2 − t 1 ) + ( t 3 − t 4 ) ; t = ( t_2 -t_1 ) + (t_3 - t_4); t=(t2t1)+(t3t4);
t = ( 11 : 00 : : 01 − 10 : : 00 : : 00 ) + ( 11 : : 00 : : 02 − 10 : : 00 : : 03 ) = 2 s t = (11:00::01 - 10::00::00) + (11::00::02 - 10::00::03) = 2s t=(11:00::0110::00::00)+(11::00::0210::00::03)=2s

但是这种结算对计算理解起来很不友好,因为设计到双方时间的转化,为了我们自己比较好理解.

在计算机中我们主要我们采用这种写法:

t = ( t 4 − t 1 ) − ( t 3 − t 2 ) = 2 s t = (t_4 - t_1) - (t_3 - t_2)= 2s t=(t4t1)(t3t2)=2s

意思是:
t 4 − t 1 t_4 - t_1 t4t1是报文从发送到收到总的花费时间, t 3 − t 2 t_3 - t_2 t3t2为报文在B设备里处理花费的时间.

所以 ( t 4 − t 1 ) − ( t 3 − t 2 ) (t_4 - t_1) - (t_3 - t_2) (t4t1)(t3t2)就是报文往返的耗费时间. (官方上的叫法叫rtt).

2.设备A相对设备B的时间差.

这个更容易:
o f f s e t = ( t 2 − t 1 + t 3 − t 4 ) / 2 offset = (t_2 - t_1 + t_3 - t_4) / 2 offset=(t2t1+t3t4)/2

上面的计算其实不精准,还应该减去往返数据的时间差rtt

o f f s e t = ( t 2 − t 1 + t 3 − t 4 − t ( 第 一 步 计 算 得 出 ) ) / 2 offset = (t_2 - t_1 + t_3 - t_4 - t (第一步计算得出)) / 2 offset=(t2t1+t3t4t())/2

offset 就是A设备和B设备的时间偏移;

webrtc中通过rtcp的SR和RR包进行NTP时间同步;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值