導航:首頁 > 網路共享 > 網路的時鍾服務通過哪個協議實現

網路的時鍾服務通過哪個協議實現

發布時間:2023-05-15 20:38:08

❶ NTP網路校時服務詳解

地球分為東西十二個區域,共計 24 個時區,以格林威治作為全球標准時間(即GMT 時間,0時區),東部時區以格林威治時區進行加法,而西時區則以格林威治時間作減法。但地球的軌道並非正圓,在加上自轉速度逐年遞減,時間會有誤差。在計算時間的時,最准確是使用「原子震盪周期」所計算的物理時鍾。這種時鍾被稱為標准時間,即UTC時間(腔乎Coordinated Universal Time)。UTC 的准確性毋庸置疑,美國的 NIST F-1 原子鍾 2000 年才將產生 1 秒誤差。

實際生產生活中,使用原子時鍾這種准確的計時似乎缺少必要性,我們更多關注的是參與活動的各個個體在相同的時間環境下對話。例如,當我們說明天早上8:00開會的時候,我們並不在乎原子時鍾真實的計時情況,只要參會的所有個體對「明天早上8:00」這個時間具有相同的認知即可。這里時間同步是個非常重要的概念,如果某位同仁手錶慢了半小時,那它對「早上8:00」的理解就比其他人要慢半小時,最終會導致ta開會遲到。同樣的道理,我們在影視劇中經常能看到特種作戰小組在執行特別任務前一般都要先完成組員之間的時間同步,避免組員之間在時間上的認知差異給任務帶來不必要的麻煩,甚至危及生命。

NTP(Network Time Protocol,網路時間協議)是由RFC 1305定義的時間同步協議,用於分布式設備(比如電腦、手機、智能手錶等)進行時間同步,避免人工校時的繁瑣和由此引入的誤差,方便快捷地實現多設備時間同步。 NTP校時服務基於UDP傳輸協議進行報文傳輸,工作埠默認為123/udp

NTP的實現過程如圖所示,假如設備A和設備B本地時間存在差異(設備A早上10點,設備B早上11點),現在設備A欲通過NTP和設備B在時間上保持同步:

這樣可以輕松計算出來:

現假設設備A和設備B之間的時間差位 ,易得:

通過上式計橘猛算出 .
設備A就能根據 調整本地時間,實現和設備B的時間同步。

NTP的目的是在一個同步子網中,通過NTP協議將主時間伺服器的時鍾信息傳送到其他二級時間伺服器,實現二級時間伺服器和主時間伺服器的時鍾同步。這些伺服器按層級關系連接,每一級稱為一個層數(stratum),如主時間伺服器層數為 stratum 1,二級時間伺服器層數為 stratum 2,以此類推。時鍾層數越大,准確性越低。
注意:准確性指相對於主時間伺服器而言。

在NTP網路結構中,有以下幾個概念:

在正常情況下,同步子網中的主時間伺服器和二級時間伺服器呈現出一種分層主從結構。在這種分層結構中,主時間伺服器位於根部,二級時間伺服器向葉子節點靠近,層數遞增,准確性遞減,降低的程度取決於網路路徑和本地時鍾的穩定性。

NTP有兩種不同類型的報文,一種是時鍾同步報文,另一種是控制報文。控制報文僅用於需要網路管理的場合,它對於時鍾同步功能來說並不是必需的,這里不做介紹。

時鍾同步報文封裝在UDP報文中,其格式如圖所示:

各主圓圓橋要欄位解釋如下:

其中,NTP發送和接收的報文數據包類似,通常只需要前48個位元組就能進行授時和校時服務。下面分別是抓包獲取的NTP請求數據包和回復數據包示例(僅前48個位元組):

收到數據包後,接收端本地再產生一個時間戳( )。
這里,每個返回數據前4位元組為秒的整數部分,後4位元組為秒的小數部分。

設備可以採用多種NTP工作模式進行時間同步:

單播C/S模式運行在同步子網層數較高的層級上,客戶端需要預先知道時間伺服器IP或域名並定期向伺服器發送時間同步請求報文,報文中的 Mode欄位設置為 3(客戶模式)。伺服器端收到報文後會自動工作在伺服器模式,並發送應答報文,報文中的Mode欄位設置為4(伺服器模式)。客戶端收到應答報文後,進行時鍾過濾和選擇,並同步到優選的伺服器。客戶端不管伺服器端是否可達,也不管伺服器端所在的層數。在這種模式下,客戶端會同步到伺服器,但不會修改伺服器的時鍾。伺服器則在客戶端發送請求之間無需保留任何狀態信息。客戶端根據本地情況自由管理發送報文的時間間隔。

對等體模式運行在同步子網較低層級上,主動對等體和被動對等體實現時鍾相互同步。這里有兩個概念:主動對等體和被動對等體。

如上圖所示,對等體模式工作步驟如下:
1.主動對等體和被動對等體首先交互Mode欄位為3(客戶端模式)和4(伺服器模式)的NTP報文,這一步主要是獲得通信時延。

主動對等體和被動對等體可以互相同步。如果雙方的時鍾都已經同步,則以層數小的時鍾為准。

注意:對等體模式不需要用戶手動設置,設備依據收到的NTP報文自動建立連接並設置狀態變數。

廣播模式應用在多台工作站和不需要很高精度的高速網路中。主要工作流程如圖所示:

注意:在廣播模式下,服務端只負責向外廣播時鍾信息,自身時鍾不受客戶端影響。

組播模式適用於有大量客戶端分布在網路中的情況。通過在網路中使用 NTP 組播模式, NTP 伺服器發送的組播消息包可以到達網路中所有的客戶端,從而降低由於 NTP 報文過多而給網路造成的壓力。主要工作流程如下:

注意:組播模式和廣播模式類似,只是它是向特定的組播地址發送時鍾同步廣播報文。在組播模式下,服務端只負責向外廣播時鍾信息,自身時鍾不受客戶端影響。

多播模式適用於伺服器分布分散的網路中。客戶端可以發現與之最近的多播伺服器,並進行同步。多播模式適用於伺服器不穩定的組網環境中,伺服器的變動不會導致整網中的客戶端重新進行配置。其工作流程如下:

注意:為了防止多播模式下,客戶端不斷的向多播伺服器發送 NTP 請求報文增加設備的負擔,協議規定了最小連接數的概念。多播模式下,客戶端每次和伺服器時鍾同步後,都會記錄下此次同步過中建立的連接數,將調用最少連接的數量被稱為最小連接數。以後當客戶端調動的連接數達到了最小連接數且完成了同步,客戶端就認為同步完成;同步完成後每過一個超時周期,客戶端都會傳送一個報文,用於保持連接。同時,為了防止客戶端無法同步到伺服器,協議規定客戶端每發送一個 NTP 報文,都會將報文的生存時間 TTL(Time To Live)進行累加(初始為 1),直到達到最小連接數,或者 TTL 值達到上限(上限值為 255)。若 TTL 達到上限,或者達到最小連接數,而客戶端調動的連接數仍不能完成同步過程,則客戶端將停止一個超時周期的數據傳輸以清除所有連接,然後重復上述過程。

下面補充一些常用的NTP時鍾伺服器:

更多NTP授時伺服器請查看:

假設你比較喜歡清華的服務並打算將 ntp.tuna.tsinghua.e.cn 作為你的授時伺服器。下面將簡單介紹不同的操作系統該如何操作使得設備能夠使用此伺服器同步時間。

本部分以主流Windows 10 系統為例演示如何使用NTP服務同步系統時間。

來將此伺服器設置為個人選擇的時間伺服器。

Linux發行版有兩個主流程序支持ntp協議:ntpd和chrony。
具體使用和配置參考各自文檔: ntpd doc 和 chrony doc

在「系統配置 > 日期與時間 > 自動設置日期與時間」一欄,填入 ntp.tuna.tsinghua.e.cn 。

❷ 目前網路時間服務有哪幾種協議

杭州元帥http://www.vbgood.com/viewthread.php?tid=18070&highlight=
在一個區域網中,許多系統都要求每台計算機能夠保持時間的一致性,WIN2000系統提供了與主域伺服器時間同步功能,即工作站只要登錄到主域伺服器,工作站系統盯桐的時間自動與主域伺服器時間一致,但接下來的問題是我們如何使主域伺服器的時間同步世界標准時間。如要獲得世界標准時間,比較精確的做法是使用GPS衛星時鍾獲得毫秒級精度的標准時間,但這是要money的哦。如果我們在時間精度上只需要秒級的,又能夠連接到Internet,則我們可以利用Internet上的標准時間伺服器獲得標准時間。
事實上在Internet上有三個不同的時間服務,每一個都由Request for Comment(RFC)定義為Internet日期時間標准。這三個標准分別為:RFC-867、RFC-868和RFC-1305。下面就先介紹RFC-867:
RFC867 Daytime協議(RFC867 Daytime Protocol)
本RFC規范了一個ARPA Internet community上的標准。在ARPA Internet上的所有主機應當採用和實現這個標准。
一個有用的測量和調試工具就是daytime服務。它的作用就是返回當前時間和日期,格式是字元串格式。
* 基於TCP的daytime服務
daytime服務是基於TCP的應用,伺服器在TCP埠13偵聽,一旦有連接建立就返回ASCII形式的日期和時間(接收到的任何數據被忽略),在傳送完後關閉連接。
* 基於UDP的daytime服務
daytime服務也可以使用UDP協議,它的埠也是13,不過UDP是用數據報傳送當前時間的。接收到的數據被忽略。
* Daytime格式
對於daytime沒有特定的格式,建議使用ASCII可列印字元,空格和回車換行符。daytime應該在如磨一行上。
下面是兩種流行的格式:
一種流行的格式是:Weekday, Month Day, Year Time-Zone
例子:Tuesday, February 22, 1982 17:37:43-PST
另一種流行的格式用於SMTP中:dd mmm yy hh:mm:ss zzz
例子:02 FEB 82 07:59:01 PST

注意:對於機器來說,有用的時間採用了時間協議(Time Protocol RFC-868)

接下來我們用VB程序實現通過RFC867協議設置我們自己的計算機系統時間,為使程序簡化,程序未進行日期校正,只進行時間校正。在FORM1中添加1個Winsock控制項,將下面代碼剪貼到FORM1的代碼窗體中即可:

Option Explicit
'採用RFC867 Daytime協議獲取標准時間常式
'www.time.ac.cn為中科院國家授時中心,採用北京時間
'時間格式:Mon Jul 26 09:58:57 2004
'time.nist.gov為美國標准技術院,採用格靈威時間
'時間格式:53212 04-07-26 02:00:12 50 0 0 488.3 UTC(NIST) *
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Dim NoSrv As Boolean
Dim TimeFromNet

Private Sub Form_Load()
Winsock1.Protocol = sckTCPProtocol '採用TCP協議
NetTime "www.time.ac.cn" '首先取中科院國家授時中心時間
If NoSrv Or TimeFromNet = "" Then
'若未取到中科院國家授時中心時間,則取美國標准技術院時間
NetTime "time.nist.gov"
If NoSrv Or TimeFromNet = "" Then
'若不能取美國標准技術院時間,則報錯
MsgBox "檢測不到網路標准時間伺服器time.nist.gov!"
Else
'為使網路傳輸誤差減小,第2次再取美國標准技術院凱橡坦時間
NetTime "time.nist.gov"
If TimeFromNet = "" Then
MsgBox "網路標准時間伺服器time.nist.gov超時!"
Else
TimeFromNet = Mid(TimeFromNet, 17, 8)
TimeFromNet = TimeSerial((Hour(TimeFromNet) + 8) Mod 24, Minute(TimeFromNet), Second(TimeFromNet))
Time = TimeFromNet '設置系統時間
End If
End If
Else
'為使網路傳輸誤差減小,第2次再取中科院國家授時中心時間
NetTime "www.time.ac.cn"
If TimeFromNet = "" Then
MsgBox "網路標准時間伺服器www.time.ac.cn超時!"
Else
Time = Mid(TimeFromNet, 12, 8) '設置系統時間
End If
End If
End
End Sub

'關閉Winsock子程序
Private Sub Winsock1_Close()
If Winsock1.State <> sckClosed Then
Winsock1.Close
End If
End Sub

'Winsock接收數據事件
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
TimeFromNet = String(bytesTotal, " ")
Winsock1.GetData TimeFromNet, vbString, bytesTotal
End Sub

'Winsock出錯事件
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
NoSrv = True
End Sub

'從互聯網上標准時間提供網站獲取標准時間
Private Sub NetTime(TimeSrv As String)
NoSrv = False
TimeFromNet = ""
If Winsock1.State <> sckClosed Then Winsock1.Close
Winsock1.RemoteHost = TimeSrv ' "www.time.ac.cn" 或 "time.nist.gov"
Winsock1.RemotePort = 13
Winsock1.LocalPort = 0
Winsock1.Connect
Do While TimeFromNet = "" '循環等待標准時間網站返回時間數據
If NoSrv Then Exit Do '若Winsock出錯,則跳出循環等待
Sleep 55
DoEvents
Loop
If Winsock1.State <> sckClosed Then Winsock1.Close
End Sub

搜索更多相關主題的帖子: internet 標准
上面介紹了RFC-867標准和VB常式,顯然RFC-867標准採用返回當前時間和日期的格式是字元串格式以及對於daytime沒有特定的格式(例如:中科院國家授時中心為"Mon Jul 26 09:58:57 2004",而美國標准技術院為"53212 04-07-26 02:00:12 50 0 0 488.3 UTC(NIST)"),這2點似乎都不是太舒服,因此我們希望Internet上的標准時間伺服器最好能夠返回具有標准格式的數字類型數據,其實RFC在制定RFC-867標准時已經考慮了我們的意見,因為他同時還推出了RFC-868標准,下面就介紹RFC-868:
RFC868 時間協議
(RFC868 Time Protocol)
本RFC規范了一個ARPA Internet community上的標准。在ARPA Internet上的所有主機應當採用和實現這個標准。
此協議提供了一個獨立於站點的,機器可讀的日期和時間信息。時間服務返回的是以秒數,是從1900年1月1日午夜到現在的秒數,天哪,也不小呢。
設計這個協議的一個重要目的在於,網路上的許多主機並沒有時間的觀念,在分布式的系統上,我們可以想一想,北京的時間和東京的時間如何分呢?主機的時間往往可以人為改變,而且因為機器時鍾內的誤差而變得不一致,因此需要使用時間伺服器通過選舉方式得到網路時間,讓伺服器有一個准確的時間觀念。不要小看時間,這對於一些以時間為標準的分布運行的程序簡單是太重要了。
這個協議可以工作在TCP和UDP協議下。下面是通過TCP協議工作的時間協議的工作過程:這里S代表伺服器,U代表客戶。

S: 檢測埠37
U: 連接到埠37
S: 以32位二進制數發送時間
U: 接收時間
U: 關閉連接
S: 關閉連接

伺服器在埠37上監聽連接。當連接建立後,伺服器返回一個32位的時間值,然後關閉連接。這個過程也不難,如果伺服器不能決定現在是什麼時間,伺服器會拒絕連接或不發送任何數據而直接關閉連接。

下面我們看看使用UDP協議的情況:這里S代表伺服器,U代表客戶。

S: 檢測埠37
U: 發送一個空數據報到埠37
S: 接收這個空數據報
S: 發送包含32位二進制數(用於表示時間)的數據報
U: 接收時間數據報

伺服器在埠37上監聽數據包。當一個數據包來後,伺服器返回一個包含32位的時間的數據包。這個過程也不難,如果伺服器不能決定現在是什麼時間,伺服器會拋棄接收到的數據報而不作出任何應答。

* 時間
時間是由32位表示的,是自1900年1月1日0時到當前的秒數,我們可以計算一下,這個協議只能表示到2036年就不能用了。(但是我們也知道計算機發展速度這么快,可能到時候就會有更好的協議代替這個協議,或者有已經想出有效的解決辦法了。)
下面是些例子:
the time 2,208,988,800 corresponds to 00:00 1 Jan 1970 GMT,
2,398,291,200 corresponds to 00:00 1 Jan 1976 GMT,
2,524,521,600 corresponds to 00:00 1 Jan 1980 GMT,
2,629,584,000 corresponds to 00:00 1 May 1983 GMT,
以及 -1,297,728,000 corresponds to 00:00 17 Nov 1858 GMT.

接下來我們用VB程序實現通過RFC868協議設置我們自己的計算機系統時間,為使程序簡化,程序未進行日期校正,只進行時間校正。不過這個常式比上面的程序要完善得多,首先他可以讀取全球20個標准時間伺服器的時間數據,第二他採用了網路延時的補償,第三對網路延時超過3秒的標准時間伺服器進行了過濾。在FORM1中添加1個Winsock控制項,將下面代碼剪貼到FORM1的代碼窗體中即可:

Option Explicit
'時間協定(RFC-868)提供了一個32位元的數字,用來表示從1900年1月1日至今的秒數。
'該時間是UTC(不考慮字母順序,它表示世界時間座標(CoordinatedUniversalTime)),
'它類似於所謂的格林威治標准時間(GreenwichMeanTime)或者GMT-英國格林威治時間。

'用TCP獲得准確時間的程式應該有如下步驟:
'1 連結到提供此服務的埠37;
'2 接收32位元的時間;
'3 關閉連結。

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Dim NoSrv As Boolean
Dim TimeFromNet '存放從時間網站讀取的秒數
Dim TimeURL(19) As String '20個時間提供網站的URL

'程序入口
Private Sub Form_Load()
Dim i As Long, T0 As Single
Dim HH As Integer, MM As Integer, SS As Integer '時、分、秒
Me.Show
CDec (TimeFromNet) '轉換為 Decimal 子類型,28位整數
TimeURL(0) = "www.time.ac.cn" '首先取中科院國家授時中心時間
TimeURL(1) = "time.nist.gov" '美國標准技術院
TimeURL(2) = "time-a.timefreq.bldrdoc.gov"
TimeURL(3) = "nist1.datum.com"
TimeURL(4) = "nist1-dc.glassey.com"
TimeURL(5) = "nist1-ny.glassey.com"
TimeURL(6) = "nist1-sj.glassey.com"
TimeURL(7) = "utcnist.colorado.e"
TimeURL(8) = "time-b.timefreq.bldrdoc.gov"
TimeURL(9) = "time-c.timefreq.bldrdoc.gov"
TimeURL(10) = "time-a.nist.gov"
TimeURL(11) = "time-b.nist.gov"
TimeURL(12) = "nist1.aol-va.truetime.com"
TimeURL(13) = "nist1.aol-ca.truetime.com"
TimeURL(14) = "time-nw.nist.gov"
TimeURL(15) = "Time-b.timefreq.bldrdoc.gov"
TimeURL(16) = "Time-c.timefreq.bldrdoc.gov"
TimeURL(17) = "ptbtime1.ptb.de"
TimeURL(18) = "clock.cmc.ec.gc.ca"
TimeURL(19) = "chronos.csr.net"
For i = 0 To 19
Me.Caption = "正在聯接—" & TimeURL(i)
NetTime TimeURL(i) '首次讀取授時中心時間
If (Not NoSrv) And TimeFromNet > 0 Then '如果時間讀取成功
'為使網路傳輸誤差減小,二次再取授時中心時間
T0 = Timer '為減小網路延時引起的誤差,先讀取當前時間
NetTime TimeURL(i) '二次讀取授時中心時間
If (Not NoSrv) And TimeFromNet > 0 Then '如果第二次時間讀取成功
TimeFromNet = TimeFromNet + Int((Timer - T0) / 2 + 0.5) '加上網路延時補償(延時/2為延時補償)
TimeFromNet = TimeFromNet - 86400 * Int(TimeFromNet / 86400) '以天取模(86400秒)
SS = TimeFromNet Mod 60 '取秒
TimeFromNet = TimeFromNet 60
MM = TimeFromNet Mod 60 '取分
HH = ((TimeFromNet 60) + 8) Mod 24 '取小時(北京時間+8)
' MsgBox "網路延時:" & (Timer - T0)
Time = TimeSerial(HH, MM, SS) '設置系統時間
Exit For '取時完畢,退出循環
End If
End If
Next i
If i > 19 Then
MsgBox "無法取得網路時間!"
End If
End
End Sub

'關閉Winsock事件
Private Sub Winsock1_Close()
If Winsock1.State <> sckClosed Then
Winsock1.Close
End If
End Sub

'Winsock接收數據事件
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim TmpData
Winsock1.GetData TmpData
TimeFromNet = TmpData(3) + TmpData(2) * 256 + TmpData(1) * 256 * 256 + TmpData(0) * 256 * 256 * 256
End Sub

'Winsock出錯事件
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
NoSrv = True
End Sub

'從互聯網上標准時間提供網站獲取標准時間
Private Sub NetTime(TimeSrv As String)
Dim i As Integer '超時計數器
i = 0
NoSrv = False
TimeFromNet = 0
If Winsock1.State <> sckClosed Then Winsock1.Close
Winsock1.RemoteHost = TimeSrv '時間提供網站的URL
Winsock1.RemotePort = 37 '時間協定(RFC-868)指定埠
Winsock1.LocalPort = 0
Winsock1.Connect
Do While TimeFromNet <= 0
i = i + 1
If NoSrv Or i > 50 Then Exit Do '若Winsock出錯或超時約3秒,則時間獲取失敗
Sleep 55
DoEvents
Loop
If Winsock1.State <> sckClosed Then Winsock1.Close
End Sub

Edited by: 杭州元帥
最精確的網路時間協議應該是RFC 1305—NTP(Network Time Protocol)了,它能夠1-50 ms 的時間精確度,但該協議非常復雜,另外很抱歉我手頭沒有RFC 1305中文翻譯資料,不過後來RFC又出了一個RFC1769 —SNTP(Simple Network Time Protocol),簡化了一些RFC 1305要求的操作和使用范圍,下面就介紹RFC1769 —SNTP:

Network Working Group D. Mills
Request for Comments: 1769 University of Delaware
Obsoletes: 1361 March 1995
Category: Informational

(RFC1769 ——Simple Network Time Protocol)

本備忘錄的狀況:

本備忘錄為Internet community提供了信息,但不規定任何一種類型的 Internet 標准。 本備忘錄的分發沒有限制。

概要
本備忘錄描述簡單網路時間協議(SNTP),這是網路時間協議(NTP) 的一個改寫本,NTP協議適用於同步網際網路上的計算機時鍾。當不須要實現RFC 1305 所描述的NTP完全功能的情況下,可以使用SNTP。它能用單播方式(點對點)和廣播方式(點對多點)操作。它也能在IP 多播方式下操作(可提供這種服務的地方)。SNTP與當前及以前的NTP版本並沒有大的不同。但它是更簡單,是一個無狀態的遠程過程調用(RPC),其准確和可靠性相似於UDP/TIME 協議在RFC868描述中所預期的。
本備忘錄淘汰相同的標題的RFC 1361。它的目的是解釋用廣播方式操作的協議模式,提供某些地方的進一步說明並且改正一些印刷上的錯誤。在NTP版本3 RFC 1305中說明的工作機理對SNTP的實現不是完全需要的。本備忘錄的分發沒有限制。

目錄
1. 介紹
2. 工作模式與地址分配
3. NTP時間戳格式
4. NTP 報文格式
5. SNTP 客戶端操作
6. SNTP 伺服器操作
7. 參考資料
8. 安全考慮
9. 作者的地址

1. 介紹
RFC 1305 [MIL92] 指定網路時間協議(NTP)來同步網際網路上的計算機時鍾。它提供了全面訪問國家時間和頻率傳播服務的機制,組織時間同步子網並且為參加子網每一個地方時鍾調整時間。 在今天的網際網路的大多數地方, NTP 提供了1-50 ms 的精確度,精確度的大小取決於同步源和網路路徑等特性。
RFC 1305 指定了NTP協議機制中的事件,狀態,傳輸功能和操作,另外,還有可選擇的演算法,它改進測時質量並且減少了一些同步源中可能存在的錯誤。為了獲得網際網路上主要路徑的延時精確到毫秒級,使用一些復雜的演算法或者他們的等價演算法是必要的。但是,在許多場合這樣的精確度是不要求,或許精確到秒已足夠了。在這樣的情況下,更簡單的協議例如「時間協議」[POS83 ]已被使用。這些協議通過基於RPC交換:客戶端請求此刻時間,然後伺服器回傳從某個已知時間點到現在的秒鍾數。
NTP被設計成了性能差異很大的客戶端及伺服器均能適用,且適用於客戶端及伺服器所在網路有大范圍的網路延遲和抖動的情況。今天的網際網路上的NTP同步子網的大多數用戶使用一個軟體包包括了一整套的NTP 的選擇和演算法,是一個比較復雜,實時的應用系統。軟體要適用於多種硬體平台:從巨型計算機到個人計算機。要在這樣的范圍都適用,它的龐大尺寸和復雜性就不適合於很多應用了。按照要求,探求一些可供選擇的訪問策略( 使用適合於精確度要求不是
很嚴格的簡單軟體)是有用的。
本備忘錄描述簡單網路時間協議(SNTP),它是一個簡化了的NTP伺服器和NTP客戶端策略。SNTP在協議實現上沒有什麼更改,在最近也不會有什麼變動。 訪問範例與UDP/TIME 協議是一致的,實際上,SNTP應該更容易適用於使用個人計算機的 UDP/TIME 客戶。而且,SNTP 也被設計在一個專門的伺服器( 包括一台集成的無線電時鍾)里操作。由於在系統里的那些各種各樣反應機制的設計和控制,交付調節時間精確到微秒是可能的。這樣的專門設計是切實可行的。
強烈建議SNTP 僅僅在同步子網的末端被使用。 SNTP 客戶端應該僅在子網的葉子( 最高的階層) 操作並在配置過程中沒有依靠其它NTP或者SNTP客戶端來同步。SNTP 伺服器應該僅在子網的根( 階層1) 操作並在配置過程中,除一台可靠的無線電時鍾外中沒有其它同步源。只有使用了有冗餘的同步源及不同的子網路徑及整套NTP實現中的crafted 演算法,主伺服器通常期望的可靠性才有可能達到。這種做法使主同步源在無線電時鍾通信失敗或者交付了錯誤時間時,還能用到其它幾個無線電時鍾和通向其它主要伺服器的備份路徑。因此,應該仔細考慮客戶端中SNTP的使用,而不是在主伺服器里的NTP的使用。
2. 工作模式與地址分配
象NTP一樣,SNTP 能在單播(點向點) 或者廣播(點對多點) 模式中操作。單播客戶端發送請求到伺服器並且期望從那裡得到答復,並且(可選的),得到有關伺服器的往返傳播延遲和本地時鍾補償。廣播伺服器周期性地送消息給一指定的IP 廣播地址或者IP多播地址,並且通常不期望從客戶端得到請求,廣播客戶端監聽地址但通常並不給伺服器發請求。一些廣播伺服器可能選擇對客戶端作出反應請求以及發出未經請求廣播消息;同時一些廣播客戶端可能會送請求僅為了確定在伺服器和客戶端之間的網路傳播延遲。
在單播方式下,客戶端和伺服器的IP 地址按常規被分配。在廣播方式下,伺服器使用一指定的IP播送地址或者IP多播地址,以及指明的媒介訪問播送地址,客戶端要在這些地址上幀聽。為此,IP 廣播地址將限制在一個單獨的IP子網范圍,因為路由器不傳播IP廣播數據報。就乙太網而論,例如,乙太網媒介訪問廣播地址(主機部分全部為1) 被用於表示IP廣播地址。
另一方面,IP 多播地址將廣播的潛在有效范圍擴展到整個網際網路。其真實范圍,組會員和路由由網際網路組管理協議(IGMP) 確定 [DEE89 ],對於各種路由協議,超出了這份資料的討論范圍。 就乙太網而論,例如,乙太網媒介訪問播送地址(全部為1)要和分配的224.0.1.1 的IP 多播地址合用。 除了IP 地址規范和IGMP,在伺服器操作IP廣播地址或者IP多播地址沒有什麼不同。
廣播客戶端幀聽廣播地址,例如在乙太網情況下主機地址全部為1的。就廣播地址的IP而論,沒有更進一步規定的必要了。在IP多組廣播情況下,主機可能需要實現IGMP,為的是讓本地路由器把消息攔截後送到224.0.1.1 多播組。這些考慮不屬於這份資料的討論范圍。
就當前指定的SNTP而論,其真正的弱點是多目廣播客戶端可能被一些行為不當或者敵對的在網際網路別處的SNTP/NTP 多播伺服器攻擊而癱瘓,因為目前全部這樣伺服器使用相同的IP 多播地址:224.0.1.1 組地址。 所以有必要,存取控制要基於那些以客戶端信任的伺服器源地址,即客戶端選擇僅僅為自己所知的伺服器。或者,按照慣列和非正式協議,全部NTP多播伺服器現在在每條消息內應包括已用MD5加密的加密位,以便客戶端確定消息沒有在傳輸中被修改。SNTP 客戶端能實現那些必要加密和密鑰分發計劃在原則上是可能的,但是這在SNTP被設計成的那些簡單的系統里不可能被考慮。
考慮到沒有一個完整的SNTP規范,故IP 廣播地址將使用在IP子網和區域網部分(指有完整功能的NTP伺服器和SNTP客戶端在同一子網上的區域網),而對於IP 多播地址來說,將只能用在為達到以上相同目而設計的特例中。尤其,只有伺服器實現了RFC 1305 描述的NTP認證時(包括支持MD5消息位的演算法),在SNTP 伺服器里的IP 多播地址才被使用。
3. NTP時間戳格式
sntp使用在RFC 1305 及其以前的版本所描述標准NTP時間戳的格式。與網際網路標准標准一致, NTP 數據被指定為整數或定點小數,位以big-endian風格從左邊0位或者高位計數。除非不這樣指定,全部數量都將設成unsigned的類型,並且可能用一個在bit0前的隱含0填充全部欄位寬度。
因為SNTP時間戳是重要的數據和用來描述協議主要產品的,一個專門的時間戳格式已經建立。 NTP用時間戳表示為一64 bits unsigned 定點數,以秒的形式從1900 年1月1 日的0:0:0算起。整數部分在前32位里,後32bits(seconds Fraction)用以表示秒以下的部分。在Seconds Fraction 部分,無意義的低位應該設置為0。這種格式把方便的多精度演算法和變換用於UDP/TIME 的表示(單位:秒),但使得轉化為ICMP的時間戳消息表示法(單位:毫秒)的過程變得復雜了。它代表的精度是大約是200 picoseconds,這應該足以滿足最高的要求了。
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Seconds |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Seconds Fraction (0-padded) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

注意,從1968 年起,最高有效位(整數部分的0 bit位) 已經被確定,64 位比特欄位在2036 年將溢出。 如果NTP或者SNTP在2036 年還在使用的話,一些外部方法將有必要用來調整與1900年及2036 年有關的時間 (136 年的其它倍數也一樣)。 用這樣的限制使時間戳數據變得很講究(要求合適的方法可容易地被找到)。從今以後每136 年,就會有200picosecond 的間隔,會被忽略掉,64 個比特欄位將全部置為0 ,按照慣列它將被解釋為一個無效的或者不可獲得的時間戳。
4. NTP 報文格式
NTP 和SNTP 是用戶數據報協議( UDP) 的客戶端 [POS80 ],而UDP自己是網際協議( IP) [DAR81 ] 的客戶端. IP 和UDP 報頭的結構在被引用的指定資料里描述,這里就不更進一步描述了。UDP的埠是123,UDP頭中的源斷口和目的斷口都是一樣的,保留的UDP頭如規范中所述。
以下是SNTP 報文格式的描述,它緊跟在IP 和UDP 報頭之後。SNTP的消息格式與RFC-1305中所描述的NTP格式是一致的,不同的地方是:一些SNTP的數據域已被風裝,也就是說已初始化為一些預定的值。NTP 消息的格式被顯示如下。
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|LI | VN |Mode | Stratum | Poll | Precision |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 根延遲 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 根差量 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 參考標識符 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| 參考時間戳(64) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| 原始時間戳(64) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| 接受時間戳 (64) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| 傳送時間戳(64) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| |
| 認證符(可

❸ 什麼是NTP協議

NTP:橘握Network Time Protocol

網路時間協議(NTP)是一種通過因森伍仿特網服務於計算機時鍾的時間同步協議。它提供了一種同步時間機制,能在龐大而復雜多樣的網際網路中用光速調整時間分配。它使用的是可返回時間設計,分布式子網內的時間伺服器,能自我組織操作、分層管理配置,經過有線或無線方式同步子網內的邏輯時鍾達到國家標准時間。此外,此纖通過本地路由選擇運演算法則及時間後台程序,伺服器可以重新分配標准時間。

❹ NTP網路時間伺服器的協議簡介

NTP協議全稱網路時間協議(Network Time Protocol)。謹念它的目的是在國際明晌薯互聯激者網上傳遞統一、標準的時間。具體的實現方案是在網路上指定若干時鍾源網站,為用戶提供授時服務,並且這些網站間應該能夠相互比對,提高准確度。

❺ 時間同步伺服器是什麼,有什麼具體授時功能

時間同步伺服器是一種高科技智能化、可獨立基於NTP/SNTP協議工作的時間伺服器,時間同步伺服器從GPS衛星上獲取標准時鍾信號信息,將這些信息在網路中傳輸,網路中需要時間信號的設備如計算機,控制器等設備就可以與標准時間源同步。標準的時鍾信息通過TCP/IP網路傳輸,DNTS系列還支持多種流行的時間發布協議,如time/UDP,並支持可設置的UDP埠的中新創科定義的時間廣播數據包。NTP和time/UDP的埠號分別固定於RFC-123和RFC-37指定的123和37。

隨著計算機應用的廣度和深度不斷加大,網路中的設備種類和業務類型越來越多,伺服器的數量也與日俱增。傳統上,各種伺服器、網路設備使用的時間都是由設備內部時鍾來提供的。由於伺服器、網路設備本身的時鍾誤差是不可避免的,盡管這種誤差每天不大,但經過一段時間的累積就會出現大的時間差,從而導致網路中各伺服器、網路設備的時間不一致。對於一些重要的行業來說,這種時間的不一致是致命的。基於以上考慮,網路中有必要部署NTP網路時間伺服器,使用GPS信號作為時間源,通過NTP協議對網路內的所有伺服器和網路設備的時間進行同步。

❻ 計算機的時鍾(一):NTP 協議

本系列文章主要介紹計算機系統中時鍾的處理。主要內容包含NTP,Lamport邏輯時鍾,向量時鍾,TrueTime等。本文是第一篇,介紹NTP協議。

不知道你注意過沒有,假如隔了好幾天打開你的電腦,任務欄的時間依然是顯示正確的,即使你的電腦沒有聯網,這是如何做到的?

計算機的主板上有一個石英晶體振盪器和一個紐扣電池。石英晶體振盪器的頻率是32768Hz每秒。在通電的時候,石英晶體每振動32768次,電路就會傳出信息,表示1秒鍾到了,通過這種方式來記錄時間。但是石英晶體會有誤差,正常情況下,每天的計時誤差在正負1秒鍾。而且在極端溫度下,比如零下二十度,誤差會變大。

正是因為石英晶體誤差比較大,所握枝以1985年特拉華大學的David L. Mills設計了網路時間協議NTP(Network Time Protocol)來同步不同計算機系統之間的時鍾。

NTP協議的目標是將所有計算機的時間同步到幾毫秒誤差內。實際上廣域網可以達到幾十毫秒的誤差,區域網誤差可以在1毫米內。NTP協議是一種主從式架構協議,使用分層的時鍾源系統,每一層稱為Stratum,階層的上限是15,階層16表示未同步設備。常見的階層如下:

參考(基準)時鍾,主要由高精度計時設備,比如銫或銣原子鍾、GPS時鍾、無線電時鍾。它們生成非常精確的脈沖信號,觸發計算機上的中斷和時間戳。

主時間伺服器,這些伺服器與階層0設備相連,在幾微秒誤差內同步系統時鍾。階層1伺服器之間可以互相連接,進行完整性檢查和備份。

這些計算機通過網路和階層1伺服器同步。每個計算機可以查詢多個階層1伺服器,階層2計算機之間也可以互相連接。

這些計算機與階層2的伺服器同步。

NTP協議的時鍾同步過程如下:

從上面的流程中可以很容易地計算出:

AB之間的網路往返時間RTT(Round Trip Time):δ = (T4 - T1) - (T3 - T2)

AB之間的時間偏移:θ = ( (T2 - T1) + (T3 - T4) ) / 2

推導過程:A從發送請求消息到收到響應的時間間隔是 T4 - T1,其中 T3 - T2 是B的處理時間,所以網路往返時間

δ = (T4 - T1) - (T3 - T2)。

假設A和B的時間偏差為θ,那麼 T3 - θ = T3`。

T4和T3` 的間隔是半個RTT:T4 - T3` = δ / 2

把T3`和δ代入上攜皮腔面這個等式,得到:θ = ( (T2 - T1) + (T3 - T4) ) / 2。

NTP協議使用UDP協議來傳輸,埠為123,報文格式如下:

各個欄位的含義如下:

NTP協議在廣域網可以達到幾十毫秒的誤差,區域網誤差可以在1毫米內。誤差最大的一個原因是發送請求和接收響應這兩個階段的網路時間可能是不一樣的。前面我們推導時間偏移公式的時候,假設網路往返發送和接收階段的時間是一樣的,但是實際網路中,這兩個階段走的路由可能是不一樣的,所花的時間也可能不一樣,計算的時間偏移也不準確,這樣就造成了廣域網的誤差可能達到幾十毫秒甚至更高。區域網中因為網路比較穩定,經過的路由器也比較少,所以誤辯衫差可以到1毫米內。

rfc5905

網路時間協議

NTP 協議簡單分析

閱讀全文

與網路的時鍾服務通過哪個協議實現相關的資料

熱點內容
換網線後路由器無法連接網路 瀏覽:422
網路營銷應注意的問題 瀏覽:603
蘋果手機網路設置怎麼修改 瀏覽:28
十大手機網路歌曲 瀏覽:781
戴爾游匣的無線網路開關 瀏覽:966
賬號信息驗證在哪個網路 瀏覽:68
手機軟體本地網路錯誤什麼意思 瀏覽:101
常用網路通信線路分幾類都有哪些 瀏覽:571
電腦不限速的網路怎麼設置 瀏覽:366
不帶蜂窩網路的蘋果手錶 瀏覽:572
不要網路的手機游戲視頻 瀏覽:999
電腦網路基本功能 瀏覽:374
電腦沒網找不到網路適配器 瀏覽:254
檢測小米6x手機提示網路異常 瀏覽:818
上海房產交易網路平台有哪些 瀏覽:579
電視如何搜索網路視頻 瀏覽:729
怎樣網路共享連接列印機 瀏覽:452
人多的地方沒有網路如何解決 瀏覽:203
計算機網路樹型最優壓縮編碼技術 瀏覽:371
番禺整合網路營銷培訓 瀏覽:262

友情鏈接