参考:https://www.jianshu.com/p/8fe93a14754c
、URIの構造
HTTP
ユニフォームリソース識別子(使用してURI
)データを送信し、接続を確立します。URL
(ユニフォームリソースロケータ)は、特別な種類でURI
、リソースを検索するための十分な情報が含まれている、我々は一般的に使用されURL
、そして完全にはURL
次のセクションが含まれます。
http://www.fishbay.cn:80/mix/76.html?name=kelvin&password=123456#first
1.プロトコルセクション
URL
プロトコル部分http:
ページが使用していることを示す、HTTP
後ろに、プロトコルを//
区切り
2.ドメイン部分
ドメイン名はwww.fishbay.cn
、する必要がある、あなたがリクエストを送信するときに、DNS
サーバーを解決しますIP
。最適化のための要求は、直接使用することができる場合IP
に使用されるドメイン名の一部として、
3.ポートセクション
後者のドメイン80
ポート、およびドメイン間による:
パーティションは、ポートがありませんURL
必要な部分。ポートがある場合80
、または省略することができます
4.仮想ディレクトリセクション
以下からのドメイン名の/
最後に最初/
の日付は、仮想ディレクトリの一部です。ここで、仮想ディレクトリがないURL
仮想ディレクトリで、本実施形態の本質的な部分であります/mix/
ファイル名の一部5.
最後からドメイン名/
への開始?
日は、ファイル名の一部であり、そうでない場合は?
、それが最後のドメイン名で/
のスタート#
、日付、ファイル名の一部であり、そうでない場合?
と#
、最後のドメインからの/
開始から終了まで、すべてのファイル一部に名前を付けます。この例では、ファイル名76.html
、ファイル名ではありませんURL
の必要な部分、そうでない場合は、ファイル名、デフォルトのファイル名
6.アンカー部
#
始まり最後に、それはアンカーの一部です。このセクションのアンカーされfirst
、アンカーではありませんURL
必要な部分
7.パラメータ部分
?
始まりへの#
一部との間の部分、これまでにも、検索クエリの一部の一部として知られているパラメータが、あります。この実施形態では、パラメータは、name=kelvin&password=123456
種々のパラメータのうち、複数のパラメータがある場合、&
セパレータとして。
二、リクエスト
HTTPリクエストであっ要求ライン(リクエストライン)、リクエストヘッダ(ヘッダ)、空白ライン部と4つの要求データ。
request
は次のような構造は次のようになります。
GET /mix/76.html?name=kelvin&password=123456 HTTP / 1.1 ホスト:www.fishbay。CNは アップグレード -insecure-要求:1人の ユーザー -agent:Mozillaの/ 5.0(Macintosh版、インテルのMac OS X 10_11_5)のAppleWebKit / 537.36(ヤモリのようにKHTML、)クローム/ 56.0.2924.87サファリ/ 537.36 受け入れ:text / htmlで、アプリケーション/ XHTML + XML、アプリケーション/ XML、Q = 0.9、画像/ WEBP、* / * ; Q = 0.8 のAccept-エンコーディング:GZIPは、SDCH、収縮 受け入れ言語:ZH-CNを、ZH; Q = 0.8、EN; Q = 0.6
1.リクエストライン
GET
要求タイプ、/mix/76.html?name=kelvin&password=123456
アクセスされるリソースは、HTTP/1.1
プロトコルのバージョンであります
2.リクエストヘッダ
要求ヘッダーから第二行は、Host
リクエスト(ホストのドメイン名)の宛先は、User-Agent
クライアントの情報であり、ブラウザによって定義されたブラウザ情報の種類を検出し、自動的に各要求を送信することが重要です。
3.空行
ヘッダ次のリクエストは、空白行を持っている必要があります
4.要求データ
また、データ要求リクエストボディと呼ばれ、他のデータを追加することができます。リクエストボディのこの例では空です。
応答
典型的には、サーバはクライアントの要求を受信した後、そこになりHTTP
、応答メッセージ、HTTPレスポンスも作られている4
、すなわち、部品:ステータスラインを、最初、空白行に応答して、およびその応答です。
次のようにデータをキャプチャ:
HTTP / 1.1 200 OK サーバー:nginxの 日:月、2017年2月20日9時13分59秒GMTの コンテンツ -タイプ:テキスト/平野;のcharset = UTF-8は、 ヴァリ:なAccept- エンコーディング キャッシュ -制御:無店舗 Pragrma:NO- キャッシュが 有効期限:木、1970年1月1日午後12時00分○○秒GMT キャッシュ -制御:NO- キャッシュ 内容は -encoding:gzipで 転送 -Encodingを:チャンク プロキシ -connectionを:キープアライブ { "コード":200、 "予告":0 、 "続く":0、 "前進":0、 "MSG":0、 "コメント":0、"pushMsg":NULL、 "友人":{ "snsCount":0、 "カウント":0、 "celebrityCount":0}、 "lastPrivateMsg":NULL、 "イベント":0、 "newProgramCount":0、 "createDJRadioCount":0、 "newTheme":真 }
1.ステータス行
プロトコルバージョン、ステータスコード、ステータスメッセージ用組成物によるステータス行
2.レスポンスヘッダー
クライアントへの応答の一部のヘッダ情報など、使用することができるDate
(応答生成日付)、 Content-Type
(MIMEタイプおよびエンコード形式)、 Connection
(デフォルト長いリンク)、等
3.空行
レスポンスヘッダとその応答の間に空行が存在しなければなりません
4.レスポンスボディ
レスポンスボディ、この場合の重要な情報
第三に、ステータスコード
HTTP
プロトコル・ステータス・コードによって3
数字、最初の数字は、応答の種類、合計定義5
カテゴリ:
1 1xx
:指示情報は、 -要求が受信されたことを示し、処理は続行します
2 2xx
:成功-受け入れ、理解し、要求が正常に受信されたことを示します
3 3xx
:リダイレクション-要求を満たすためには、さらに操作を行わなければなりません
4 4xx
:クライアントエラー-リクエストに構文エラーがありますか、要求が達成できません
5 5xx
:サーバーエラー-サーバーは、正当な要求を達成するために失敗しました
ここで、共通のステータスコードは次のよう:
OK 200 // クライアント要求が成功した 400不正な要求 // 、クライアントは、構文エラーを要求し、サーバが理解することはできません 401権限 // 要求が許可されていない、ステータスコードは、WWW-Authenticateヘッダフィールドを使用しなければならない 禁断の403 // サーバは要求を受信したが、サービスを提供することを拒否した 404が見つかりません // 要求されたリソースが、例えば存在しません:間違ったURLを入力します。 500内部サーバーエラー // サーバー予期しないエラーが発生した との503本のサーバー利用できない論文 // サーバは現在のクライアントを扱うことができないという要求を一定期間後に正常に戻してもよいです
第四に、リクエストメソッド
HTTP
それは様々なニーズを満たすために、要求メソッドを複数定義しています。HTTP/1.0
3つの要求定義GET
方法を:、POST
そして HEAD
、にHTTP/1.1
、さらに5つのリクエストOPTIONS
メソッドを:PUT
、DELETE
、、TRACE
と CONNECT
。次のように各特定の機能要求の方法があります。
指定されたページ情報への要求を取得し、エンティティボディを返します。 HEAD同様のGET要求が、応答は、ヘッダ取得するために、特定のコンテンツに返されない POSTは、指定されたリソース(例えば、ファイル送信フォームまたはアップロード)にデータ処理要求を送信します。リクエストボディに含まれるデータ。POSTリクエストは、新たな資源の創出につながる可能性 / 変更または既存のリソース。 サーバからクライアントに送信された文書データの具体的な内容を置き換えるPUT。 リクエストに指定されたページを削除するには、サーバーを削除します。 HTTP CONNECT / 1. 1つのプロトコルは、プロキシサーバパイプラインモードへの接続のために予約することができます。 OPTIONSは、クライアントがサーバーのパフォーマンスを表示することができます。 TRACEエコーサーバは、主にテストや診断のため、要求を受信します。
実際のアプリケーションプロセス、GET
及びPOST
複数の使用、次のように二つの違いについて説明します。
1.リクエストパラメータの違い
GET
要求は、スプライシングのリクエストパラメータであるURL
戻る?
との間の複数のパラメータを用いて、パーティション&
、それが送信されるように、それは、英数字である場合、それが有する空間または中国語である場合、;接続のBase64エンコーディング
POST
データは、リクエストボディに提出を要求、それはしないだろうURL
に表示します
前記送信データのサイズ
GET
:ブラウザとサーバは制限するURL
長さを、データの送信は、通常、限られています2K
POST
:いないことによりデータので、URL
データの送信、それは一般的に比較的多量に送信することができます
3.データ解析
GET
:Request.QueryString
取得した変数の値
POST
:Request.form
取得した変数の値
4.セキュリティ
GET
:リクエストパラメータはにURL
戻って、あなたが直接あなたは、ログオンログインインターフェイスは、ブラウザのキャッシュであれば、他の人が履歴を表示し、アカウントのパスワードを取得することができます場合は特に、見ることができます
POST
:トランスミッション内部のリクエストボディでリクエストパラメータは、直接比較的得ることができないGET
高い安全性を、しかし、キャプチャツールによって、まだリクエストパラメータを見ることができます
ファイブ作品
HTTP
要求/応答モードを使用するプロトコル、クライアントは要求に対するサーバの応答、その後、サーバーに要求メッセージを送信します。ここで何がHTTP
処理要求は:
- ブラウザの入力では
URL
、Enterキーを押します - ブラウザは、
DNS
解決するためにサーバに要求しURL
、対応するドメイン名をIP
アドレス(それがされている場合IP
、要求は、このステップは必要ありません) - アウトパース
IP
によると、後でIP
確立とポート番号、およびサーバのTCPコネクション - ブラウザは、のように、サーバに要求メッセージを要求を送信する
TCP
第3回サーバハンドシェークパケット - サーバーは、ブラウザにデータを送信、応答します
- 通信が完了すると、切断する
TCP
接続を - ブラウザは、受信したデータを解析し、表示されました
六、HTTPSはじめに
HTTPS
安全なHTTP
HTTP通信で添加チャネル、すなわちSSL
層(現在のバージョンはTLS1.2
次のように)、データ通信を盗難を防止するために、暗号化され、特定の通信プロセスです。
安全性を確保し、伝送効率を向上させることで、対称暗号化と非対称暗号化機能の組み合わせを使用してHTTPS暗号。次のようにHTTPとHTTPSの違いは以下のとおりです。