神保町の本屋さんを散歩していたら、良さげな本を見つけました。
技術評論社の
「Javaネットワークプログラミング 基礎からわかる完全入門」
という本です。
http://www.gihyo.co.jp/books/syoseki-contents.php/4-7741-2168-1
Javaの場合、UNIXのソケットプログラミングやWindowsの
Winsockプログラミングと比べると、煩雑な部分がかなり
隠蔽されています。アドレス設定の際にhostent構造体を
意識することはありません。サーバー側のソケット作成は
とりわけ簡便になっていて、ServerSocketを使っていれば
bind()やらaccept()やらをコールする必要もありません。
元々ネットワークを意識して設計されているので、当然と
言えば当然なのですが、それ故にHTTPやSMTPなどを使った
アプリケーションを開発している際、水面下で起きている
ネットワークレベルの動きを理解しないまま済ませてしまう
というある種の弊害も生じてきます。
普通にコーディングし、それがうまく動いている時は何ら
問題ないのですが、いざトラブルが起きた時はプロトコル
レベルでの知識が必要になります。例えば「文字化け」が
発生してしまった場合にはHTTPでもSMTPでもヘッダ情報
(Content-Type)を直接確認する必要が出てきたりします。
或いはWEBページで「NetScapeで閲覧した時にだけ何故か
変な表示が出てくる」ということで調べてみると、ページ
のリダイレクト(ステータスコード30X)が関係していたり
といったこともあったりします。いずれの場合もある程度
プロトコルを理解していないと対処が難しくなってきます。
だからといって、ネットワークの専門家が読むような本と
格闘するわけにも行きません。アプリケーションの開発を
本業とする若手エンジニアがJavaプログラミングと絡めた
形でササッと勉強してもらうための本がなかなかないので
苦労していたのですが、上記の本はその目的にはピッタリ
です。
インターネットやTCP/IPの歴史的な経緯に簡単に触れた後
パケットフォーマットの丁寧な説明があり、それに続いて
HTTP、SMTP、FTP、POP3といった主要なプロトコルの詳細
な解説がサンプルコードと共にやさしく記述されています。
「若手エンジニアにプログラムコードの水面下で動いている
ネットワーク層の仕組みを一度整理して身につけて欲しい」
というニーズには最適の一冊だと思います。