知ってた?ナルホド!
こんにちは!コーダーの平原です。
HTMLやCSSファイルを編集して、Webサーバーにファイルをアップするとブラウザ上で編集したWebページを閲覧することができます。
普段は当たり前のように閲覧しているWebページですが、私たちがWebページを閲覧するために、WebブラウザとWebサーバーではどのようにして通信を行い、Webページを表示するデータを収集しているか興味を持ちました。
調べてみると、多くの仕組みが関わり合っていることが判明しましたので、ご紹介いたします!
1. 通信プロトコルとは
通信プロトコル(別名 ネットワーク・プロトコル)とは、ネットワーク上での通信に関する規約を定めたものです。
異なるコンピューターシステムやソフトウェアがデータ交換を行う上で、データを要求する側と応答する側、双方が解釈できる共通の手順が示されています。
プロトコルには様々な種類があり、それぞれ仕様が明確に決められています。コンピューター同士が互いに通信する為には、双方が同じプロトコルを理解し、処理できることが必要です。
2. TCP/IPについて
インターネット上の通信は全て、IPアドレスに対する通信プロトコルであり、この方式のことを「TCP/IP(別名 インターネット・プロトコル・スイート)」といいます。
信頼性・確実性を重視したデータ送受信を行う「TCP(Transmission Control Protocol)」と、データ・パケットを指定された場所まで届ける「IP(Internet Protocol)」という2つのプロトコルだけではなく、IPを利用・通信する際に必要となる多くのプロトコル群の総称として使われます。
3. プロトコルスタックとOSI参照モデル
TCP/IPは、プロトコルスタックという階層的な通信規約の設計で成り立っており、「アプリケーション層」、「トランスポート層」、「インターネット層」、「ネットワークインターフェース層」の4つの階層で構成されています。
又、OSI(Open Systems Interconnection)参照モデルという、ISO(国際標準化機構)が定めたネットワーク・モデルの統一規格では、「アプリケーション層」、「プレゼンテーション層」、「セッション層」、「トランスポート層」、「ネットワーク層」、「データリンク層」、「物理層」の7つの階層に分けて定義されます。
各階層は、下位層から特定のサービスを受けて、上位層に特定のサービスを提供します。上位層と下位層の間でサービスのやり取りをする時の規約をインタフェースと呼び、通信相手の同じ階層とのやり取りをするときの規約がプロトコルです。
OSI参照モデルの7つの各階層は、以下のような特徴を持っています。
- 第7階層 アプリケーション層
- 利用されるアプリケーションの中で通信に関係する部分を定めています。ファイル転送や電子メール、遠隔ログインなどを実現するためのプロトコルがあります。
- 第6階層 プレゼンテーション層
- 機器固有のデータフォーマットと、ネットワーク共通のデータ形式に変換する役割を持っています。
- 第5階層 セッション層
- データが流れる論理的な通信路の確立や切断など、トランスポート層以下の層のデータ転送に関する管理を行います。
- 第4階層 トランスポート層
- 両端の機器間のデータ転送の管理を行います。
宛先のアプリケーションにデータを確実に届ける役目を持っています。 - 第3階層 ネットワーク層
- 宛先までデータを届ける役割を持っています。
宛先は、複数のネットワークがルーターで繋がった先にある場合があります。その為の、アドレスの管理と経路の選択をします。 - 第2階層 データリンク層
- 物理層で、直接接続された機器間でのデータフレームの識別と転送を行います。ビットの列を意味のあるフレームに分けて、相手に伝えます。
- 第1階層 物理層
- ビットの列を電圧の高低や光の点滅に変換したり、逆に電圧の高低や光の点滅をビットの列に変換したりします。コネクタやケーブルの形状の規定をします。
4. 代表的なプロトコル
代表的なプロトコルとしては、WebブラウザでWebページを表示する際に利用する「HTTP(Hypertext Transfer Protocol)」があります。
近年常時SSL化対応を求められている、暗号化通信のプロトコルである「SSL(Secure Sockets Layer)」は、HTTPS(Hypertext Transfer Protocol Secure)から始まるホームページで使われます。
又、「SSH(Secure Shell)」は、リモートシェルに特化しており、Linuxサーバの管理など、セキュアな通信を行う際に使用します。
他には、ファイル転送で使用する「FTP(File Transfer Protocol)」、メールの送受信を行う「SMTP(Simple Mail Transfer Protocol)」や「POP3(Post Office ProtocolのVersion3)」などがあります。
5. ポート番号
TCP/IPにおける通信を行う際に、使用するアプリケーションプロトコルを識別する為の「ポート」という番号が設定されています。
ポート番号は0〜65,535番まであり、以下の3つの種類に分けられます。
- 0~1023番 ウェルノウンポート
- 1024~49151番 レジスタードポート
- 49152~65535番 ダイナミックポート
ウェルノウンポートは、IANA(Internet Assigned Numbers Authority)という、インターネットに関連する番号を管理する組織によって、特定のアプリケーションプロトコルが利用しています。
又、レジスタードポートに関しても、IANAが利便性を考慮して設定されています。
ダイナミックポートとは、自由に使用できるポート番号で、クライアント側のアプリケーションが特定のポートを設定しなかったり、サーバー側のアプリケーションがウェルノウンポートを使わずに、クライアントと接続するときに使われます。
代表的なポート番号は以下の通りです。
- HTTP : TCP/80
- HTTPS : TCP/443
- SSH : TCP/22
- FTP(データ) : TCP/20
- FTP(制御) : TCP/21
- SFTP : TCP/22
- SMTP : TCP/25
- POP3 : TCP/110
6. まとめ
通信を行うためにはTCP/IPというプロトコル群があり、デバイスとサーバー感の通信には必ず通信プロトコルのポート番号を指定していることがわかりました。
日常でWebブラウザを起動して、Webページを表示するまでの時間はほんの僅かですが、このほんの僅かな時間で様々な仕組みや技術が働いています。
近い未来には、ソサエティ5.0により身近なあらゆるものがインターネットに繋がるといいます。そんな便利な社会で、安心で安全なネットワークでコミュニケーションや情報収集・発信を行う為にも、TCP/IPをよく理解することが大切ですね。
参考サイト :