電子メールのやりとりやファイル転送など,われわれが日常的に使っているネットワーク・アプリケーションの多くは,「データが確実に相手まで届くこと」を第一に考えて作られている。

 そのための土台として使われているのがTCP(transmission control protocol)というプロトコルだ。TCPは,転送の途中でなくなったパケットを送り直したり,通信量を調整したり,パケットの順番を整えるといった機能を備えている。アプリケーションは,TCPに処理を任せていれば,信頼性の高いデータ通信を実現できる。

信頼性よりも軽快さを優先

 その一方で,世の中には通信の信頼性を確保するよりも「とにかくデータを素早くやりとりできること」を重視するアプリケーションが存在する。また,「なるべくサーバーに負担をかけずに通信できること」を要求するアプリケーションもある。こうしたアプリケーションには,TCPの利用が向いていなかったり,TCPが備える信頼性確保のしくみがかえって邪魔になることさえある。

 そこで登場するのがUDP(user datagram protocol)だ。UDPは,TCPの持つ信頼性確保のしくみをバッサリと切り捨てる代わりに,TCPよりも素早く通信できたり,通信処理にかかる負荷を減らせるようになっている。あまり意識することはないかもしれないが,UDPを利用するアプリケーションはTCPに負けず劣らず身のまわりでたくさん使われている。

 今回はこのUDPについて学んでいこう。UDPとはどんなプロトコルで,どこで何のために使われているのかを詳しく見ていく。UDPはとてもシンプルなプロトコルなので,UDPだけを単独で学んでも本質は理解しづらい。UDPを使うアプリケーションとセットで学ぶことで初めて本当の姿が見えてくる。

 まずLesson1では,UDPの概要を説明する。UDPがどんなプロトコルなのかを知ることで,いかに単純なプロトコルなのかがわかるだろう。UDPパケットの中身も併せてこのLesson1で見ておく。

 続くLesson2~4では,UDPの特徴をさらに掘り下げ,UDPを使うことによる具体的なメリットやデメリットを見ていく。

 Lesson2は,UDPの「軽さ」についての解説だ。UDPを理解するうえで「軽さ」はとても重要なキーワードである。TCPと比較することでその意味を浮き彫りにする。

 Lesson3では,UDPを使うアプリケーションのメカニズムを学習しよう。具体例を挙げて,UDPの代わりにアプリケーション自身が通信の信頼性を確保する様子を見る。

 最後のLesson4では,「UDPならでは」というアプリケーションにはどんなものがあるかを紹介しよう。

 修了テストでは,UDPの考え方としくみの理解度をチェックする。基本的な考え方から,実践で役立つ知識を問う問題まで幅広く用意したので,理解度をチェックするのに活用してほしい。