from __future__ import katryo

カリフォルニア州マウンテンビュー在住のソフトウェアエンジニアがいろいろ書きます。

マスタリングTCP/IP

前置き

ネットワークの知識を身につけようと思ってマスタリングTCP/IPを読んでる。こういう本はいちど通読しただけでは内容が頭に残らないので、何度も繰り返しページをめくっては文章を反芻している。

学んだ内容を文章にすると記憶に定着しやすい。誰かに教えるために、説明をアウトプットするのはさらによい。

ということで、今日読んだ内容のうち、特に重要そうな部分をブログに書き残すことにした。

なお、この記事の内容は僕の理解であり、間違っているかもしれない。もし「それちがうよー」と思ったかたはぜひコメントなどに書いてくださいお願いします。

この記事の内容をまとめると

IPアドレスの数字の意味

  • IPアドレスは192.168.123.10みたいなやつ
  • 0から255までの数字を4つ並べた形式
  • IPアドレスはネットワーク部とホスト部で構成されている

    • 192.168.128.10/24というIPアドレスなら、192.168.128がネットワーク部で10がホスト部
    • サブネットマスク(ネットワークプレフィクス)の記述により、どこがネットワーク部でどこがホスト部なのか判断できる
    • 192.168.128.10/24の例だと最後の24がサブネットマスク。「最初の3バイトがネットワーク部でその後の1バイトがホスト部」を意味する
    • 192.168.128.10/24は192.168.128.10/255.255.255.0 と表現することもできる。この表記のほうを僕はよく目にする。
    • 0.0.0.0/0はデフォルトルート。その機器が持っている経路制御表のなかのどのIPアドレスにもマッチしない経路。(このあたりどういう意味なのかよくわからない)
  • IPアドレスにはグローバルアドレスとプライベートアドレスがある

    • 192.168.xxx.xxxはプライベートアドレスであることを示している
    • 10.0.0.0や172.16.2.7などもプライベートアドレス。それぞれクラスAとクラスB。
    • プライベートアドレスはIPv4でのIPアドレス枯渇が原因。IPv4が策定されたときの予想以上にインターネットに繋がった機器(PS3も携帯電話もそのへんのサーバも繋がっている)が増えたため、機器のIPアドレスをすべてグローバルアドレスにすることが不可能になった。そこで、各家庭や企業のルーターにだけグローバルIPアドレスを与え、ルーターに繋がる機器にはプライベートIPアドレスを与えて運用するのが一般的になった。
    • プライベートIPアドレスを与えられている機器がインターネットを利用するときはNATという仕組みを使う
    • IPv6はまだ人類には早い

NAT

DHCP

  • Dynamic Host Configuration Procotol
  • 機器がネットワークに接続しただけでIPアドレスの設定が行われる仕組み
  • クライアント(機器)がネットワークに接続すると、クライアントはDHCP発見パケットをネットワーク内の機器に送る
    • ちなみにこのとき、クライアントにはまだIPアドレスが割り振られていない。そのため宛先アドレスは255.255.255.255で送信元アドレスは0.0.0.0となる。後者は「わからない」を意味する。
  • ネットワーク内のDHCPサーバはパケットを受け取ると、クライアントに使ってもよいネットワーク設定を送る。
  • 設定を受け取ったクライアントはDHCP要求パケットをもういちどネットワーク内の機器に送る。
  • それを受け取ったDHCPサーバは、最後にDHCP確認応答パケットを送る。これでようやくネットワークの設定が完了し、クライアントにIPアドレスが割り振られる。
  • DHCPリレーエージェントという方式もある

いまVirtualboxを使ってLinuxの学習をしているのだが、NATとDHCPの設定ではまってしまった。今後そういうことで無駄な時間を使わないためにも、ネットワーク関連の知識をちゃんと整理しておきたい。