原文鏈接:https://blog.csdn.net/zhangkai19890929/article/details/85239220
假設我們有2個設備A和B,A的時間是10::00:00am ,B的時間是11::00::00am,現在我們要把A和B的時間統一.
首先我們以B的時間爲統一的時間源,這樣時間纔好統一.
實際上我們要統一時間,我們需要計算的是,A和B之間的時間差(一個小時).
我們把問題轉化爲數學題:
- Device A發送一個NTP報文給Device B,該報文帶有它離開Device A時的時間戳,該時間戳爲10:00:00am()
- 當此NTP報文到達Device B時,Device B加上自己的時間戳,該時間戳爲11:00:01am()
- 當此NTP報文離開Device B時,Device B再加上自己的時間戳,該時間戳爲11:00:02am()
- 當Device A接收到該響應報文時,Device A的本地時間爲10:00:03am()
所以我們需要求:
1.這個ntp往返一次所需要花費的時間?
兩種解法:
第一種解法:
但是這種結算對計算理解起來很不友好,因爲設計到雙方時間的轉化,爲了我們自己比較好理解.
在計算機中我們主要我們採用這種寫法:
意思是:
是報文從發送到收到總的花費時間, 爲報文在B設備裏處理花費的時間.
所以就是報文往返的耗費時間. (官方上的叫法叫rtt).
2.設備A相對設備B的時間差.
這個更容易:
上面的計算其實不精準,還應該減去往返數據的時間差rtt
offset 就是A設備和B設備的時間偏移;
webrtc中通過rtcp的SR和RR包進行NTP時間同步;