シオマネキ - HTTP - HTTPプロトコルのパケットフォーマット

https://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672 .htmlを学びHTTP 


HTTPS: //www.cnblogs.com/TankXiao/archive/2012/02/06/2337728 .htmlをフィドラー学ぶ

================================================ ================================================== === 

ハイパーテキスト転送プロトコル(HTTP):それはクライアントのブラウザにWebサーバーから転送されたハイパーテキストマークアップ言語(HTML)文書可能にする通信プロトコルである


                   、我々はHTTPを使用している現状では /1.1      バージョン



我々はブラウザを開きます、アドレスバーにURLを入力して、私たちはウェブサイトを見ました。原理はそれが何であるかです:


URLを入力した後、Webサーバーへの私たちのブラウザが送信したHTTPリクエスト(HTTPリクエスト)を
Webサーバ、HTTP要求(HTTPリクエスト)を受信した後に処理するために 、対応する生成するHTTP応答(HTTPレスポンス)その後、ブラウザに送られた ので、我々はページ上に表示することをHTMLでブラウザパースHTTP応答(HTTPレスポンス)、。


-------------------------------------------------- ------------------------------------------
HTTPメッセージを2つに分類されます。 HTTP要求と応答のための主要なメッセージパケットのhttp: HTTPリクエスト(HTTPリクエスト)
----> ブラウザサーバ のhttpレスポンス(応答HTTP) <---- ------------- -------------------------------------------------- --------------------------- 私たちの要求は、おそらくプロキシサーバーの結果であり、最終的にWebサーバに到達します。 次のようにプロセスがある: リクエスト ----> ----リクエスト> ブラウザのプロキシサーバーの レスポンス <----レスポンス<---- プロキシサーバーがそれをどの機能ネットワーク情報、ための通過点である: 1 。アクセス速度を向上させ、プロキシサーバーのほとんどは、キャッシュ機能を持っています。 2 。壁を越え、あること、ブレイクアウト 3 。自分の身元を隠します。 -------------------------------------------------- -------------------------------------------------- -


URL(ユニフォームリソースロケータ)アドレスは、ネットワーク上のリソースを記述するために使用される、基本的なフォーマットは、次のされています。


スキーマ: //ホスト:[ポート?[クエリ文字列]] /パス/.../ [#アンカー] 


スキームは、低レベルを指定しました(例えば:HTTP、HTTPS、FTP)使用されるプロトコル

IPアドレスまたはドメインネームサーバHTTPホスト

ポート#の         HTTPサーバ80のデフォルトのポートは、この下のスローガンを省略してもよいです。あなたが別のポートを使用する場合は、http://www.cnblogs.com:8080/例えば、指定する必要があります

リソースパスにアクセスするためのパス

のクエリを - 文字列は、httpサーバのデータに送信された

アンカー -        ハイパーリンクであるアンカー、ページのみをページが非常に長いですし、ページの上部にアンカーを設定することができるように、コンテンツ内は、N個の部分に分割された場合、内部のハイパーリンク

                  、対応するアンカーをクリックすることで簡単に表示するために、このページ上の適切な場所への迅速なアクセスを。

               文字の前にあるURL、右端のアンカー、「。」


例:

HTTP://www.mywebsite.com/sj/test/test.aspx?name=sviergn&x=true スタッフ

スキーマ(プロトコル):HTTP 
ホスト(ドメイン名):www.mywebsite.com 
パス(リソース・ロード・キング):                / SJ /テスト/ Test.aspxという
クエリ文字列(パラメータ):名 = X =&sviergn 真の
レコード(アンカー):スタッフ

 ----------------------------- -------------------------------------------------- --------------------------- 

HTTPプロトコルはステートレスで

、HTTPプロトコルはステートレスであるクライアントの要求と最後でこの時間httpサーバの要求との間には対応関係がありません、それは同じクライアントからのこれら2つの要求を知りません。

この問題を解決するために、Webプログラムは、状態を維持するためにクッキーメカニズムを導入しました。


-------------------------------------------------- -------------------------------------------------- ----------------------

  -------------------------------------------------- -------------------------------------------------- ----------------------

 

時代の要求の多くを送信するために、Webブラウザのニーズを開きます。


1.ブラウザがHTML http://www.cnblogs.comを取得するための要求を送信すると、ブラウザでURL http://www.cnblogs.comを入力してください。応答がブラウザにサーバーに送り返さ。

HTMLでのレスポンスブラウザの2の分析、および、そのような画像、CSSファイル、JSファイルなどの他のファイルへの参照の多くを発見しました。

3.ブラウザは、自動的に取得画像、CSSファイル、またはJSファイルを再度要求を送信します。

4.他のすべてのファイルが成功した後にダウンロードされます。Webページが表示されていました。

 

 

 

 

 

 

例:(RAWタブサブタブの内側に存在検査官フィドラー)

 

 

 

 

 

 

 

 

 

詳細httpプロトコルのパケットフォーマット

HTTPリクエストメッセージ:

POST https://anp.njpji.cn/un_manager/user/toLogin HTTP/1.1
Host: anp.njpji.cn
Connection: keep-alive
Content-Length: 85
Accept: */*
Origin: https://anp.njpji.cn
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Referer: https://anp.njpji.cn/un_manager/views/session/login.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: Hm_lvt_70a44149803685eae3a9163f23ea34b7=1566289322,1566346318; JSESSIONID=C8ACE0B8E7E4E05C0EDE0752C1B8A771

username=7droqslNzQg%3D&password=Jrrw3HiJ%2BArijSvr3jrq1Q%3D%3D&verificationCode=2395

 

http请求报文的结构: 浏览器发送给web服务器的http请求报文,如下所示:

 

先看Request 消息的结构, Request 消息分为3部分:

第一部分叫Request line, ------------>起始行

第二部分叫Request header, ------------>首部

 

第三部分是body, ------------>主体


注意:header和body之间有个空行,

 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

第一行中的Method表示请求方法,比如"POST","GET", Path-to-resoure表示请求的资源, Http/version-number 表示HTTP协议的版本号。

当使用的是"GET" 方法的时候, body是为空的。

我们打开Fiddler 捕捉一个登录的Request 然后分析下它的结构, 在Inspectors tab下以Raw的方式可以看到完整的Request的消息。

请求方法        请求资源即URL                    http协议的版本号

POST https://anp.njpji.cn/un_manager/user/toLogin HTTP/1.1                                                             ---------起始行
Host: anp.njpji.cn                                                                                         --------->下面是header首部
Connection: keep-alive
Content-Length: 85
Accept: */*
Origin: https://anp.njpji.cn
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Referer: https://anp.njpji.cn/un_manager/views/session/login.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: Hm_lvt_70a44149803685eae3a9163f23ea34b7=1566289322,1566346318; JSESSIONID=5C305287359661147AD9C5570451A7E8
                                                                                                                       ------->空行
username=7droqslNzQg%3D&password=Jrrw3HiJ%2BArijSvr3jrq1Q%3D%3D&verificationCode=0237                                  ------> 此处为body主体

 

 

 

 

 ===========================================================================================================

 

 

 

http响应报文:

HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Sun, 29 Dec 2019 08:09:54 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Frame-Options: SAMEORIGIN

49
{"respCode":"00","respDesc":"用户账户信息校验成功","data":null}
0

 

http响应报文结构: web服务器发送给浏览器的http响应报文内容:

Response消息的结构, 和Request消息的结构基本一样。 同样也分为三部分:

第一部分叫Response line, ------------>响应行

第二部分叫Response header, ------------>响应首部

第三部分是body, ------------>主体


header和body之间也有个空行,


第一行,起始行中有状态码,和状态码消息

HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Sat, 07 Dec 2019 09:05:17 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Frame-Options: SAMEORIGIN

49
{"respCode":"00","respDesc":"用户账户信息校验成功","data":null}
0

 

 

=============================================================================================

解压http响应:

                          有的时候再fiddler抓包的过程中,经常看到http响应是乱码,单击:" Response  body  is  encoded.Click  to  decode "按钮;

                          可以解压http响应。如下图:

 

 

おすすめ

転載: www.cnblogs.com/xiaobaibailongma/p/12115352.html