UDPの特徴
UDP はクライアントのアプリケーションとサーバのアプリケーション間でのデータのやり取りを規定するだけのシンプルな構成となっています。
そのため、負荷が軽いですがやフロー制御や輻輳制御といった、信頼性や通信の効率性を提供する機能はありません。
シーケンス番号なども無いため、パケットの到着の順番が入れ替わっても UDP レベルでは認識できません。
VoIP 等のリアルタイムアプリケーションにおいては、順番が変わると影響があるため、UDP の上位のレイヤー (例えば RTP) で順番の確認をすることがあります。
UDP のフォーマット
UDP の通信データ単位は TCP と同様、"セグメント"と呼ぶことが多く、ここでもそれに倣うことにします。
以下に UDP セグメントのフォーマットを示します。UDP は IPv4 の上位レイヤーとして使う場合、IPv4 のプロトコルフィールドに Ox11 (10進数:17) を指定します。
送信元ポート Field
16 bit。送信元で利用するポート番号が入ります。
送信元がクライアントの場合、多くのシーンで 1024 以上の Higher Port と呼ばれるポート群から適当なものが利用されます。
宛先ポートField
16 bit。宛先で利用するポート番号が入ります。
宛先がサーバの場合、サービスに応じたポート番号になります。例えば、TFTP サーバへの通信であれば 69、NTP サーバへの通信であれば 123 が入ります。
セグメント長Field
16 bit。UDP ヘッダと UDP データ領域の長さを Byte 単位で示します。
チェックサムField
16 bit。この Field では UDP ヘッダ、UDP データだけでなく、送信元 IP アドレス、宛先 IP アドレス、プロトコル番号 (Ox11)、 UDP セグメント長も検査されます。
TCP の信頼性のチェックサム と同じように、同じ擬似 IP ヘッダを使い、同じ方法で計算されます。
nesukeの推薦図書
以下に該当する人なら熟読することを強く推奨します。
- 周りのネットワークエンジニアよりも一歩抜き出た存在となり、価値を高めたい!
- サーバエンジニアだけどネットワークも含めた総合的なセキュリティへの理解も深めていきたい!
コメント