Linux入門:コマンド操作のきほん
ネットワークの基礎知識
このレッスンで分かること
- TCP/IP は 4 層 (アプリ / トランスポート / ネットワーク / リンク) で構成されます
- IP + ポート でサービスを特定、DNS でホスト名 → IP を解決します
- 現代は
ip/ssを使い、旧来のifconfig/netstatは非推奨
ネットワークの基礎知識 とは
ネットワークの基礎知識を習得します。IPアドレスやポート番号などを学びましょう。本レッスンでは、ネットワークの基礎知識 の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。
なぜ Linux でネットワークを学ぶのか
現代のサーバーはほぼすべてネットワーク経由で操作され、サービスもネットワーク越しに提供されます。Web サーバーが API リクエストを受ける、データベースが裏側で通信する、CI からデプロイ先にファイルを送る、ローカル開発機から本番のログを取り寄せる。これらすべてが TCP/IP というプロトコルの上で動いており、Linux はこの世界で最もよく使われている OS です。
アプリ開発者であってもネットワークの基本を理解しておくと、トラブルが起きたときに切り分けが圧倒的に速くなります。たとえば 「ブラウザから API が見えない」場合、原因はクライアント側 (DNS, JS) なのか、ネットワーク経路 (firewall, ルーティング) なのか、サーバー側 (プロセスが落ちている、ポートが違う) なのかを順に確認する必要があります。本章ではその下地となるコマンド群を扱います。
TCP/IP のレイヤを整理する
ネットワークは何枚もの層に分けて考えるのが伝統で、有名なのが OSI 参照モデルです。実務で頻繁に登場するのは 4 層程度です。
| レイヤ | 役割 | 代表例 |
|---|---|---|
| アプリケーション層 | サービスごとの約束事 | HTTP, HTTPS, SSH, DNS |
| トランスポート層 | エンド間の通信品質 | TCP, UDP |
| ネットワーク層 | 経路選択 (ルーティング) | IP, ICMP |
| リンク層 | 物理的な配線とフレーム送出 | Ethernet, Wi-Fi |
下位レイヤがその上のレイヤを支え、各層は隣の層としか会話しないというのが基本ルールです。curl https://example.com を打つと、内部では HTTP → TCP → IP → Ethernet の順にデータが包まれ、相手のサーバー側で逆順に解体されます。
ホスト名と IP アドレス
通信相手を特定する番号が IP アドレスです。IPv4 では 192.0.2.1 のような 4 つの整数、IPv6 では 2001:db8::1 のような 16 進数表現を使います。人間が覚えるのは大変なので、example.com のようなホスト名を DNS で IP アドレスに変換します。
ターミナル
getent hosts example.com
# 93.184.216.34 example.comgetent は名前解決の標準的なツールで、/etc/hosts や DNS サーバーの結果をまとめて返します。古い nslookup や host も同じ目的で使えます。dig を使うとさらに詳細な DNS レスポンスを確認できます。
ポートとサービスの対応
同じ IP アドレスでも、複数のサービスを同時に動かすためにポート番号 (0 から 65535) を使い分けます。よく使うものを覚えておくと、トラブルシュートが早くなります。
| ポート | プロトコル | 用途 |
|---|---|---|
| 22 | TCP | SSH |
| 53 | TCP/UDP | DNS |
| 80 | TCP | HTTP |
| 443 | TCP | HTTPS |
| 3306 | TCP | MySQL |
| 5432 | TCP | PostgreSQL |
| 6379 | TCP | Redis |
図解 ネットワーク通信の流れ
図の流れを順序リストで書き直すと、次の通りです。
- クライアントが
curl https://api.example.comを実行する - DNS でホスト名を IP アドレスに変換する
- その IP に対して TCP 接続を確立する (3-way handshake)
- HTTPS リクエストを送信する
- サーバーがリクエストを処理する
- レスポンスをクライアントに返す
curl https://api.example.com という 1 コマンドの裏では、上の図のような流れが走っています。途中のどこで詰まっているかを切り分けるために、本章のコマンド群を使い分けます。
旧コマンドと現代版
古い記事では ifconfig や netstat がよく登場しますが、これらは net-tools パッケージのコマンドで非推奨になっています。現代の Linux ディストリビューションでは iproute2 パッケージの ip / ss を使うのが標準です。本コースでもこの新しい方を使います。
ターミナル
# 旧 (非推奨)
# ifconfig
# netstat -tlnp
# 現代版
ip a
ss -tlnp手元の Linux に
ifconfigがないと焦らないでください。意図的にインストールされていないだけで、ip aを覚えれば同等以上のことができます。Docker の Alpine ベースイメージではiproute2も標準で入っていないので、必要ならapk add iproute2で導入します。
クライアントとサーバーの役割
ネットワーク通信は、待ち受け側の サーバー と接続しに行く クライアント に分けて考えると整理しやすいです。サーバーは特定のポートで listen し、クライアントはランダムな高位ポートから接続してきます。ss -tlnp で listen 中のポート、curl でクライアント側の挙動を観察できます。
コマンド 1 つひとつを覚えるより、まず「自分はクライアント側を見ているのか、サーバー側を見ているのか」を意識する癖をつけてください。トラブルの原因が分かるスピードがまったく違ってきます。
トラブル切り分けの定石
実務で サイトが見えない という相談を受けたら、おおむね次の順で見ていきます。
- 名前解決ができるか (
getent hosts example.com、dig) - 経路が通っているか (
ping、mtr、traceroute) - ポートが開いているか (
curl -v https://...、nc -vz host 443) - アプリが応答するか (
curl https://...、ステータスコード確認) - 自分側のサーバー設定 (
ss -tlnp、ip a、/etc/hosts)
このレッスン以降で、ここに登場するコマンドを順番に学んでいきます。
ここまでの要点
4 層モデルで切り分け、IP + ポートでサービスを特定。DNS → 経路 → ポート → アプリの順に絞り込む。ip ss が現代の標準。
まとめ
- ネットワークは複数の層が重なって動く。トラブル時はどの層の話かを意識する
- ホスト名は DNS で IP に変換され、IP とポートでサービスを特定する
- 旧コマンド
ifconfig/netstatは非推奨。ip/ssを使う - クライアント側か、サーバー側か、どちらの視点で観察しているかを常に意識する
- 切り分けは DNS → 経路 → ポート → アプリの順に進めると速い
次のレッスン
次は ping で接続確認 で、ネットワークの基礎知識を習得します を学びます。
事前確認 — 進む前に次の 3 つができることを確認しましょう。
- ネットワーク基礎 の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. ネットワーク基礎 とは何か、1 文で説明してください。
A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。
関連レッスン