コース一覧
ネットワーク基礎:TCP/IP・HTTP・DNS・CDN
gRPC と HTTP/2 利用

ネットワーク基礎: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

gRPC と HTTP/2 利用

「pages は数値ですか、文字列ですか」を毎回聞いている

社内でサービスを分けて作っていると、隣のチームの API を呼ぶ場面が増えます。そのたびに、項目の名前と型を確認する会話が発生します。ドキュメントはあっても、実装が変わったときに一緒に直るとは限りません。

JSON でやりとりする限り、型は約束ではなく慣習です。片方が数値を文字列に変えても、呼ぶ側は動かしてみるまで気づけません。

先に契約を書いて、両側のコードを機械に作らせる

gRPC は、この順番を逆にします。まず .proto というファイルに、やりとりする項目と呼べる操作を書きます。

プレーンテキスト

syntax = "proto3";

message Book {
  string isbn = 1;
  string title = 2;
  int32 pages = 3;
}

service BookService {
  rpc GetBook (GetBookRequest) returns (Book);
}

message GetBookRequest {
  string isbn = 1;
}

このファイルから、呼ぶ側と受ける側のコードを自動生成します。呼ぶ側は生成された関数を普通に呼ぶだけで、URL も本文の組み立ても出てきません。項目の名前や型を間違えれば、動かす前にコンパイルで止まります。

各項目に付いている 1 や 2 は、その項目の背番号です。転送するときは名前ではなく番号だけを送るので、title のような文字列が毎回流れません。JSON より小さく、読み書きも速くなります。

この番号は、一度使ったら二度と使い回しません。項目をやめるときも、番号は空けたまま残します。古い版のまま動いているサービスは、その番号を昔の意味で読むからです。番号を別の項目に付け直すと、片方が数値を送り、もう片方が文字列として読む、という壊れ方をします。名前を変えるのは自由ですが、番号は変えられない、と覚えておきます。

1 回の呼び出しで、何回でも返せる

gRPC は HTTP/2 の上で動きます。1 本の接続に複数の通り道を作れる性質をそのまま使うので、呼び出しの形が 4 種類あります。

形送る返る使いどころ
単発1 回1 回普通の呼び出し
サーバー側連続1 回何回でも進捗や更新を流し続ける
クライアント側連続何回でも1 回大きなデータを分けて送る
双方向何回でも何回でも送りながら受け取る

これらが 1 本の接続の中で同時に動きます。呼び出しごとに接続を張り直さないので、サービス同士が細かく呼び合う構成でも積み上がりが小さく済みます。

ブラウザからは、そのままでは呼べない

便利そうに見えますが、Web の画面から直接は使えません。ブラウザの JavaScript には、gRPC が必要とする低い層の操作が公開されていないからです。

回避策として、間にプロキシを 1 枚挟んで変換する方法が用意されています。ただし双方向の連続送受信は使えないなどの制約が残ります。

そのため実際には、外に公開する API は REST のまま、内部のサービス同士だけ gRPC、という分け方が多くなります。呼ぶ相手が自分たちの管理下にあり、生成したコードを両側に配れる場所でこそ、この仕組みは効きます。

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

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

  • エンドポイント「この URL を叩くとこの機能が動く」入口の住所
  • APIアプリ間でデータをやり取りする窓口
  • applicationJSON 本文を送るときの Content-Type
  • 関数処理に名前を付けて再利用できる単位
  • URLページの住所全体
  • コンパイルソースをバイトコードへ変換する処理
  • HTTPWeb の通信プロトコル、HTTPS は TLS で暗号化したもの
  • サーバークライアント(ブラウザなど)がリクエストを送り、サーバーがレスポンスを返す。
生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/05/27·更新 2026/08/26

関連レッスン

  • WebSocket とリアルタイム通信

    双方向通信を実現する WebSocket の仕組みを理解します。

  • プロキシとリバースプロキシ

    フォワードプロキシとリバースプロキシの違い・役割を学びます。

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

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

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

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

復習ミニクイズ

gRPC のスキーマ定義に使う言語はどれですか