ふくふくHukuhuku Inc.
EP.07CS Basics対象: 中2以上 11分公開: 2026-05-10

ネットワークの基本:IP・TCP・HTTP・DNS の連携

ブラウザに「google.com」と入力してから画面が出るまで、コンピュータの中で何が起きているか。DNS で IP アドレス取得、TCP で接続、HTTP でデータ取得、HTTPS で暗号化、までを 1 本でつなぐ。

#ネットワーク#IP#TCP#HTTP#DNS#情報I
CO📔 Google Colab で開く(上から順にセルを実行)
シェア

ブラウザに「google.com」と打って Enter してから検索画面が出るまで、コンピュータの中では何が起きているか? これを順番に追うのが本記事のテーマ。インターネットの基本がほぼ全部見えます。

1. プロトコルスタック (4 層モデル)

役割代表プロトコル
アプリケーション層アプリ間の通信内容HTTP / HTTPS / FTP / SMTP / DNS
トランスポート層信頼性のあるデータ転送TCP / UDP
ネットワーク層宛先までの経路選択IP (v4 / v6) / ICMP
データリンク層隣接機器間の通信Ethernet / Wi-Fi

2. google.com にアクセスする手順

  1. 1DNS 問合せ: 「google.com の IP は?」を DNS サーバに尋ねる → 142.250.46.78 を取得
  2. 2TCP 接続確立: 142.250.46.78:443 (HTTPS のポート) に 3 ウェイハンドシェイク
  3. 3TLS ハンドシェイク: 暗号化方式の合意・証明書の検証
  4. 4HTTP リクエスト送信: GET / HTTP/2 (パス・ヘッダ・Cookie 等)
  5. 5HTTP レスポンス受信: 200 OK + HTML 本文
  6. 6ブラウザがレンダリング: HTML を解釈して画面に表示
  7. 7追加リソース取得: 画像・CSS・JS を別途リクエスト (並列)
  8. 8JavaScript 実行: 動的な動作開始

3. IP アドレス

  • IPv4: 32 ビット、約 43 億個 (もう枯渇)。例: 192.168.1.1
  • IPv6: 128 ビット、ほぼ無限。例: 2001:db8::1
  • プライベート IP: 10.x.x.x / 172.16-31.x.x / 192.168.x.x → 家庭・社内ネットワーク用
  • グローバル IP: インターネット上で一意、ISP から割当て
  • NAT: プライベート IP → グローバル IP の変換 (家のルータが行う)

4. TCP の信頼性

  • 3 ウェイハンドシェイク: SYN → SYN-ACK → ACK で接続確立
  • 順序保証: パケットに番号を付け、受信側で並べ直す
  • 再送制御: 一定時間 ACK が来なければ再送
  • フロー制御: 受信側のバッファ容量に応じて送信速度調整
  • 輻輳制御: ネットワーク混雑時は送信速度を下げる

5. HTTP のメソッドとステータスコード

分類代表意味
メソッドGET / POST / PUT / DELETE取得 / 送信 / 更新 / 削除
2xx 成功200 OK / 201 Created正常完了
3xx リダイレクト301 / 302別 URL へ転送
4xx クライアントエラー404 / 401 / 403見つからない / 未認証 / 権限なし
5xx サーバエラー500 / 503サーバ側エラー / 一時的に利用不可

6. Python で HTTP リクエストを送る

requests ライブラリ
Python
import requests
# GET リクエストr = requests.get('https://api.github.com/users/octocat')print(r.status_code)  # 200print(r.json()['name'])  # 'The Octocat'
# POST リクエストr = requests.post('https://httpbin.org/post', json={'key': 'value'})print(r.json())
# ヘッダ付きr = requests.get('https://api.example.com/data',                 headers={'Authorization': 'Bearer TOKEN'})

7. 次の話

EP.08 では データ構造 に進みます。配列・連結リスト・ハッシュ・ツリーの基本と、なぜ 「適切な構造の選択」 がプログラムを 1000 倍速くすることがあるか。

シェア

この記事の感想を教えてください

あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。

シリーズの外も探す:

まずは、現状を聞かせてください。

要件が固まっていなくて大丈夫です。現状診断と方針提案までを無料でお手伝いします。

無料相談フォームへ hello [at] hukuhuku [dot] co [dot] jp