COLUMN
コラム
2021年10月21日
#プロトコル – 知ったかテックワード!君もIT博士
カテゴリー:知ったかテックワード
タグ:基本用語
「プロトコル(Protocol)」とは、コンピュータや電子機器が互いに通信しあうための手順・規約のこと。「通信プロトコル」の略称だよ。
通信する相手は、お互いに同じプロトコルを採用している必要がある。ウサギとカエルが連絡を取る場合、一方が日本語で他方が英語だったら話が通じないよね。一方が朝8時に連絡したけど、他方がその時間に寝ていた場合もうまくいかない。だから「朝8時に電話する。言語は日本語。手段は電話」といった感じで決めたルールがプロトコルなんだ。
実際の通信プロトコルは、機能や役割によっていくつもの種類がある。インターネットでは、次のようなプロトコルが使われているよ。
- HTTP:HyperText Transfer Protocol、Webサイトのアクセスで用いられる
- SMTP:Simple Mail Transfer Protocol、シンプルな電子メール転送用プロトコル
- IP:Internet Protocol、インターネットで通信相手を特定するためのプロトコル
HTTPの動作
ここで例として、HTTPの動作を見ていこう。
HTTPは、主にWebブラウザがWebサーバーからWebページを取得するために使われる。本当はネットワークの仕組みや、複数のサーバーを識別する方法なども重要なんだが、Webシステムによる情報の提供と閲覧に対象をしぼると、ざっくりWebブラウザとWebサーバーに分割できる。
Webブラウザでホームページ上のリンクをクリックすると、対象となるWebサーバーにリクエストが送信される。Webサーバーは、自分へのリクエストを受け取ると、該当するWebページのあらかじめ用意しておいたHTMLファイルや画像ファイルなどをレスポンスとして送り返すr。Webブラウザは、返ってきたレスポンスをもとにして、Webページを再構成して表示する。
この手順を整理すると、こんなふうになる。
- リクエスト:Webブラウザから、閲覧したいページを要求する
- レスポンス:Webサーバーから、HTMLファイルや画像ファイルを返す
- 返ってきたレスポンスから、Webページを再構成する
リクエストでは、次のような内容(メッセージ)を送信する。通常は、リクエストヘッダまでを送信する。Webフォームを入力したり、ファイルをアップロードする場合には、その内容をリクエストボディとして送信する。
- メソッド:リクエストでおこなう操作の種類
- リクエストURI:取得するWebページのアドレス
- プロトコルバージョン:HTTP/1.1
- リクエストヘッダ:リクエストについての追加情報
- リクエストボディ:Webフォームの内容や添付ファイル
このような仕組みを基本にして、現在は様々な便利な機能を実現しているんだ。たとえば、HTTPS (Hyper Text Transfer Protocol Secure)は、HTTPと比較してよりセキュリティに強い通信が可能だ。
おまけのコント
ウサギ:プロトコルって、お菓子の名前っぽくない?
カエル:プロ・ト・コールなら、たしかにそんな感じかも。で、どんなお菓子なんだろ。
ウサギ:甘くって、クルクルっとして、プロテインが入っている。
カエル:なんか、身体に良さそう。
ウサギ:あーあ、プロトコール食べてみたいなぁ。
カエル:どうやったら食べられるの?
ウサギ:専門店があるんだよ。ただし、プロトコールを買うには複雑な手順がある。
カエル:なにそれ。ちょっとミステリアス。
ウサギ:雨の日に行って、店の前を3回行ったり来たりしたあとお店に入るんだ。
カエル:ふむふむ。
ウサギ:すると店員さんが「今日はいい天気ですね」と声をかけてくる。そしたら「本当に気持ちがいいですね」と答えてからカッコよく握手!
カエル:ややこし過ぎるよ。
- カテゴリー
- タグ
- システム運用(16)
- TypeScript(1)
- WebAssembly(2)
- ウォーターフォール開発(2)
- 業務システム(28)
- CSS(2)
- GraphQL(1)
- プログラミング(31)
- スタートアップ(11)
- Nexaweb(1)
- BaaS(10)
- データベース(5)
- SPA(2)
- 基本用語(26)
- Case study(5)
- Keyword(10)
- FaaS(1)
- システム開発(69)
- スクラム(1)
- フロントエンド(38)
- AI(26)
- アジャイル開発(18)
- Supabase(1)
- イノベーション(5)
- Database(2)
- 月額制(1)
- PaaS(3)
- ACF(1)
- BookReview(3)
- サービス開発(5)
- React(3)
- Firebase(1)
- クラウドサービス(12)
- low-code(2)
- バックエンド(8)
- ナレッジマネジメント(1)
- ChatGPT(1)
- Vue.js(2)
- Tailwind CSS(1)
- DBaas(2)
- プロジェクト管理(13)
- セミナー(2)
- Web(21)
- 失敗事例(2)
- Hexabase_health(1)
- 生成AI(7)
- 受託開発(1)
- Kubernetes(3)
- WebComponents(1)
- 通知(1)
- API(6)
- Next.js(1)
- フレームワーク(3)
- ローコード開発(4)
- ノーコード開発(1)
- JavaScript(2)
- Hexabase(12)
- LLM(3)
- 画像生成(1)
- DX(34)