CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

NTP実装(1)

イメージ 1

ネットワーク関係はいったん完結させたのですがちょったやって見たいことがあるので再び。
いままでのプログラムはサーバとして動作してクライアントからのコマンドに対して
レスポンスを返すものでしたが、こんどはクライアントとして動作させてみます。

で何をやるかと言うと、外部のNTP(ネットワークタイムプロトコル)サーバに接続して
正確な時間を取得してみようということです。
ここでポイントになるのが
・NTPの実装
・外部ネットワークへの接続
となります。

NTPについて調べると
UDPでポート123番にリクエストをかければよい』とあります。
まず、どこのNTPサーバに接続するかですが、検索してみると
「インターネットマルチフィード時刻提供サービス」ntp2.jst.mfeed.ad.jp というのが
一般的みたいです。フォーマットにしたがってUDPデータグラムにコマンドを組み立て、
現状のV53ボードにはDNS機能が無いので直接IPアドレス(210.173.160.57) に対し
UDPデータ出力したところ、いとも簡単にレスポンスが返ってきました

パケットモニタで見てみると懸案の外部ネットワークへの接続も先ず、
クライアントがゲートウェイになるルータに対してARPを掛けて、
返ってきたゲートウェイMACアドレスに対してNTPのIPアドレスでパケットを送っています。
ここらへんは下位プロトコルがきちんとやっていて、結果を見てああなるほど・・という感じです