ボクココ

個人開発に関するテックブログ

HTTP のホントの所。

いよいよ明日HTTPについてのプレゼンを行うわけだが、20分という限りある時間の中で発表できることはほんのわずか。てことで、せっかくこの勉強を今までしてきたので発表できない分をこちらのブログに補足として書き足しておこうと考えた。
かなり自分なりの言葉で書いてある部分もあると思う。そこらへんは各自調べるなり、コメントにかくなりでお願いします。

HTTPの問題点
1セッションステートレス
ネットワークにおける「セッション」とは、クライアントが望むデータをやり取りして「話し合い」を成立させること。
セッションの中では、誰と誰が今しゃべっていて、さっきしゃべったことっと、今しゃべっていることは関係があるという状態にしなければならない
HTTPでは、1つのファイルのやり取りが1つのセッションになる。複数のセッションの間では、情報が保持されない。
例えば、買い物かご等のような機能は実現できない。
2相手を確かめない
3平文での通信
4改ざん防止が無い
サーバがユーザを確かめるユーザ認証
ユーザがサーバを確かめるサーバ認証
HTTPメッセージが改ざんされていないかを確かめるメッセージ認証 ・・・これらがない!
どうすれば・・・?
(気になるその方法はHTTPの応用ということで、発表します)


暗号化
共通鍵暗号化方式・・鍵データを使ってデータを暗号化して暗号文にする。それは同じ鍵データを使って複合しないと元に戻らない。
公開鍵暗号化方式・・公開鍵と秘密鍵がないと複合できない。 公開鍵がばれても第三者は暗号を複合できない
組み合わせ・・クライアントが公開鍵を作成。それをサーバに渡す。サーバは共通鍵を作る。
        共通鍵でデータを暗号化してその共通鍵を公開鍵で暗号化する。データと暗号化された共通鍵をもらい、
        共通鍵の暗号文を秘密鍵(共通鍵で複合できる秘密鍵)で復号。複合した鍵をで暗号化したデータを複合という手順。
この組み合わせでできているのがHTTPS(HTTP over SSL)
SSL・・・セキュリティプロトコル。SSLが標準化されたものをTLSと呼ぶ。
ディジタル証明書・・クライアント側が最初に作る公開鍵とその持ち主の証明書


プロキシサーバ
なんでプロキシ使うの?
・HTTPだけを考えれば、インターネットに接続する必要があるのはプロキシサーバだけということになる。
つまり、グローバルIPアドレスが1つあればよいことになる。それがグローバルIPアドレスの節約になる。
・プロキシがリソースをキャッシュする。UAが個別に持っていたキャッシュをまとめてプロキシが持つ。
こうすることでWebサーバのあるインターネットへのデータの送信量が減る。
デメリットとしては一台でやってるため、要求の数が多くなると、逆に遅くなる時もある。

(まだまだプロキシを使う理由はあります。その残り二つの理由は発表にて)

バーチャルホスト
バーチャルホスト機能を使えば、1つのサーバに複数のドメインを配置できる。1つのドメインに1つのサーバといった無駄をなくす
複数のドメインにすると、どのサーバだかわからなくなるが、それをHostヘッダにドメイン名を入れることで解決する。

こんな感じで。いきなり応用系が出てしまっているけど、補足と言うことでご容赦を。