ネットワーク関係はいったん完結させたのですがちょったやって見たいことがあるので再び。
いままでのプログラムはサーバとして動作してクライアントからのコマンドに対して
レスポンスを返すものでしたが、こんどはクライアントとして動作させてみます。
で何をやるかと言うと、外部のNTP(ネットワークタイムプロトコル)サーバに接続して
正確な時間を取得してみようということです。
ここでポイントになるのが
・NTPの実装
・外部ネットワークへの接続
となります。
NTPについて調べると
『UDPでポート123番にリクエストをかければよい』とあります。
まず、どこのNTPサーバに接続するかですが、検索してみると
「インターネットマルチフィード時刻提供サービス」ntp2.jst.mfeed.ad.jp というのが
一般的みたいです。フォーマットにしたがってUDPデータグラムにコマンドを組み立て、
現状のV53ボードにはDNS機能が無いので直接IPアドレス(210.173.160.57) に対し
UDPデータ出力したところ、いとも簡単にレスポンスが返ってきました
パケットモニタで見てみると懸案の外部ネットワークへの接続も先ず、
クライアントがゲートウェイになるルータに対してARPを掛けて、
返ってきたゲートウェイのMACアドレスに対してNTPのIPアドレスでパケットを送っています。
ここらへんは下位プロトコルがきちんとやっていて、結果を見てああなるほど・・という感じです