とある京大生の作業ログと日々の雑記

コンピュータサイエンスについて学んだことを可視化したり日々の雑記をまとめてます。

タネンバーム先生のコンピュータネットワークの書評

こんにちは、コミさん(@komi_edtr_1230)です。




前回は3週間くらい前にPRMLの書評を書いて、意外といろんな人に読んでもらって感謝ですね。




まあそれで「自分もPRMLを読んでみよう」と思ってくれた人もだいぶいたようで、前回PRMLのレビューを書いたのは割と意味があったのかなぁなんて思ったり。




個人的にはPRMLよりもカステラ本を読んだ方がいいんじゃねって思ってる感じもあるんですけど....




とりあえずPRMLとカステラ本についてはここらへんにしておいて、さっさとタネンバーム先生のコンピュータネットワークのレビューに入りましょう。



読み始めたきっかけ






前回PRMLを読み終えたあと次に何を読むか決めてなかったんですよね。




で、なんとなくScalaを使ってWebアプリ的なやつを作ろうかなって思ってWebフレームワークを触ってたんですけど、そのときふと




「あれ?俺Web系とかネットワークについての知識なくね?フレームワークの裏で何が起きてんのこれ」




ってなったんですよね。




それで今回ネットワークの勉強を一度しっかりやっておくべきかなぁって思って、無料で手に入るPDFを探ってるうちにコレを見つけて今回コンピュータネットワークに手を出したわけですね。




まああと他の理由としてはネットワークセキュリティについてのお気持ちを知りたかったってのも一つですね。



全体の感想






てかぼくがツイッターとかでこの本について言及するとき「タネンバーム先生のコンピュータネットワーク」って言ってたんですけど、なんかいい略称とかないんですかね....?




『統計的機械学習の基礎』がカステラ本と呼ばれ、『パターン認識機械学習』がPRMLと呼ばれるように、いわゆる名著にはあだ名が存在するんですけど、コレもなんかあだ名があるべきだと思うんだよなぁ....




まあ呼び方は置いといて、今回読んでの感想は




ネットワークの歴史の教科書




という感じですね。




というのも、ネットワークのいろんなプロトコルが出てくるんだけど「初期の提案モデルがどのような感じで、それが時間を経てどんな問題が提起されてどう改善されたか」って感じの解説をOSIモデルの各層に応じて説明していくので、ネットワークのアーキテクチャを解説するよりもネットワークの発達の歴史を見るようなイメージが強かったです。




全体の量としては900ページ近くあったんですけど、いつも通り1日10時間くらいかけて3週間くらいでなんとか読みきりました(土日は旅行に出かけたりしてたので少し時間がかかってしまった、反省....)




それでは各章の感想を。



第1章






イントロの章で、ネットワークについて概観する感じ。




具体的に、ネットワークをソフトウェアとして見たときやハードウェアとして見たときどのように見えるかについて言及し、そこからOSIモデルやTCP/IPモデルとしての見方できる、という滑らかな説明をします。




そういう見方を提示しつつ、具体的なネットワーク構造としてワイヤレスLANについて取り上げ、最終的に通信とはどういうことかというのを説明する感じですね。




まあここら辺に関しては一般教養みたいなところがあるのでそんなしっかり読み込まなくてもみんな常識として知ってるレベルだと思う。



第2章






物理層についての章。




ネットワークでの通信においてビットがどのような物理的アーキテクチャを通して伝達されるのかを様々なケースに応じて解説するというもの。




内容はコンピュータの通信から電話の通信を取り上げ、有線ネットワークや無線ネットワークを取り上げます。




意外と知らなかった物理層でのアーキテクチャだったのでこの章を読んで多少は満足。




ただ、そこまでハード面については興味はなかったので少し読むのが辛かったかも....



第3章






データリンク層についての章。




物理層で送受信するビット列をどのようにデータ破損することなく伝達するかということに重きを置いて解説する章ですね。




生のビット列に対してどのように情報を付加して破損した場合のリカバリーをするか、などを様々なプロトコルを用いて解説します。




途中でハミング符号などの符号理論についての解説も入り、量としてはそこまでだけど学ぶ量は非常に多かった章でした。



第4章






MAC(Medium Access Control)についての章。




2, 3章で物理層データリンク層を解説した上で、実際にどんな通信が現実で用いられてるかをざざっと解説していきます。




出てくるのはイーサネットやワイヤレスLAN、Blutoothなどで、様々な通信規格が紹介されていきます。




各通信方法がそれぞれどんなメリットがあるのかなどがわかるので面白かったですね。



第5章






ネットワーク層についての解説。




この章は通信においての通信経路などについて解説したもので、少しグラフ理論的な感じですね。




もちろんダイクストラ法も登場して実際に実装します。




こうした経路的な話以外にも通信の混雑回避プロトコルなども見ていきます。




この章はIPについての解説がめちゃくちゃギッシリしてて(IPv4IPv6をちゃんと解説している)、本当にページ数が多くて読むのが大変でした....



第6章






トランスポート層についての章で、第5章がIPの章だとしたらこの章はTCPの章です。




主に通信パフォーマンスについて議論していて、通信強度や通信速度などの通信自体のクオリティを上げるためのプロトコルを見ていきます。




この章は....うん.....TCPすごいなぁって.....(理解しきれた自信がなくて不安)



第7章






アプリケーション層についての章。




コンピュータネットワークにおいて、ある意味で1番花形かもしれませんね。




具体的に、DNSでの名前空間の説明から始まり、そこからHTTPやHTML・CSSJavaScriptPHPなどのWebの話がたくさん展開されます。




もちろんWWWについての解説もしますよ(これは草を生やしてるわけではないです、World Wide Webのことです)




非常に馴染みのある内容ながらも今まで体系的に学んだことがなかったので、今回この章を読んでネットワークへの景色が非常に良くなったような気がします。



第8章






ネットワークセキュリティの章。




主にネットワーク上での暗号(RSAなど)や電子署名などの話で、ここはEPFLの授業ですでに勉強したところなので軽く流し読みしました。




ただ、内容に関して暗号は少し浅いような感じがして、対照鍵や公開鍵などの暗号に関しては他の本で勉強した方がいいと思います(少しあっさりしすぎ感がある)




それ以外にもEmailのセキュリティなどもあっさりしすぎている感があるので、Security Engineeringなどのセキュリティ専門の本を参照する方がいいかと....



まとめ






ということで今回タネンバーム先生のコンピュータネットワークを読みきりました。




読むのにめちゃくちゃ時間かかっちゃったけど、これでネットワークについて多少は知識がついたと思えるし少し自信がつきましたね。



これから






今回ネットワークについての知識がついたけど具体的な鯖立てなどについてはまだよくわかってないので、それについてはまた別の本を参照したりEPFLの授業資料を見ながらTCP/IPの勉強をしようと思います。




また、セキュリティについてはSecurity Engineeringという本を読もうと思うので、明日以降はその本に取り組むことになるかなぁって感じですね。




あ、あとカステラ本をしっかり読み通さなければ....




というような感じでまだまだ勉強したいことがたくさんあるのでしばらくは暇ではなくなりそうです(めっちゃ楽しみ)




それではお疲れ様でした!