標籤:規則 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協議的細節部分學習