基于STM32的SNTP授時(shí)服務(wù)器的研究與設(shè)計(jì)
2 SNTP協(xié)議分析
SNTP即簡(jiǎn)單網(wǎng)絡(luò)時(shí)間協(xié)議,它是一個(gè)用于局域網(wǎng)子網(wǎng)末端的時(shí)間同步協(xié)議,其要求在操作過(guò)程中只允許存在一個(gè)可靠的同步時(shí)鐘源,是
NTP協(xié)議的一個(gè)簡(jiǎn)化版本。
2.1 SNTP的同步原理
SNTP協(xié)議主要通過(guò)同步算法來(lái)交換時(shí)間服務(wù)器和客戶(hù)端的時(shí)間戳,從而估算出數(shù)據(jù)包在網(wǎng)絡(luò)上的往返延遲,進(jìn)而獨(dú)立地估算系統(tǒng)的時(shí)鐘偏差。它的時(shí)間同步原理的傳輸模型如圖2所示。
圖2中,T1為客戶(hù)方發(fā)送查詢(xún)請(qǐng)求時(shí)間(以客戶(hù)方時(shí)間系統(tǒng)為參照),T2為服務(wù)器收到查詢(xún)請(qǐng)求時(shí)間(以服務(wù)器時(shí)間系統(tǒng)為參照),T3為服務(wù)器回復(fù)時(shí)間信息包時(shí)間(以服務(wù)器時(shí)間系統(tǒng)為參照),T4為客戶(hù)方收到時(shí)間信息包時(shí)間(以客戶(hù)方時(shí)間系統(tǒng)為參照),D1為請(qǐng)求信息在網(wǎng)上傳播所消耗的時(shí)間,D2為回復(fù)信息在網(wǎng)上傳播所消耗的時(shí)間。假設(shè)請(qǐng)求和回復(fù)在網(wǎng)上的傳播時(shí)間相同,即:δ1=δ2,則可得出如下公式:
式中,θ為客戶(hù)端時(shí)間與標(biāo)準(zhǔn)時(shí)間之差,δ為信息在網(wǎng)上傳播的時(shí)間??梢钥吹?,θ、δ只與T2、T1的差值和T4、T3的差值相關(guān),而與T2、T3的差值無(wú)關(guān),即最終的結(jié)果與服務(wù)器處理請(qǐng)求所需的時(shí)間無(wú)關(guān)。據(jù)此,客戶(hù)端(CLIENT)即可通過(guò)T1、T2、T3、T4十算出的時(shí)差0去調(diào)整本地時(shí)鐘。
2.2 SNTP協(xié)議格式
SNTP消息一般封裝在UDP報(bào)文中,UDP的端口號(hào)是123,UDP頭中的源端口和目的端口是一樣的。SNTP消息緊跟在IP和UDP報(bào)頭之后,其協(xié)
議格式如圖3所示。
圖3中,U為跳躍指示器,可警告在當(dāng)月最后一天的最終時(shí)刻插入的迫近閨秒(閨秒)。VN表示版本號(hào)。Mode為模式,該字段包括以下值:
O(預(yù)留);1(對(duì)稱(chēng)行為);3(客戶(hù)機(jī));4(服務(wù)器);5(廣播);6(NTP控制信息)。Stratum用于對(duì)本地時(shí)鐘級(jí)別的整體識(shí)別。Poll表示有符號(hào)整
數(shù)表示連續(xù)信息間的最大間隔。Precision表示有符號(hào)整數(shù),表示本地時(shí)鐘精確度。Root Delay為有符號(hào)固定點(diǎn)序號(hào),表示主要參考源的總延遲,如很短時(shí)間內(nèi)的15到16間的分段點(diǎn)。Root Dispersion為無(wú)符號(hào)固定點(diǎn)序號(hào)表示相對(duì)于主要參考源的正常差錯(cuò),如很短時(shí)間內(nèi)的位15到16間的分段點(diǎn)。
評(píng)論