コース一覧
ネットワーク基礎:TCP/IP・HTTP・DNS・CDN
REST API の設計原則

ネットワーク基礎:TCP/IP・HTTP・DNS・CDN

ブラウザからサーバーまでデータが届く仕組みを、OSI・TCP/IP、IPとルーティング、TCP/UDP、HTTP/HTTPS、DNS、CDNから体系的に学びます。通信障害や構成選択をプロトコルから考えられるようになります。

1
ネットワークの全体像
0. ネットワークとは8分
1. OSI 7階層モデル10分
2. TCP/IP 4階層モデル9分
3. パケットとフレーム9分
4. ルーター・スイッチ・ハブ9分
2
IP とルーティング
0. IPアドレス (IPv4 / IPv6)10分
1. サブネットマスクと CIDR11分
2. NAT とプライベートIP9分
3. ルーティングと経路選択10分
4. ファイアウォール基礎9分
3
TCP / UDP
0. TCP と UDP の違い9分
1. 3-way ハンドシェイク9分
2. 輻輳制御と再送10分
3. UDP の用途 (DNS / 動画 / ゲーム)8分
4. ポート番号と well-known port9分
4
HTTP / HTTPS
0. HTTP の基本10分
1. HTTP メソッド9分
2. HTTPS と TLS ハンドシェイク10分
3. HTTP/2 と HTTP/3 (QUIC)10分
4. REST API の設計原則10分
5
DNS とドメイン
0. DNS とは8分
1. レコードタイプ10分
2. 名前解決の流れ10分
3. DNS キャッシュと TTL9分
4. CDN の仕組みと Anycast10分
6
応用
0. ロードバランサ (L4 / L7)10分
1. プロキシとリバースプロキシ9分
2. WebSocket とリアルタイム通信9分
3. gRPC と HTTP/2 利用10分

ネットワーク基礎:TCP/IP・HTTP・DNS・CDN

01ネットワークとは
02OSI 7階層モデル
03TCP/IP 4階層モデル
04パケットとフレーム
05ルーター・スイッチ・ハブ
06IPアドレス (IPv4 / IPv6)
07サブネットマスクと CIDR
08NAT とプライベートIP
09ルーティングと経路選択
10ファイアウォール基礎
11TCP と UDP の違い
123-way ハンドシェイク
13輻輳制御と再送
14UDP の用途 (DNS / 動画 / ゲーム)
15ポート番号と well-known port
16HTTP の基本
17HTTP メソッド
18HTTPS と TLS ハンドシェイク
19HTTP/2 と HTTP/3 (QUIC)
20REST API の設計原則
21DNS とは
22レコードタイプ
23名前解決の流れ
24DNS キャッシュと TTL
25CDN の仕組みと Anycast
26ロードバランサ (L4 / L7)
27プロキシとリバースプロキシ
28WebSocket とリアルタイム通信
29gRPC と HTTP/2 利用

ネットワーク基礎:TCP/IP・HTTP・DNS・CDN

REST API の設計原則

エンドポイントが 40 個あって、名前の付け方が全部違う

/getUserList、/user_delete、/fetchOrders。書いた人ごとに流儀が違うと、使う側は毎回ドキュメントを開くことになります。REST は、この命名を各自の趣味から取り上げて、HTTP がもともと持っている仕組みに寄せる考え方です。

URL は住所、動きはメソッド

REST では URL をリソースの住所として決めます。何をするかは URL に書かず、メソッドが担当します。

プレーンテキスト

GET    /users        利用者の一覧
GET    /users/123    123 番の利用者
POST   /users        新しく作る
DELETE /users/123    123 番を消す

URL に動詞が出てこないのがポイントです。POST /createUser や POST /deleteUser は、メソッドが持っている意味を URL にもう一度書いているだけで、情報が二重になります。片方だけ直されて食い違う余地も生まれます。

ネストは /users/123/orders のように 2 階層までにしておくと扱いやすいです。それより深い参照は、URL を伸ばすよりクエリパラメータで表したほうが、後から絞り込み条件を足しやすくなります。

全部 200 で返すと、呼ぶ側がエラーに気づけない

失敗を本文の中だけに書いて、外側は成功として返す API があります。呼ぶ側は本文を解釈するまで失敗に気づけないので、共通のエラー処理が一切効きません。再送してよいかどうかも判断できません。

結果は数字で表します。成功したかどうかは、本文を読む前に分かる必要があります。

作成系では 2 つ覚えておくと役に立ちます。新しくリソースを作れたときの 201 と、処理はしたが返す本文が無いときの 204 です。削除の返事は 204 になることが多く、これが返っていれば、呼ぶ側は本文を読みにいきません。

失敗したときの本文も、形を決めて揃えておきます。機械が分岐に使う短い識別子と、人が読むための説明文を分けて入れておくと、呼ぶ側は識別子で処理を分け、説明文はそのまま画面に出せます。エンドポイントごとに本文の形が違うと、呼ぶ側にエラー処理が散らばります。

一覧を返す API は、いつか必ず重くなる

全件を返す一覧 API は、データが少ないうちは動きます。件数が増えた日にまとめて壊れます。最初から分割して返す設計にしておきます。

分割には 2 通りあります。?page=3&limit=20 のように何番目から欲しいかを指定する方式は、画面にページ番号を並べたいときに向きます。?cursor=xxxx&limit=20 のように前回の続きを指定する方式は、データが増減し続ける一覧でも取りこぼしや重複が起きにくくなります。

公開した API はいつか形を変えたくなるので、/v1/users のように URL の先頭に版を入れておきます。互換性を壊す変更が必要になったとき、古い版を残したまま新しい版を並べて出せます。

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • エンドポイント「この URL を叩くとこの機能が動く」入口の住所
  • HTTPWeb の通信プロトコル、HTTPS は TLS で暗号化したもの
  • URLページの住所全体
  • メソッドクラスに属する関数
  • 階層ネットワークを役割ごとに積み重ねた構造
  • クエリパラメータURL の `?` 以降に付ける `key=value` 形式のリクエストデータ
  • APIアプリ間でデータをやり取りする窓口
  • 処理計算や代入を表す長方形
生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/05/27·更新 2026/08/26

関連レッスン

  • DNS とは

    人間が読める名前と IP を結びつける DNS の役割を理解します。

  • ロードバランサ (L4 / L7)

    L4 と L7 ロードバランサの違いと使い分けを理解します。

  • HTTP/2 と HTTP/3 (QUIC)

    HTTP/1.1 の課題と、HTTP/2・HTTP/3 がどのように改善したかを学びます。

  • HTTPS と TLS ハンドシェイク

    暗号化通信 HTTPS と、TLS で鍵を共有する流れを理解します。

分からないところは Tap (AI先生) に質問できます

24 時間いつでも、あなたのレベルに合わせて日本語で答えます。

復習ミニクイズ

REST API の URL 設計でアンチパターンとされるものはどれですか