1,http協議的細節部分學習

來源:互聯網
上載者:User

標籤:規則   clr   img   session   屬性工作表   附加   main   完整   png   

http協議(80連接埠)
https(443連接埠)

主要是一直對三向交握模模糊糊,並且抓包的時候不知道那些Accept、User-Agent什麼意思,就仔細找課程學了一下。

學習簡介:

1,涉及工具(wireshark、fiddler)

2,請求報文(請求行、要求標頭、請求本文)

3、應答報文(應答行、應答頭、應答本文)

4、http捕獲工具

我先通過wireshark看TCP三向交握-發送請求-請求響應-請求狀態代碼

1.三向交握,

2.響應完了,

在Fiddler上面找了2個請求報文,就開始查請求中的參數是什麼含義

一、請求報文(請求行、要求標頭、請求本文)

例子:

GET /?a1004 HTTP/1.1
Accept: */*
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB7.5; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3)
Accept-Encoding: gzip, deflate
Proxy-Connection: Keep-Alive
Host: hao.360.cn
Cookie: count=12; somultiswitch=1; tweetSiteFlag2=1; city_code=101280109; sidebarstipstatus=20160401yule0401_1; sessionID=132730903.3951674013491768000.1492047237189.6052; logwtb=1; logwtb2=1; logwtb3=1; logwtb4=1; channelOrder=a_8_e_ob; customEng=4-13; __guid=132730903.3884126908240207400.1490749650870.3637; _ga=GA1.2.1007699322.1491787380; __gid=206785792.819567615.1491960528189.1491960563795.3; __huid=11l1zL6fePYhIdEDnChXoUN1EY9+aTvi8EzujTcIev8/o=; __hsid=b3ebde9e0c285f61

1、請求行

例子:Get /mainpage.aspx HTTP/1.1\r\n

解釋:要求方法 請求網址 http版本

1.要求方法

http1.1:7種要求方法
1.Get
2.Post
3.Head
4.Options
5.Put
6.Delete
7.Trace

疑問 Get請求和Post請求的區別?

Get從伺服器擷取資料
Post向伺服器發送資料

我原先還以為Get是請求,Post是應答呢,這回糾正了,都是請求

2、要求標頭

解釋:

1.Host: hao.360.cn,

指定請求的Internet主機和連接埠號碼,是原始伺服器(網關)的位置
HTTP/1.1請求必須包含主機頭域,否則返回400狀態代碼(伺服器)

2.User-Agent: 

標示請求的一些資訊,瀏覽器類型和版本、作業系統等
這裡的資訊通常做資料收集,可以分析使用者常用什麼瀏覽器訪問我們的服務

3.Accept: */*

指定用戶端接受哪些類型的響應內容,能夠在客戶瀏覽器直接開啟的格式
經常:Accept: image/png,image/*;q=0.8,*/*;q=0.5

疑問 q是什麼意思?

4.Accept-Language: zh-cn

指用戶端的作業系統語言
經常:Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3

5.Accept-Encoding: gzip, deflate

這個屬性工作表示用戶端能接受的編碼規則或格式規範,deflate應該是通用

6.Referer:網址

理解為當前請求的上一個依賴請求(地址),可以是絕對路徑/相對路徑,與Host拼接成完整的URL地址

7.Proxy-Connection: Keep-Alive

Connection:Keep-Alive

表示當client和server通訊時對於長連結如何進行處理,在http1.1中雙方都預設對方是支援長串連的,不使用長連結,則值是close。哪方不想支援長連結,在reques或者response的header中Connection是close。

疑問 長連結和短串連?
短連結:當前正在只用的TCP連結在當前請求處理完畢後會被斷掉,以後client在進行新的請求時建立新的TCP

其他:Date、Poxy、Cache-Control、Cookies就是按照字面意思理解.

3、請求本文

Get請求通常無請求本文

Post請求本文,比如username=chen&pwd=12345&check=on,類似LR中web_custom_request中的body進行拼接的樣子

二、應答報文(頭、行、本文)

例子:

HTTP/1.1 503 Service Unavailable
Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Proxy-Connection: close
Connection: close
Content-Length: 787

1.應答行

收集了3個例子

HTTP/1.1 200 OK
HTTP/1.1 503 Service Unavailable
HTTP/1.1 304 Not Modified

版本 http請求應答返回碼 英文名稱

另外整理http請求應答返回碼

這裡是200 OK 請求成功,一般用於Get和Post請求、304 未修改 Not Modified、503 由於超載或系統維護,伺服器暫時不能處理請求,延時可包含在response的header中的Retry-After屬性中 Service Unavailable

2.應答頭

Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Proxy-Connection: close
Connection: close
Content-Length: 787

根據上面對要求標頭的介紹,這裡就知道介紹的是伺服器的情況,特別注意1、Content-Encoding:gzip,指返回的內容經過了gzip壓縮技術;2、Content-Length:787,指返回的本文長度

3、應答本文

可以使用壓縮技術,但一般是基於html的頁面資訊

三、http捕獲工具

1、wireshark             協議的表達方式比較清晰

2、Firefox firebug       在Firefox工具-附加組件中搜尋firebug組件並安裝

3、chrome                 F12,我用這個來看前端效能最佳化

4、IE                         http watch,最穩定版本9.4,網頁資料分析工具,支援Firefox,支援https

捕獲工具我還用fiddler、firefox的poster。fiddler可以設定斷點修改參數,也可以通過設定,支援捕獲https。工具太多,目前也分不清這些有什麼類別區分。

1,http協議的細節部分學習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.