iTEC HOME

メニュー

Menu

アイテックオンライン学習へようこそ!

さあ、さっそく学習を始めましょう!

アイテックID
パスワード

BACK

お電話でのお問い合わせ

03-6824-9001

土日祝日を除く 10:00〜17:00

BACK
CLOSE

【到達性抜群のHTTPの今後と課題】

 WebサーバとWebブラウザ間でデータを送受信するために登場したHTTPだが、システム間の連携に使われるWebAPIの通信プロトコルとして広く普及してきた。

 イーサネットがATMやフレームリレーを駆逐して来たように、HTTPも他の通信プロトコルを駆逐する勢いで普及している。そんなHTTPの克服すべき課題について考えてみる。

 HTTP(Hyper-Text Transfer Protocol)をベースとするWebAPIは、さまざまなシステム間連携に利用されている。 例えばECサイトとクレジットカードの決済代行事業者のシステムとの連携、クラウド環境上の仮想マシンの制御など、用途は多岐にわたる。

 HTTPがこうしたシステム間連携のベースプロトコルとして採用される理由としては、その可読性の高さや、拡張性の高さ、そして何よりもFirewallやNATルータとの親和性の高さが挙げられる。
インターネット上でサービスを提供する場合、サービス提供先の門戸をできる限り広げたい。
この時に考えないと行けないのは、顧客側のネットワーク構成から来る制約や、ネットワーク機器の仕様である。 一般的な企業では業務上必要なインターネット通信というとWebとメールに絞られてくる。

 このため、企業のネットワークではWebとメールの通信以外を許可しないネットワーク構成になっているケースも多い。HTTPはこうした環境において問題なく、言い換えれば顧客側のネットワーク構成に手を加える必要なく通信を行えるプロトコルである点で最強である。

 また、HTTPはテキストベースのプロトコルであるため、パケットの情報を人間が簡単に読解できる。 これはプログラムのデバッグや動作確認を容易にしている。
そしてHTTPパケットはヘッダ部とペイロード(ユーザデータ部)に分かれており、ヘッダ部には任意のフィールドを追加できるため、拡張性が極めて高い。

 近年話題になっているものにWebSocket(※1)が挙げられる。WebSocketを使うことでチャットやビデオ会議などのリアルタイム通信が可能になり、益々HTTPの利用シーンが増えている。

 一方、HTTPの泣き所は、ヘッダ解析のオーバヘッドの高さや、ロードバランシングの難しさにある。WebブラウザとWebサーバ間のセッションは、TCPコネクション1本と一致しない。

 TCPはコネクション型プロトコルとも呼ばれ、クライアントからサーバにコネクションを張ると、一連の処理が終わるまで1つのコネクションを確立したままの状態にする。

 しかしHTTPでは、例えばECサイト上で購入したい商品をカートに入れて、購入ページで注文を確定するまで、1つのHTTPセッションが確立されるのであるが、TCPコネクションは、何度も確立されては切断される。

 ロードバランサの多くはLayer4ロードバランサ(※2)、つまりTCPのコネクション単位で負荷分散を行うが、ECサイトのカートシステム等の様にWebブラウザとWebサーバ間のHTTPセッションに関連付けてデータ(ここでは、カートの中身)を保持する場合、HTTPセッションが継続する間は同じWebサーバに転送する必要がある。
するとロードバランサにもTCPのコネクション単位ではなく、このHTTPセッション単位で転送先のWebサーバを維持する必要性が出てくる。このためにHTTPヘッダ部にあるCookieの情報を解析し、ロードバランス時の判断材料にするロードバランサも存在する。
こうしたロードバランサをLayer7ロードバランサ、あるいはLayer7スイッチ(以下、L7スイッチという)と呼ぶ。

 HTTPのヘッダ部はテキストベース、かつ可変長である。 このためヘッダ部に存在するCookie情報の切り出しや構文解析は、バイナリベースのIPヘッダやTCPヘッダに比べ、より多くの処理量を必要とする。こうした解析をソフトウェアで行っていては通信路の速度が遅くなってしまうことから、L7スイッチにはこうした処理を専用のチップで行うものも多い。

 その結果、本来は通信の中継に掛かる処理量が多いはずのHTTPであるが、あらゆる通信の土台になることさえ可能な状況になりつつある。

 こうしたことから、今後のネットワークエンジニアにとって、HTTP通信をマスターすることがとても重要になると考えられる。

 

執筆者『山本 明生(やまもと あきお)氏』プロフィール

・ベンダー系ソフトハウスにて証券系・銀行系・航空系システム開発に従事、通信サブシステムの開発を中心に担当。独立後、主として通信システム・セキュリティ関連システムの企画・開発・販売およびコンサルティングに従事する傍ら、ITEC
にて情報技術者教育を行う。
山本 明生


<注釈・解説>

※1:WebSocket
WebSocketとは、WebサーバとWebブラウザの間でソケット通信を行なうための
技術仕様。 Webページ上のスクリプトからソケット通信を利用するためのインターフェー
ス仕様を定めたもので、接続中はサーバ側から任意のタイミングで通信を開始
することができるようになる。使用するにはWebブラウザとWebサーバソフトの
双方が対応している必要がある。
これまでブラウザとサーバの間では、ブラウザからリクエストを送信してサー
バがそれに応答するという形の通信しかできず、サーバから任意のタイミング
で情報を送信するプッシュ配信の実装が難しかった。WebSocketによって両者
の間に永続的なTCPコネクションを構築することができ、双方がそれぞれ必要
に応じて送信を開始できるようになる。

※2:Layer4ロードバランサ
ロードバランサとは、外部から送られてくるデータや処理要求を、同等に機能す
る複数の装置に振り分けて一台あたりの負荷を抑える装置。単にロードバランサ
という場合は、TCPのコネクション単位で通信を複数の装置に振り分けるLayer4
ロードバランサを指すことが多い。

引用・参考 Wikipedia・IT用語辞典

パスワードをお忘れの方

ご登録のアイテックIDを送信してください

アイテックIDを入力してください。

メールを送信しました。

ご登録のメールアドレスに
メールを送信しました。

2015年10月1日以前に
ECサイトに会員登録された方

ECサイトに登録していたメールアドレスを入力してください

ECサイトに登録していたメールアドレス

確認完了

登録完了しました。

メール送信完了

登録いただいたメールアドレスに招待用リンクをお送りしました