(情報の正確性は担保しておりません。読み物としてお楽しみください。)
プロトコル=共通言語
👨wiki:プロトコルまたはプロトコール(英語: protocol[1]、フランス語: protocole[2])とは、複数の当事者が対象となる事柄を確実に実行するための手順について定めたもの。
Webの世界で、プロトコルとは、
結論:通信するためのルールです。
タイパ重視の人のために、もう一度いいます。 プロトコルとは結論、**通信するためのルール** です。 以上です
すぐに役立つものは、すぐに役に立たなくなります。
タイパ重視じゃない方はチャンスです。もう少し持ち前の忍耐力で読み進めましょう。
プロトコルについて、まずは以下に例を示してみます。
よく聞くこれらがプロトコルの例になります。
Webエンジニアとして働くうえで、このプロトコルはすごく大事です。
なぜでしょうか。
これは、英語が大事だといわれるのと同じです。
👩帰国子女ステファニー:英語は喋れたほうがいいよ~~!
よくこういうの聞きます。
なぜみんなこういうのか。
グローバル化が進み、世界中の人々と協力するには、日本語だけでは足りないからです。英語は世界中で20億人が使用しています。日本語は1.5億人しか話せません。これでは、みんなで協力できません。そこで、共通言語として、20億人と会話できる英語が必要になります。1
Column.
突然ですが、
👧(3歳)Q. Webエンジニアって結局なにしてるの?
と姪っ子に質問されたら、なんと答えますか?
ぼくは、こう答えようと思います。
「世界中の人々と手を取り合って、協力する。」そんな平和な世界を作っているんだよ!
そう、Webエンジニアの仕事の本質は、「時空間をこえた世界中をつなぐ、リソース(データ,情報,人)のやり取り」にあると思います。なぜなら、Webの始まり、WWWの生まれた歴史(根源)がまさに、世界中のひとと情報のやり取りをしたいという願望(Goal)から始まったからです。
Web(世界中のひとと情報のやり取りをする)の世界での共通言語
Webエンジニアの仕事(Why,Goal)が、世界中のひとと情報のやり取りをすることだと分かったところで、 具体的(How) にどうやってやりとりするのか。それが、プロトコルで決定します。
例えば、プロトコルをOSI参照モデルでカテゴライズして列挙してみると、以下のようなものがあります。(不明なものがあれば、読み進めてみてください。)
- アプリケーション
- DNS
- HTTP
- REST API
- Fetch API / XMLHttpRequest
- プレゼンテーション
- SSL/TLS
- セッション
- RPC
- TLS
- トランスポート
- TCP
- UDP
- ネットワーク
- IP
プロトコル一覧【OSI参照モデルベース】
🧠アプリケーション層(7層)
ユーザーに最も近く、アプリやサービスが利用する通信規約
🔹Web・通信関連
- HTTP / HTTPS
- WebSocket(リアルタイム双方向通信)
- SMTP / IMAP / POP3(メール)
- FTP / FTPS / SFTP
- Telnet / SSH(リモート接続)
🔹名前解決・ディレクトリ
- DNS
- mDNS / Bonjour
- LDAP(ディレクトリサービス)
🔹API
- REST API
- SOAP
- GraphQL
- gRPC(Protocol Buffersを使う)
🔹クラウド・プラットフォーム
- AWS API / GCP API / Azure API
- OpenStack API
🔹ファイル共有・通信
- SMB / CIFS(Windowsファイル共有)
- NFS(UNIX向け)
🔹データベース関連
- SQL over TCP
-
ODBC / JDBC (Open/Java Database Connectivity)
( ↑ ORMが抽象化してくれているので気にする必要なし)
🔹IoT / その他
- MQTT(軽量メッセージング)
- CoAP
- XMPP
🎨プレゼンテーション層(6層)
データの表現・構造・暗号化に関する取り決め
🔐暗号・圧縮・エンコード
- SSL / TLS(HTTPSなどの基盤)
- MIME(コンテンツタイプ)
- Base64(バイナリ→テキスト変換方式(8ビット × 3バイト → 6ビット × 4個)64は2^6)
- JSON / XML / YAML / Protocol Buffers
- gzip / deflate / Brotli(HTTP圧縮)
🧭セッション層(5層)
セッションの確立・維持・終了を司る層。やや抽象的。
- NetBIOS
- RPC(Remote Procedure Call)
- PPTP / L2TP / IPSec(VPN関連)
- TLSのハンドシェイク
- SQLセッション管理(トランザクション)
※ ここはプロトコル名よりも「仕組み・方式」で表現されることが多い
🚚トランスポート層(4層)
信頼性ある通信のための制御。ポート番号もここ。
- TCP
- UDP
- QUIC(HTTP/3で使用)
- SCTP(通信の冗長性向上)
🌍ネットワーク層(3層)
IPアドレスでルーティング。中継の主役
- IP(IPv4 / IPv6)
- ICMP(pingなど)
- IGMP(マルチキャスト)
- ARP / RARP
- OSPF / RIP / BGP / IS-IS(ルーティング)
ここから下のレイヤーは、低レイヤーすぎてWebエンジニアとしては、あまり気にしなくてもいいものになっていきますね。
🔗データリンク層(2層)
MACアドレスとスイッチング。LANの基盤。
- Ethernet
- PPP / HDLC / SLIP
- MAC
- VLAN / IEEE 802.1Q
- LLDP(隣接機器検出)
⚡物理層(1層)
電気信号・光信号など。最下層の物理通信手段
- LANケーブル(UTP / STP)
- 光ファイバー(SMF / MMF)
- RS-232 / RS-485
- USB / HDMI
- Bluetooth / Wi-Fi / ZigBee / NFC
- 5G / LTE / 4G / LoRaWAN
- NRZ / Manchester符号化
- 電圧・波形などの物理仕様
プロトコル以外の「通信方式・規格」
分類 | 例 | OSI層 | 補足 |
---|---|---|---|
エンコード方式 | Base64, JSON, XML | 6層 | データを可読化・転送しやすくする |
暗号方式 | AES, RSA, TLS | 6層 or 複数層跨ぎ | 実装はアプリorセッションorプレゼン |
通信ライブラリ | axios, fetch, curl | アプリ層 | HTTPなどの呼び出しを簡素化 |
ファイル形式 | JPEG, MP4, PDF | 6層扱い | 「通信中に意味を持つ」ならプロトコルに準ずる |
🔍chatGPTによる補足:プロトコルとは「お約束ごと」
プロトコルとは、単なる通信方法ではなく、**「どんな形式で、どの順番で、どんなルールでやりとりするか」**を定めた共通語です。
- 👶メールを送る → SMTP
- 🧑💻ページを見る → HTTP
- 🛰正しく届いたか知りたい → TCP
- 🌐そもそもどこに送る? → IP
- 📡それを電気信号にする → LANケーブル
というふうに、通信の全段階にプロトコルがある、ということが重要です。
まとめ
Webの世界で、プロトコルとは、
結論:通信するためのルールです。
ひとこと
- コメントをいただけると嬉しいです。
- 繋がることでいいエネルギーの循環を創り出すことができると信じています。
- Think Straight, Talk Straight !!
- 今日も最高の1日に。