初学者ですが個人的に復習、理解を深めるためにまとめてみました。
HTTP/HTTPS通信の基礎
HTTPとは
HyperText Transfer Protocolの略称。
HyperTextは文書内の任意の位置や要素に、他の文書への参照(所在情報や識別情報)を埋め込み、複数の文書を相互に結びつけるシステムのこと。
Protocolはコンピューター同士が通信をする際の手順や規約などの約束事のこと言い、Webページを閲覧するためには、WebブラウザとWebサーバーとがやり取りするためのHTTPというプロトコルが使われる。
Webサーバの構成
今日インターネットを利用でWebを閲覧するとき、ユーザーの手元にはWebブラウザと呼ばれるクライアント用ソフトウェアと、閲覧される情報であるWebページをを保管しているWebサーバが必要になる。
WebブラウザがWebサーバに要求する情報をHTTPリクエスト、またWebサーバがこれに応答し返信する情報をHTTPレスポンスといい、HTTPを用いて一つのコンテンツを表示をするには、このリクエストとレスポンスのやり取りが行われる。
HTTPの種類とHTTPメソッド
ブラウザから送信されるのはコンテンツを取得するためのリクエストだけではなく、入力フォームにて入力されたデータやアップロードされたファイルなどの送信データも含む。
リクエストの用途にに応じてサーバに要求する処理内容も異なるので、HTTP通信ではHTTPメソッドによって、リクエストの種類を判別する。
一般的に使われるHTTPメソッドとしては、リクエストしたURLのリソースを取得するGETメソッド、リクエストしたURLに対して入力データを送信するPOSTメソッドがある。
GETメソッドとPOSTメソッドの違い
見た目的な違いはURLである。
GETメソッドは渡す値をURLの後ろにくっつける。
(例)https://www.google.co.jp/?param1=value1¶m2=value2
POSTメソッドは渡す値を人間の目には見えないところにくっつける。
(例)https://www.google.co.jp/
では、GETメソッドとPOSTメソッドどちらを使うほうがいいのかというとPOSTメソッドのほうがいい場合が多い。
理由としては、
1.GETメソッドはPOSTメソッドと比べて渡せる情報量が少ない
2.GETメソッドは渡した値が履歴に残る
と以下のことから、どちらを使うか迷ったときはPOSTメソッドを使うほうが良い。
HTTPSとは
HTTPSもHTTPと同じプロトコルの一つだが、HTTPSではSSL(Secure Socket Layer)というプロトコルが使用されている。
SSLは暗号化して送受信するプロトコルであり、HTTPとHTTPSの主な違いはSSLによる通信内容が暗号化されていないか、されているかの違いである。
厳密に言うと現在はSSLではなくTLS(Transport Layer Security)というプロトコルが使われているが、SSLという言葉が長い間使われてきたため、現在でもSSLと呼んだり、あるいはSSL/TLSと呼ばれたりする状況になっている。
また、Google ChromeではHTTPSに対応したホームページを開くとブラウザのURLの左の方に**「保護された通信」、あるいは「組織名」**が表示される。
「保護された通信」、「組織名」ともに通信は暗号化されているが、組織名が表示されている場合は、暗号化されて通信しているだけでなく、ドメインの所有者が実在する組織であることを表し、サーバに設定されている証明書の種類が異なる。
この場合の証明書の種類は、通信先のサーバが正当な所有者のものであることを保証する「証明書(SSLサーバ証明書)」となり、ホームページの所有者の正当性を確認することができる。
つまり、
1.通信の暗号化
2.サーバの所有者の正当性
この二つがHTTPとの違いであり、HTTPSの重要な機能である。
近年はHTTPよりもセキュリティが優れていることから、HTTPSがスタンダードになってきている。
参考文献
http://e-words.jp/w/SSL.html
https://cybersecurity-jp.com/security-measures/25772
https://www.724685.com/word/wd140305.htm
https://wa3.i-3-i.info/diff7method.html
https://kotobank.jp/word/プロトコル-8535
http://e-words.jp/w/ハイパーテキスト.html
http://e-words.jp/w/HTTP.html
河野吉男、原田勉、深澤博、丸山智久、後藤悠「Webアプリケーションサービス構築」エスシーシー (2013/3/1)
東浩二、山田祥寛「初めてのJSP&サーブレット」 秀和システム (2016/10/1)