はじめてLESSON 01

この教材で学ぶこと server、resource、DNS、port、HTTPを一つのrequest経路で学びます。

サーバーとネットワーク入門

対象読者: インフラを初めて学び、LinuxやTCP/IPへ進む前の全体像を知りたい人。

この教材でできるようになること

  • client、server、networkの関係を説明できる
  • CPU、memory、storage、processの役割を区別できる
  • IP address、port、DNS、HTTPの流れを順番に説明できる
  • 障害を「名前解決・接続・暗号化・HTTP・application」に分けられる

1. serverは役割の名前

serverは特別な形の機械だけを指す言葉ではありません。requestを受け、機能やdataを提供する役割です。一台のPC上で複数のserver processが動くこともあります。

Browser (client)
  → DNSで名前を調べる
  → IP addressへ接続する
  → port 443でTLSを確立する
  → HTTP requestを送る
Web server
  → applicationやfileからresponseを返す

2. resourceを見る

resource 観察すること 枯渇時の例
CPU 実行時間、load 処理遅延
memory 使用量、swap OOM、極端な遅延
storage 容量、IOPS、latency 書込み失敗
network bandwidth、latency、loss timeout

利用率一つだけで原因を断定せず、時系列と関連metricを確認します。

3. addressとport

IP addressはnetwork上の宛先、portは同じhost上のserviceを区別する番号です。

192.0.2.10:443
└ address ┘ └ port

processがportで待ち受け、firewallやroutingが通信を許可し、clientがそこへ接続します。

4. DNSからHTTPまで

  1. URLからhost nameを取り出す
  2. DNSでaddressを得る
  3. network経路を通って接続する
  4. HTTPSならTLSで相手と暗号化を確認する
  5. HTTP requestを送る
  6. serverがstatus、header、bodyを返す

「サイトが開かない」だけでは範囲が広いため、この段階ごとに観測します。

5. 最初の調査command

uname -a
df -h
free -h
ps aux
ip address
getent hosts example.com
curl -I https://example.com/

環境によってcommandの有無や出力は異なります。出力を変更するcommandではなく、まずread-onlyな観測から始めます。

演習: request経路を描く

ブラウザでhttps://example.com/lessonsを開くまでを、次の語をすべて使って矢印で描いてください。

browser、DNS、IP address、port、TLS、HTTP request、web server、response

次に、各段階が失敗した場合に利用者からどう見えるかを一つずつ書きます。

理解チェック

  • serverを物理機ではなく役割として説明できる
  • addressとportを区別できる
  • URL入力からresponseまでを順番に説明できる
  • 障害調査を層ごとに分けられる

次に読む

Linux実践で、process、log、permissionを実際に観察します。