【基礎から学ぶ情報技術】 通信プロトコルの解説① ~IP・TCP・UDP・TCP/IP・HTTP・HTTPS・SSL・TLS・FTPとは何なのか?~

IT
スポンサーリンク
スポンサーリンク
スポンサーリンク

私の専攻は電気系なのですが、電気電子系の仕事とIT系の知識は切っても切れない存在となります。
回路設計をしても、それを動かすCPUはソフトウェアが無いと動かないですからね。
本記事は、IT系の分野で疑問を持ったり知っておいた方が良いと個人的に思った内容についてまとめたものとなります。

今回は、「基本的な通信プロトコル」についての説明です。

1.初めに

私たちは日常的にパソコンとコピー機の間などでネットワークを構築しますが、ただ単純に繋ぐだけでは意味がありません。
電話回線が繋がっていても、肝心の電話番号が間違っていたら電話はうまく繋がらないでしょう?
それと同じで、ネットワークを繋ぐにも手順やルールは必要なんです。

そんな手順やルールのことをプロトコルと呼びます。

今回は、通信を行う上で守る必要のあるルールである基本的な通信プロトコルについて解説していきます。

2.プロトコルとは?

まずは、プロトコルとは何なのかをもう少し深堀りしていきます。

プロトコルとは、英語で[protocol]と書きます。
意味は[手順]です。
IT用語としては、[通信手順][通信規格]を指しています。
大雑把に言えば、通信に関する決まり事全般がプロトコルというわけですね。

なんで通信に限定されているのか気になるかもしれませんが、おそらく通信プロトコルのことをプロトコルと呼んでいるだけです。

では、プロトコルのある理由について説明していきます。

世界中では色々な言語が使われていますよね?
日本語・英語・中国語…挙げだしたらキリが無いです。

そんな中、仮にあなたがアメリカ人に話しかけられた場合、どうしますか?
日本語で話しかけるのではなく、なんとか英語で話しかけようと思いますよね?
実際に英語を話せるかは別として。I don’t speak English!!

それは何故ですか?
単純に言葉が通じないからですよね。
日本語では言葉が通じない可能性があるので英語で頑張って表現しようとしているわけです。

通信にも同じことが言えます

世界中の情報機器がインターネットで繋がっています。
ですが、繋がっているだけでは意味がないんです。
言語を統一せずに(何もルールを決めずに)一方的に話しかけても(通信しても)相手には伝わらないのです

ということで、あらかじめ『××の通信をする時は△△の手順でやり取りしよう』というルールを設けるようにしています。
それがプロトコルです。

イメージをしやすくするために言語の例を先に挙げましたが、例とプロトコルでは決定的な違いがあります。
それは、IT業界の場合は『国際的にこの規格に則りましょう』と定められている点です。
『世界的に英語で統一しようぜ!』という無駄に言語の勉強をしなくて済む平和な状況が作られているのがIT業界という感じです。
日本語でさえマスターするのは難しいのに英語なんて喋れるわけないよねぇ?

3.通信プロトコルの種類

では、本題の通信プロトコルの種類について記述していきます。
と言っても結構な種類が存在しますので、主要なものをいくつかピックアップして説明していきますね。

  • IP
  • TCP
  • UDP
  • TCP/IP
  • HTTP
  • HTTPS
  • SSL
  • TLS
  • SSL/TLS
  • FTP

IP(インターネットプロトコル)

インターネット(世界中の情報機器であるPCやスマートフォンなどを互いに繋いだ情報網)を形成するためのプロトコルのことです。

どのようにネットワーク同士を接続していくかという決まり事というわけですね。

IPは[Internet Protocol]の略なので、単純にインターネットプロトコルと呼んでいることもあります。

ただ、IPだけではインターネットを形成するには不十分で、TCPという別のプロトコルと組み合わせて使用する必要があります。

TCP

データの通信のためのプロトコルのことです。

データ伝送のための経路を確立し、確実にデータの送受信を行うための必要になります。

[Transmission Contorol Protocol]の略で、直訳で[伝送制御プロトコル]になります。
名前そのままの意味なんですね。

インターネットを形成するためのプロトコルであるIPとセットで使用することで、インターネットを滞りなく使用できるようになります。

“確実に”データの送受信を行うためのプロトコルがTCPと述べました。
TCPに則ると、データを送ったらデータが届いたことを確認するという具合に慎重に・丁寧に通信を行う為、信頼性の高い通信を行うことが可能になります
メールを送ったら毎回『メールが届きました』と返信されてくるようなイメージです。

その為、確認する分時間がかかるので通信は遅めになります

この特徴が真逆になったUDPというプロトコルも存在しますが、スピードより確実性を重視する場面ではTCPの則ることになります

UDP

データの通信のためのプロトコルのことです。

データ伝送のための経路を確立し、高速でデータの送受信を行うための必要になります。

[User Datagram Protocol]の略で、直訳で[ユーザデータグラムプロトコル]になります。
イマイチよくわからないですね。

先述したTCPもデータ伝送に関するプロトコルでしたが、TCPとUDPでは特徴が真逆になっています

UDPに則ると、データが送れているかどうかの確認は取らず、速度重視でデータ伝送を行います。
つまり、データの信頼性が下がる代わりに、通信速度が速くなります

TCPはスピードより確実性を重視しているので、特徴が反転しているでしょう?

信頼性が下がるということはデータが欠ける可能性があるわけですので、『そんな通信で大丈夫か?』と言いたくなりますよね?

『大丈夫だ、問題ない。』

公式がフリー素材として使っていいんだってさ。(エルシャダイ)

UDPが使用されるのは音楽や画像などのデータを送る時です。
多少欠けていたといても人間の感覚では気づきはしないようなものは効率を重視してUDPが使用されていることがあります

TCP/IP

インターネットを形成するにはIPとTCPの2つのプロトコルに準拠する必要がある為、基本的にIPとTCPはセットということになります。
そこで、『TCPとIPの両方のプロトコルを使用していますよ』という意味を込めて、TCP/IPと表現されているのが一般的です

IPとTCPの両方が必要になるのは、IPで道路(データ通信経路)を整備して、TCPでどこの道路をどのように使用するのかを決定しているようなものだからです。

仮にIPしかなかった場合、インターネットの経路のみ確保されている状態になるので、道路は整備されたけど用途がよくわかっていないという状態になるんです。

HTTP

Webページの通信のためのプロトコルのことです。

[Hyper Text Transfer Protocol]の略で、直訳で[ハイパーテキスト転送プロトコル]になります。
『ハイパーテキストって何?』と思った方は、別途まとめてあるので以下の記事を参考にしてください。

ここでは、少なくともHTTPの“HT”とHTML(Hyper Text Markup Language:Webページを記述するための言語)の“HT”は同じとだけ覚えてくれれば問題ないです。

このことから、HTTPは「Webページを構成する文字や画像などのデータを転送するプロトコル」という意味合いに取ることができます

HTTPは“Webページの通信の決まり事”と述べましたが、詳しく述べると以下のようになります。

HTTPは、WebサーバとWebブラウザの間の通信の決まり事

例を用いて簡単に説明していきます。

私たちは、日々パソコンやスマートフォンを使ってインターネットを利用しています。
その時に、以下のようなソフトウェアを使っていませんか?

  • Internet Explorer
  • Google Chrome
  • Safari
  • Microsoft Edge
  • Firefox
  • Opera

これらがWebブラウザと呼ばれるものです。

これらは、Webページを閲覧するためのソフトウェアです。
逆に言うと、これらが無いとインターネットを使って検索ができないのです

このソフトウェアがWebサーバ(サービスを提供する側のPC)のデータを引っ張ってきてくれて、それを私たちの操作するパソコンやスマートフォンへ渡してくれます。
こうしてデータの閲覧ができているわけです。
これがインターネットの仕組みです。

この内、HTTPはWebサーバとWebブラウザの間のやり取りの決まり事を指しているわけです。

ちなみに、HTTPの通信は暗号化されていないので、通信経路のどこかで通信内容を盗み見されると大変危険です。
情報が筒抜けになってしまいます。
第三者に知られたくない情報をやりとりする時は、別途暗号化を行うか、暗号化されたHTTPSという通信手順を使う必要があります。

HTTPS

Webページの通信のためのプロトコルのことです。
もっと言うと、HTTPのセキュリティ向上バージョンです。
HTTPSの“S”は[Secure(安全)]の“S”です。

HTTPの通信は暗号化されていないので、通信経路のどこかで通信内容を盗み見されると大変危険です。
情報が筒抜けになってしまいます。
そこで、SSLというインターネット上で暗号化通信する際の決まり事をHTTPに統合したものがHTTPSというわけです

なので、より厳密にはHTTPSの“S”はSSLの“S”です。
つまり、[HTTPS]=[Hyper Text Transfer Protocol over Secure Socket Layer]だったりします。
長いので、HTTPの上位互換がHTTPSと覚えておけば問題ないです。

HTTPとHTTPSの見分け方は、Webブラウザ使用時のURLを見ればわかります。
URLの左側に「保護された通信」と書かれていたり、鍵マーク🔓が表示されていたり、URLがhttpsになっていればHTTPSです。

とは言え、HTTPSなら安全と勘違いはしないでください

確かに、HTTPSによりWebページとの通信はしっかり暗号化されて守られるのですが、Webページが安全かどうかはまた別の話なんですよね
Webページ側が最初から悪意を持ってウイルスを感染させようとしていた場合、ウイルスを含んだデータをHTTPSで暗号化して伝えられてくるので、それは結局害でしかないんですよ。

なので、HTTPSになっているからといって油断はしないようにしましょうね。

SSL

インターネット上で暗号化通信するためのプロトコルのことです。
[Secure Socket Layer]の略称です。

インターネットは便利ですが、危険ももちろんあります。

例えば、ネットショッピングでクレジットカード決済を行ったとします。
その場合、クレジットカードの情報を入力してショッピングサイトに送信する必要がありますよね?
この過程でもし通信データを盗み見されたら、そのカードの情報が漏れて第三者でも使用可能になってしまいます。
そのようなことを防ぐためにSSLというプロトコルが存在します
データを暗号化することで、通信を傍受されてもデータの内容を読み取れないようにしたんですね。

仕組みは単純ですので、実際の手順にならって説明していきます。

まず、Webブラウザ(Internet ExplorerやGoogle Chromeのこと)からWebサーバ(サービスを提供する側のPC)にSSL通信のリクエストをします。
すると、WebサーバからWebブラウザへSSLの証明書と鍵(暗号化ルール)が送られてきます
この証明書をもとに、通信先のWebサーバが本当に本物なのかを確認します(ドメインの一致を確認する)。

正しいことが判明したら、証明書と一緒に送られてきた鍵の出番です。
この鍵のルールに則って、Webブラウザ側で別の鍵を作ります
つまり、二重にセキュリティを設けようとするわけです。
この鍵を共通鍵と呼びます。

こうしてできた共通鍵をWebブラウザからWebサーバに送ります。
Webサーバ側はこの共通鍵を最初に送った鍵を使って解読します。
そうすることで、Webブラウザが指定した鍵の内容をWebサーバが読み解くことができます。

こうしてWebブラウザとWebサーバの間にのみ通じるルール(共通鍵)ができるわけです

後は、このルール(共通鍵)に則って暗号化して通信をするだけです。
これがSSLの大まかな流れです。

大雑把にまとめると、一番最初に第三者にバレないようにこっそりとWebブラウザ側とWebサーバ側にしか通じない暗号を決めて、以降はその暗号を用いて通信をしているだけです。
こうすれば、例えデータを盗み見されたとしても何が書かれているのかサッパリわからないという寸法です。

ちなみに、Webページの通信プロトコルにHTTPというものがあるのですが、このHTTPの通信は暗号化されていません。
それでは危険なので、セキュリティをしっかり強化したHTTPSというプロトコルが存在するのですが、この末尾の“S”は“SSL”の“S”だったりします。

また、2022年時点ではSSLはバージョンアップを重ねた結果TLSという名前に変化しています。
ですが、SSLで呼び慣れてしまっているからか、TLSのことをそのままSSLと呼んだり、SSL/TLSという表現をするようになっています。
なので、その道の人でもない限りは全部SSLで覚えておけば問題ないかと思われます。

TLS(SSL/TLS)

インターネット上で暗号化通信するためのプロトコルのことです。
[Transport Layer Security]の略称です。
[transport]は[輸送・運ぶ]という意味なので、直訳すると[安全層輸送]…『セキュリティ層を設けて輸送しましょうね!』というニュアンス…かな?

TLSは、SSL/TLSと表示されていることがあります。
では、SSLとは何なのかというと、インターネット上で暗号化通信するための決まり事です

意味合い的にはSSL=TLSなんです。

SSLとTLSの関係性について記述していきますね。

まず、SSLが開発されました。
最初のバージョンは[SSL 1.0]です。
そこから改良を重ねるごとに[SSL 1.0]→[SSL 2.0]→[SSL 3.0]と変わっていきました。
ここで、次のバージョンアップは[SSL 4.0]となりそうなものですが、そうはならずに[TLS 1.0]になりました。
つまり、[SSL 1.0]→[SSL 2.0]→[SSL 3.0]→[TLS 1.0]という順番で変遷しています

その為、今私たちがSSLと呼んでいるものはTLSなのです。

一応セキュリティの専門家を交えた第三者機関で新たに設計し直したものがTLSらしいのですが、根本的なところはSSLのままです。
なので、新たに見直した境目でSSLからTLSという名称に変更したわけです

ただ、結局仕組み自体に大きな変化は無いためか、TLSという名称よりSSLという名称の方が一般に根付いています。
その為、TLSと言われても何を指しているのかわからないという方は結構居ます。
その辺りを考慮したSSL/TLSという表記なのかもしれませんね。
実際どうなのか知らんけど。

上述のように、SSLとTLSは同じ暗号化通信のための決まり事なのですが、厳密に言うと旧型か新型かという違いがあります。
その為、SSLとTLSの間に互換性は無いです。
そこだけ注意ですね。

FTP

ファイルの送受信のためのプロトコルのことです。

[File Transfer Protocol]の略で、直訳で[ファイル転送プロトコル]になります。
そのまんまですね。
なので、FTPの意味を覚えるときは英語の綴りで覚えた方が記憶に定着しやすいです。
最低限“F”がFile、“P”がProtocolだけでも覚えておきましょう。

日常生活において、パソコンやスマートフォンでニュースを見たり、ブログを見たり…インターネットに接続して“何かを検索すること”はよくあることですよね。
この一連の作業は、クライアント(私たち)からの要求をWebブラウザ(Internet ExplorerやGoogle Chromeなどのソフトウェア)が受けて、サーバ(Webサイトのファイルを管理しているコンピュータ)から必要なデータを受け取ってくるという手順を踏んでいます。

この手順におけるサーバから受け取る“データ”を“ファイル”に限定したものがFTPです。
ファイルをアップロードしたり、ダウンロードしたりする時の決まり事なんです

ちなみに、FTPに準じてファイルの送受信を行う場合、クライアント側をFTPクライアント、サーバ側をFTPサーバと呼ぶらしいです。

以上、「基本的な通信プロトコル」についての説明でした。