shugo's kitchen

コンピュータサイエンスを美味しく調理していきたい

マスタリングTCP/IP 入門編 読書メモ 【第1章 前半】

[tex: ]

学科のネットワークの講義がう◯ちだったので自分で勉強してみようということになりました。 だいたい節ごとで気になったところ/勉強になったところを列挙していくスタイルでいきます。 今回は第1章ですが、この章は長めなので1.5節までを一区切りとして分けたいと思います。

元書籍→マスタリングTCP/IP

↓ここに各章のリンクを貼っていく(1章は長すぎるので二つに分けます)

導入

  • もともとコンピュータは単体で独立に使われていた(スタンドアロン)が、ネットワークで繋げてみんなで色々共有したほうがよくね?という話
  • ネットワークの規模に応じてWAN,LANなどの呼称がある
    • WAN(Wide Area Network) : 地理的に離れた広範囲に及ぶネットワーク
    • LAN(Local Area Network) : フロア内、1つの建物、キャンパス内など比較的狭い範囲内でのネットワーク

プロトコルとは

  • コンピュータ同士が通信する時に必要な約束事で、これによって異なるCPU、OSを持つコンピュータ間でもプロトコルが同じなら通信ができるというもの
  • 様々なプロトコルを体系的にまとめたものをネットワークアーキテクチャといい、本書のタイトルにもあるTCP/IPはその一種らしい (知らんかった...)
  • 大きなデータは小さなパケット(小包)ごとに分けて送信するというのが一般的だが、そのヘッダ(荷札)部分の情報がプロトコルによって書き込まれ、処理される (p17図1.14参照)
  • 昔はメーカーごとに互換性のないプロトコルが使用されていたが、今では標準化され、TCP/IP業界標準となっているらしい

プロトコルの階層化

  • 通信に必要な機能を複数の階層に分け、ネットワークプロトコルの単純化を図る
  • 異なる階層同士のやり取りの規則をインターフェース、通信相手の階層とのやり取りの規則をプロトコルという(p20図1.16参照)
  • 利点としてある一つの階層を変更してもシステム全体には影響を及ぼさないので、拡張性、柔軟性が生まれる点(ソフトウェアでいうモジュールみたいなイメージ)
  • 欠点としてはモジュール化をやりすぎると重くなったり、処理が被る層が出てくるという点
    • 要するにやりすぎはダメ!
  • p20の会話の例がわかりやすいかもしれない

OSI参照モデル

  • パケット通信における階層を7つに分け、各層のおおよその役割を定めるモデル
  • 多くの通信プロトコルはこれに当てはめて考えることができる
  • 基本的にデータの流れは 送信側の上位層->下位層->受信側の下位層->上位層 のようになっている(p26図1.20)
アプリケーション層
  • 用いるアプリケーションの中で通信に関係する部分を定めている(ファイル転送, メール, 遠隔ログイン, etc...)
    • つまりアプリケーションに特化
  • 電子メールで言えば、送信側では電子メールの本文に宛先などの情報を含むヘッダをつけて発送し、受信側ではその情報を解析してメールの内容を主記憶に保存するなどする
    • メールの保存領域が足りない時などといったアプリケーション固有のエラー処理もここが担う
プレゼンテーション層
  • ハード固有のデータのフォーマットと、ネットワーク全体で共通のデータのフォーマットとを相互に変換する
  • 電子メールで言えば、文字列をネットワークで統一されたフォーマット(ex: UTF-8, Shift_JS, etc..)に符号化した上で送り出し、受け取る側はそれを受け取る側のハード固有のフォーマットを用いて保存するなり表示するなりする
    • メールの文字化けはこのプレゼンテーション層の設定がミスっているという原因が考えられる
セッション層
  • コネクションをいつ何個確立するか、切断するかや、データをどのような順番で送れば良いかなどといったことを定める
    • ここでデータの送信手順に関するタグやヘッダがつけられる
  • 電子メールで言えば、メールをどういう順番で、いくつコネクションを使ってお届けするかということ
トランスポート層
  • データが抜けることなく確実に相手に届いていることを保証する
    • 通信の両端でデータがきちんと届いたかの確認をし、届いていない場合は再送する
  • セッション層で決めたコネクションの確立/切断のタイミングで実際にそれらを行う
  • 電子メールの場合例えば「こんにちは」のうち「こん」しか届いてない場合、「足りなくね?」と問い合わせて「にちは」も送らせる
    • あくまで予想だが、この層でヘッダにデータの順番通りにidをふっておいて抜けがあったらわかるようにしている?
ネットワーク層
  • 宛先のアドレスを元に到達経路を選択し、配達する
    • 上位層から渡されたデータにアドレスや経路の情報を付加してデータリンク層に渡す
  • 送受信ホスト間が直接つながっていない場合、間にルータを介して通信することになるが、その場合もこの層はエンドツーエンドで全体を司る
  • 直下の層であるデータリンク層が一つ先のルータまでの通信を実現する
  • トランスポート層がデータの到達性を保証してくれるので、ここではそれを気にしなくて良い(階層化のうまみ)
データリンク層
  • 物理層で直接的につながっているノード間での通信を可能にする
  • データフレーム(ビット列の意味のある塊)の生成、識別
物理層
  • ビット列と物理現象(電圧のhigh/low, 光のパルス, etc...)の相互変換を行い、物理的通信媒体に流し込んだり受け取ったりする



次回→

shugo256.hatenablog.com