本文へスキップ
BecomeCoder
ブログ一覧Wikiコース一覧

ネットワークの勉強は何から?TCP/IPがわからない人のための学習順序

#ネットワーク#TCP/IP#独学#学習順序#初心者

結論:ネットワークは「IPアドレス(住所)→ ポート(部屋番号)→ TCP/IP(層の地図)→ DNS(名前とIPの対応)→ HTTP(Webの作法)」の順に、1つずつコマンドで確かめながら進めるのが最短です。 用語集や階層図を最初から丸暗記しようとすると、ほぼ確実に挫折します。理由は単純で、ネットワークは目に見えないぶん、「打って、返ってきたものを読む」以外に実感を得る方法がないからです。

なぜ図と用語だけでは頭に入らないのか

ネットワークの入門書を開くと、最初に「OSI参照モデル7層」や「TCP/IP 4層」の図が出てきます。ところが、この図をどれだけ眺めても「で、結局データはどう届くのか」は腹落ちしません。

原因は3つあります。

  1. 抽象度が高すぎる。「トランスポート層は信頼性を担保する」と言われても、信頼性が無い状態を見たことがなければ比較できません。
  2. 確かめる手段を持っていない。プログラミングなら書いたコードが動くかで答え合わせができますが、ネットワークは自分のPCの中で完結しないため、初心者は検証手段そのものを持っていません。
  3. 用語が相互に依存している。「ポート」の説明に「プロトコル」が要り、「プロトコル」の説明に「層」が要る。どこから読んでも前提知識が足りません。

だから順序が効きます。後ろの用語を使わずに説明できるものから順に並べれば、依存関係の輪が切れて、1つずつ確定させながら進めるようになります。

Become-Coderのネットワークコースは全13レッスンで、このうち9レッスンがブラウザ内のシミュレートシェルで実際にコマンドを打てる構成です。サーバーを借りる必要も、仮想マシンを立てる必要もありません。無料・登録不要で、いま開いているブラウザの中で ping や dig が打てます。

学習順序と、その順番にする理由

1. IPアドレス ― 「住所」から始める

最初に確定させるべきは「通信する相手には必ず住所がある」という一点です。IPアドレスは 192.168.0.1 のように0〜255の数字を4つ並べた番号で、これがないとデータの届け先が決まりません。

ここで同時に押さえたいのがグローバルIPとプライベートIPの区別(世界に1つの住所か、社内・家庭の中だけの住所か)と、127.0.0.1(自分自身=localhost)という特別な住所です。この3点だけで、後の話の8割が読めるようになります。サブネットの /24 も同じ段階で理解できます。「先頭24ビットまでが町名、残りが番地」という区切りの話なので、計算より先に何を区切っているのかを掴みます。

まずは 「ネットワークとIPアドレス ― サーバーの住所」 を読んでください。ここは図解中心の読み物回です。用語の定義だけ確認したいならIPアドレスの用語ページやサブネット、CIDRも用意しています。

2. ポートとプロトコル ― 住所だけでは足りない理由

住所が分かっても、まだ足りません。1台のサーバーはWebもメールもデータベースも同時に提供できるからです。届いたデータを「どのサービス宛てか」で仕分ける番号がポート(建物の部屋番号)、やりとりの作法の取り決めがプロトコルです。

22番はSSH、80番はHTTP、443番はHTTPS——このあたりのウェルノウンポートは、暗記というより「後で ss コマンドで実際に開いている番号を見る」ときに意味が立ち上がります。TCP(確認しながら確実に運ぶ)とUDP(確認せず速く送る)の違いも、ここで一緒に押さえます。

詳しくは 「ポートとプロトコル ― 1台で複数のサービスを出し分ける」 を参照してください。用語だけならポート・プロトコルのページもあります。

3. TCP/IP ― ここで初めて「層」の地図を見る

住所(IP)と部屋番号(ポート)を先に確定させておくと、階層モデルは急に読みやすくなります。アプリケーション層(本文)/トランスポート層(封筒とポート)/インターネット層(住所)/ネットワーク層(配達手段)という4層は、すでに知っている言葉の置き場所を整理しているだけだからです。

そして層の地図には実用的な価値があります。トラブルは下の層から順に切り分けるという原則が導けるのです。

この切り分けができるかどうかが、現場での「調べられる人/固まる人」の分岐点になります。「TCP/IP ― データが届くまで(階層モデル)」 と、用語ページのTCP/IPを参照してください。

4. 自分の住所を見る ― ip コマンド

ここからは手を動かす段階です。ネットワークの調査は、たいてい「自分の住所の確認」から始まります。「ip ― 自分のサーバーのアドレスを見る」 では ip a をブラウザ内のシェルにそのまま打ち込めます。抽象的だったIPアドレスが、自分の環境の具体的な数字として画面に出た瞬間、理解の質が変わります。

5. 届くか確かめる ― ping

「サーバーにつながらない」というとき最初に打つのが ping です。相手へ小さなデータを送り、返ってくるかどうかで通信が届いているかを確かめます。「ping ― 相手に届くか確かめる」 で実際に打てます。第3章のタイトルが「つながりを確かめる」であるとおり、ここがトラブルシューティングの入口です。

6. 名前をIPに変える ― DNS と dig

私たちは数字の羅列ではなく example.com のような名前でアクセスします。この「名前 → IPアドレス」の変換を担うのがDNSです。仕組みの説明を読むより、「DNS ― 名前からIPアドレスを引く」 で dig example.com を打って、名前に対してIPアドレスが返ってくるのを1回見るほうが早いです。用語の整理はDNSのページにあります。

7. 開いている窓口を見る ― ss / netstat

ここまでは「外へ問い合わせる」側でした。次は自分のサーバーを内側から見て、「今どのポートで待ち受けているか」を調べます。「netstat と ss ― 開いているポートを見る」 で ss -tuln を打つと、レッスン2で覚えたポート番号が実際のリストとして目の前に並びます。知識と現物が結びつく回なので飛ばさないでください。

8. Webの作法 ― HTTP と curl

最後がHTTPです。ブラウザが裏で何をしているのかを、コマンドで自分の手で再現します。「HTTP と curl ― Webサーバーと話す」 で curl -I http://becomecoder のようにリクエストを送り、ステータス行やヘッダーが返ってくるのを確認します。ここまで来ると、Web開発で見る「404」「200」「Content-Type」といった言葉が、全部この延長線上にあると分かります。用語はHTTPとHTTPSのページに整理しています。

9. 通す/落とすを決める ― ファイアウォール

余力があれば第5章「ネットワークを守る」まで進みましょう。「ファイアウォールの考え方 ― 通す/落とすの関所」 で考え方を掴み、「iptables -A / -D ― ポートを閉じる・開ける」 で実際にルールを開け閉めできます。「必要なポートだけ開ける」という発想は、クラウドのセキュリティグループにもそのまま繋がります(ファイアウォールの用語ページ)。

コマンドで「見る」ことが、なぜ理解の近道なのか

ネットワークの学習が特殊なのは、正解が返ってくること自体が教材になる点です。dig を打てば名前とIPの対応が返り、ss を打てば開いているポートが返り、curl を打てばHTTPの応答が返ります。教科書の抽象概念に対して、その場で実物を1つ突きつけられるわけです。コマンドを打たない学習は「歩かずに地図だけ読んでいる」状態に近く、地図が正確でも道は覚えられません。

つまずきやすいところ

資格の勉強と並行している人へ

基本情報技術者試験やAWS認定など、ネットワークが試験範囲に入る資格を勉強している人にとって、この順序はそのまま得点力になります。サブネット、DNS、ポート番号、TCP/UDPの違いは頻出テーマですが、手を動かした記憶があるかどうかで選択肢の絞り込み速度がまったく変わります。

「参考書の用語が抽象的で頭に入らない」と感じているなら、該当分野のレッスンを1つ打ってから参考書に戻ってみてください。試験対策と学習順序の組み合わせ方は 基本情報技術者試験のプログラミング対策 にもまとめています。

次に読む

← ブログ一覧に戻る