サマリー
WEB+DB EXPRESS vol122より。Web技術について整理する。まずはインターネット技術の概要と各種プロトコルについて。
インターネット技術概要
まずはWeb技術のベースとなるインターネット技術について。インターネットの始まりは複数のコンピューターを経由して通信するしくみであるARPNETから始まる。ARPANETは1960年代後半から研究が開始され、1970年台初頭ににアメリカで実現されたもので、パケットと呼ばれる通信データを細切れにしたデータを複数のマシンを経由して通信するというものになる。
当初は耐障害性の高いネットワークを構築するという軍事目的から始まったものであるが、それらを広く世界中で使われる標準技術まで昇華させたものがインターネットプロトコルスイート(スイートは一式を意味する)になった。インターネットプロトコルスイートで使われいるプロトコルはいくつかの階層に分かれており、上位のプロトコルが下位のプロトコルを隠蔽することにより通信を実現している。これをカプセル化と呼ぶ。このカプロセル化によりそれぞれの階層の間のモジュール性が担保され様々なネットワークの相互接続が可能となる。プロトコルの概要を以下に示す。
またこれらインターネットプロトコルと同時期に策定された標準であるOSI(Open Systems Interconnection)がある。このプロトコルは最終的には採用れなかったが(インターネットプロトコルスィートが採用)、システム構成を議論するツールとして便利なためOSI参照モデルとして以下のようにインターネットプロトコルスィートと共に導入される。
このインターネットプロトコルスイートで使われるプロトコルに関して文書化されたものがRFC(Request for Comments)となる。
ここでまずネットワークインターフェース層について述べる。ネットワークインターフェースのプロトコルは最下層の物理的なデバイス間での通信を担保するもので、直接繋がった機器へのデータ通信を行う機能だけを持つ(複数機器を介した通信は上位のプロトコルで提供)。具体的なプロトコルとしては有線LANで用いられるEthernetや無線LANで用いられるWifi等がある。
次の階層としてはインターネット層がある。インターネット層は複数機器を経由した通信を提供するレイヤで、将来的に新しい機器どうしの通信方式が出てきてもネットワークインターフェースそうで抽象化されているので、インターネット層のプロトコルに影響を与えることがなく導入できる。インターネット層で使われるプロトコルにはIPv4とIPv6がある。これは複数機器を識別するためにIPアドレスという番号を付与し(IPv4では32ビットの情報を8ビットづつに区切る。8ビットの値は0-255なので、その範囲の値が例えば192.168.0.1のように並ぶ。これに対してIPv6では128ビットに拡張したものとなる。
トランスポート層は、複数機器をつなげるだけではなく、パケットのエラー処理や複数コネクションの管理等ネットワークとして実現しなければならない機能を提供するもので、TCPとUDPという2つのプロトコルがある。
TCPは欠損パケットの再送処理、到着するパケットの順番の保証などの機能を提供し、信頼性の高い通信を担保するプロトコルとなる。TCPはコネクション型のプロトコルとなり、通信を開始する前に3ウェイハンドシェイクという方法を用いてお互いの通信可能状況を確認する。この通信可能状況の確認を行なった後での通信によりコネクションの信頼性は高められる。また同じ機器どうしでも違う通信が行えるように複数コネクションの機能も提供されている。そのためTCP通信ではポート番号という番号でコネクションを区別する。HTTPでの80番のようによく使われるアプリケーションの通信には予め番号が予約されている
UDPは高速性に重きを置いたプロトコルとなる。そのため通信相手の応答も待たず(コネクションレス)通信を行う。また欠損データの再送も行わないためデータが欠損しても大きな問題が起きない音声や動画などのストリーミング通信に主に用いられる。
TCPの上位レイヤとして高速/高信頼性を求めたプロトコルとしてQUICがある。TCPでは暗号化通信は別のレイヤで行われるが、QUICではそれらが統合されている。このQUICはhttp等のプロトコルで用いられている。
個々ので述べたネットワークの下層のプロトコルで構成されたネットワーク基盤を使って、どのような用途としてして使用するかを決めるのがアプリケーション層のプロトコルとなる。
HTTP(Hypertext Transfer Protocol)はアプリケーション層の代表的なプロトコルで、ブラウザがWebサーバーと通信する時に使用するものとなる。もともとはHTMLのデータ転送を行うのが主たる用途だったが、Web技術の発展と共に様々な機能追加とバージョンアップが行われてきた。
DNS(Domain Name System)は複数機器での通信において数字であるIPアドレスをホスト名とよばれる名前(例:www.example.com)名前をつけて、人はホスト名を使い実際の通信の際にIPアドレスに変換するサービスを言う。このDNSでは、すべてのホスト名とIPアドレスの対応表をI限で管理することは困難なため、ドメインというホスト名のグループを単位として各ドメインの保持者が自分の対応票だけを管理する分散データベースの機能を持つ。またDNS情報はレジストラと呼ばれる中立性を持った機関で管理される。
SMTP(Simple Mail Transfer Protocol)はEメールを送信するためのプロトコルで、メールの受信にはPOP3やIMAP(Internet Message Accesss Protocol)が用いられる。
インターネット上のセキュリティを担保するプロトコルはSSL(Secure Socket Layer)やその後継的なプロトコルであるTLS(Transport Layer Security)が利用されている。TCPとUDPではSSL/TLSが別のプロトコルとして提供されているが、QUICではTLSを内包している。
次回はHTTPSについてもう少し詳細に述べる。
コメント
[…] WEB+DB EXPRESS vol122より。HTTPは前述のようにWebでクライアントとサーバーが通信するときに使用されるアプリケーション層のプロトコルとなる。HTTPのHであるハイパーテキスト(Hypertext)は、複数の文書をむすびつける機能を指す。HTMLではリンクという機能を使ってハイパーテキストを実現する。 […]
[…] これらを行う処理の流れとしては大きく分けると4つの領域が存在する。一つ目がウェブまたはwordやpdf等のドキュメントからのデータの取得から始まり、それらからのtextデータの抽出と、正規化からなる生テキストの処理と構造化であり、二つ目が構造化されたデータへの機械学習/コーパス等による情報付与、そして最後がそれらの情報の活用(UXを含む)になる。 […]
[…] インターネット技術概要 インターネット技術の概要と各種プロトコル […]
[…] そもそも、インターネットでの通信はTCP(Transmission Control Protocol)やIP(Internet Protocol)で規定された手順で通信パケットの送受信を行い。そのプロトコルの上でウェブブラウザ(クライアント)とサーバーがHTTP(Hypertext Transfer Protocol)あるいはHTTPS(Hypertext Transfer Protocol Secure)を使って通信する形となる。TCP/IPがデータの塊を誤りなく送信する手段であるのに対して、HTTPはクライアントがサーバにリクエストメッセージとして「何を」「どうして」欲しいのかを伝え、サーバはこれにレスポンスメッセージを返すものとなる。この時、URLが「何を」、メソッドが「どうして」に当たる。 […]
[…] インターネット技術概要 – インターネット技術の概要と各種プロトコル […]