WebのプロトコルであるHTTPは、HyperText Transfer Protocolの略で、一般のユーザーにとっても最も身近なプロトコルの1つです。これは、前回の「HTMLやStrutsに必須の“タグ”と“サブミット”の常識」で解説したHTMLで記述された文書ファイルや、画像ファイル、動画ファイルなどを“閲覧”するために利用します。
連載第3回の「Webアプリにおけるサーバとクライアントの常識」でも解説しましたが、Webブラウザからの要求(リクエスト)に対して、サーバが応答(レスポンス)するという形でデータがやりとりされます。やりとりは数回行われることはなく、1回の送受信でコネクションは切断されます。詳細は後述します。
HTTPを通じてWebブラウザでデータを取得する場合、データを受信する前に送信される各種メタ情報「HTTPヘッダ」があります。例えば、「http://www.atmarkit.co.jp/fjava/index.html」のHTTPヘッダ以下のような内容になります。
HTTP/1.1 200 OK |
また、HTTPのポート番号は通常「80」ですが、省略可能です。ポート番号についても後述します。
HTTPSとは、HyperText Transfer Protocol over Secure Socket Layerの略で、HTTP同様リソースの送受信に利用される通信規約です。HTTPと異なる点は、次に説明するSSLによるデータ暗号化機能が付加されているところにあります。機密情報の送受信、例えば個人のプロフィール・クレジットカード情報などを安全に送受信できます。
SSLとは、Secure Socket Layerの略で、インターネット上で安全に情報をやりとりするための暗号化プロトコルです。さまざまなセキュリティ技術を組み合わせて、「盗聴」「改ざん」「なりすまし」を防止できます。
FTPとは、File Transfer Protocolの略で、TCP/IPネットワークにてファイルを転送するときに利用するプロトコルです。クライアントとサーバ間のファイル転送に使われ、処理としては主に「クライアントからサーバへのアップロード」「サーバからクライアントへのダウンロード」の2つとなっています。
コネクションの確立には、「アクティブモード」「パッシブモード」の2パターンが存在し、アクティブモードは、通常のポートとデータ送信用ポートを利用しサーバからクライアントに対してコネクションを張る転送モードです。このモードは、第三者による「なりすまし」が可能で、セキュリティ上で安全とはいえません。
パッシブモードは、アクティブモードとは逆で、クライアントからコネクションを張る転送モードです。危険性が少なく、現在ではこちらのモードが主流となっています。
SOAPとは、Simple Object Access Protocolの略で、アプリケーション同士のメッセージ交換、データやサービスの呼び出しを行う、XMLやHTTPなどを基としたプロトコルです。拡張性が高いのが特徴で、多くの通信プロトコルで利用可能です。
SOAPによる通信は、XMLに「エンベロープ」と呼ばれる付帯情報が付いたメッセージを交換します。クライアントとサービス双方がSOAPの生成エンジン(SOAPプロキシ)・解釈エンジン(SOAPリスナ)を持つことにより、異なる環境間での通信が可能です。
SOAPの概要を説明したところで、SOAPのサンプルを基に、もう少し詳しく説明したいと思います。
POST /WebSite1/WebService.asmx HTTP/1.1 |
このように、SOAPヘッダと本体を明確に区別することによって、プロトコルに依存しない情報交換を実現しています。SOAPヘッダさえ変えてしまえば、ほかのプロトコルでの通信も可能です。
RESTとは、REpresentational State Transferの略で、HTTPを使って通信を行う手法の1つです。WebブラウザでURLにアクセスし、HTMLを取得するのはHTTPと同様で、異なる点は取得するものがXMLであるところです。
RESTの特徴は、動作確認が非常に安易であることです。URLの入力で動作確認が行えるため、開発におけるテストの場での効率向上に有効です。また、多くの開発言語で利用できるところも利点です。パラメータの書式は以下のとおりです。
http://【指定のURL】?【パラメータ1】&【パラメータ2】&……&【パラメータn】 |
メッセージングとは、データ・情報(メッセージ)交換を意味し、SOA(サービス指向アーキテクチャ)における基盤の1つです。
メッセージを送信するときは、アプリケーションから「プロトコルスタック(Protocol stack)」に依頼され、プロトコルスタックとLANアダプタがメッセージをサーバに送信します。Webブラウザのアドレス欄にURLを入力してからの流れをまとめてみます。
URL入力→URL解読→HTTPリクエスト作成→OSにメッセージ送信依頼 |
依頼を受けたプロトコルスタックがTCPプロトコルで送信する動きについて説明していきます。
まず初めに、ソケット(socket)を作成し、サービス固有のポート番号をソケットに割り当てます。ソケットは、メモリ領域を確保し、通信を行うための制御情報を記録することで作成されます。ソケットを作成したらクライアント側のソケットをサーバ側のソケットに接続します(クライアント側のIPアドレスやポート番号をサーバに知らせる)。URLでは、ポート番号の指定は省略されることが多いです。
コネクションが確立したらデータの送受信を行います。まずはクライアントからサーバにリクエストを送り、サーバからレスポンスを受け取ります。サーバ側がレスポンスを送り終わったら切断し、しばらくしてからソケットを抹消します。
GET/POSTは、サーバにリクエストを指示する「HTTPメソッド」という命令の一部です。HTTPメソッドにはほかにも、HEADやDELETE、PUT、TRACEなどありますが、Webアプリケーション開発においては多くの場合、HTMLページや画像ファイルの取得をリクエストするためのGET/POSTパラメータが使用されます。
GETパラメータとは、URLとリクエストパラメータを組み合わせて情報を取得する方法です。
POSTパラメータはGETパラメータと違い、明示的に指定しないと使用できません。POSTパラメータとして情報を取得するため、HTMLなどのフォームから入力する方法を使用します。
次ページでは、ソースコードを交えながらそれぞれについて解説します。
Copyright © ITmedia, Inc. All Rights Reserved.