マスタリングTCP/IP
前置き
ネットワークの知識を身につけようと思ってマスタリングTCP/IPを読んでる。こういう本はいちど通読しただけでは内容が頭に残らないので、何度も繰り返しページをめくっては文章を反芻している。
学んだ内容を文章にすると記憶に定着しやすい。誰かに教えるために、説明をアウトプットするのはさらによい。
ということで、今日読んだ内容のうち、特に重要そうな部分をブログに書き残すことにした。
なお、この記事の内容は僕の理解であり、間違っているかもしれない。もし「それちがうよー」と思ったかたはぜひコメントなどに書いてくださいお願いします。
この記事の内容をまとめると
IPアドレスの数字の意味
- IPアドレスは192.168.123.10みたいなやつ
- 0から255までの数字を4つ並べた形式
-
- 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
- NATはプライベートIPアドレスをグローバルIPアドレスに変換する技術
- Network Address Translator
- ネットワーク上の機器がメッセージを送るときには送信元と送信先両方のIPアドレスを明記するが、NATは送信元あるいは送信先のIPアドレスを変換する。
- それだけだとグローバルIPアドレス枯渇問題を解決できていないが、NAPTという技術を使うことで、枯渇問題とIPアドレス変換を両方解決している。
- NAPT
- Network Address Port Translator
- IPアドレスだけでなく、ポート番号まで変換する技術
- グローバルIPアドレスが同一であってもポート番号が異なっていれば同一の通信だとはみなされない。よって、同じグローバルIPアドレスを使い回せるので枯渇問題を解決できている。
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の設定ではまってしまった。今後そういうことで無駄な時間を使わないためにも、ネットワーク関連の知識をちゃんと整理しておきたい。