ソースコードで体感するネットワークの仕組み
~手を動かしながら基礎からTCP/IPの実装までがわかる

この本の概要

普段あたりまえのようにネットワークを使っていますが,「IPアドレスを持っている」とはどういったことか,本当に理解できているでしょうか。本書では,IPやUDP,TCPを自作し,ネットワークの仕組みを体験。pingのやりとりを行うプログラムを,DHCPクライアント機能の実装,TCPの送受信と切断を行うものへと拡張していくことで,RFCを眺めるだけでは見えにくいプロトコルの全体の流れをつかめます。ソケットライブラリに頼っていては得られない,問題の切り分けや問題発生の予防に役立つ力も身につきます。

こんな方におすすめ

  • ネットワークエンジニア

著者の一言

誰もが,PCにネットワークケーブルを挿して,スイッチングHUBに接続,あるいは,スマートフォンをWi-Fi接続するとインターネットが使えるようになるのは「あたりまえ」だと感じていると思います。しかし,インターネットでの通信の基本である「IPアドレスを持っていること」とはどういう状態なのか?と聞かれてさっと答えられる人は意外と少ないのではないでしょうか。

LANやインターネットの基本となっているイーサネットでは,MACアドレスを宛先として通信を行います。それだけでは不便なのでIPが存在し,今どきの多くのネットワーク機器はIPアドレスをあて先として通信を行っている,というイメージを持っている方は多いでしょう。しかし,それを本当にきちんと理解できているでしょうか。

本書では,IPの下で使われているUDPやTCPといったネットワークの仕組みを,実際にプログラムを作って体験してみます。特にTCPに関しては,「よくわからないけれど,ソケットライブラリを使ってconnectしてsendすればデータが送信でき,recvすれば受信できる」と考えている人が多いと思いますので,自力で3ウェイハンドシェークしたり,シーケンス番号を管理して再送制御したりするプログラムを作って,TCPの基本を体験してみます。

前著『ルーター自作でわかるパケットの流れ』では,イーサネットフレームを自分で中継しながらIPを理解してみましたが,「なにもルーターじゃなくても……」とか「もっと簡単な例で体験するほうが良いのでは?」という意見をいただき,「いっそのことIPや UDP,TCPの仕組みを自作すれば根本からわかるだろう」と考えました。どんどん仕様が追加されてきた現在のTCPの仕組みを全て作ってみるのは大変ですが,拡張機能を使わずに基本部分だけでも十分通信はできます。これらのプログラムが実務で役に立つかどうかは別として(もちろん,役に立つケースはあるのですが),作って体験してみた人の理解は,ただRFCを眺めただけの人に比べれば断然深いものになることでしょう。

誰でも簡単に作って動かしてみることができるのがプログラミングの良いところです。「百聞は一見にしかず」プログラムを動かして様子を見てみるのが一番です!

この書籍に関連する記事があります!

「わかったつもり」になっていませんか?
今や私たちは,ネットワークに接続しない日はありません。しかし,あたりまえのように接続しているネットワークの仕組みについて,あいまいな知識しか持っていない人もいることでしょう。

著者プロフィール

小俣光之(こまたみつゆき)

日本シー・エー・ディー株式会社 代表取締役社長。
1989 年新卒で入社後,プログラマとして仕事を続け,2005 年11月から社長となるがプログラマも兼務している。社長としての仕事の割合が年々増える中,ProDHCPやネットワーク関連の新製品開発などネットワークプログラミングだけは続けている。
プログラミング関連の著書を『ルーター自作でわかるパケットの流れ』(技術評論社)など8冊執筆し,プログラマの仕事の素晴らしさを伝えるべく読み物も4冊執筆。『プログラムは技術だけでは動かない』(技術評論社)に続き,本書は13冊目の著書となる。

ブログ:オルタナティブ・ブログ