Wireshark Lab: HTTP
Wireshark Lab: HTTP
預備知識
堅持型連線&非堅持型連線:是否在同一個TCP連線上完成所有的請求/應答報文的傳輸?Y:堅持型,N:非堅持型。
HTTP的非堅持型連線
現在來看看當你點選一個超連結的時候會發生什麼。
1.客戶機會對超連結的伺服器通過80埠(TCP預設埠號)發起一個TCP連線
2.客戶機通過套接字向伺服器傳送HTTP請求報文
3.伺服器收到報文之後,從自己的記憶體(RAM or disk)中獲取被請求的物件,並將這些物件封裝至HTTP請求報文(HTLM)中,然後通過套接字傳送給客戶機。
4.HTTP伺服器請求關閉TCP連線
5.客戶機獲取請求的物件,TCP連線徹底關閉。客戶機從恢復報文中獲取檔案
6.獲取其他的物件,繼續迴圈上面的步驟
由此可見,每當一個物件被正確接收的時候,之前的建立的TCP連線都會被關閉。一般情況下,瀏覽器會建立5到10個並行TCP連線,這樣的平行連線可以減短響應時間。
由上圖,非堅持型下的HTLM的相應時間為:
t
t
o
t
a
l
=
2
∗
t
R
T
T
+
t
t
r
a
n
s
t_{total} = 2*t_{RTT} + t_{trans}
ttotal=2∗tRTT+ttrans
HTTP的堅持型連線
非堅持型連線有以下幾個缺點:
1.每一個請求物件都需要建立一次TCP連線,這樣會導致額外的記憶體消耗
For each of these connections, TCP buffers must be allocated and TCP variables must be kept in both the client and server.
2.每一個物件的遞交過程會導致兩個RTT的時間消耗
堅持型HTTP連線的斷開
在HTTP1.1中,當TCP連線建立之後,剩餘的物件都通過這個TCP連線遞交。當遞交結束之後,當這條TCP連線在一定的時間(a configurable timeout interval)沒有被使用時,這條連線會自動關閉。
HTTP/2 builds on HTTP 1.1 by allowing multiple requests and replies to be interleaved in the same connection, and a mechanism for prioritizing HTTP message requests and replies within this connection.
(存疑)
HTTP的報文格式
請求報文
//一個例子
//The great majority of HTTP request messages use the GET method.
GET /somedir/page.html HTTP/1.1 //the method field, the URL field, and the HTTP version field.
Host: www.someschool.edu //物件所在的主機地址(Web代理快取中需要)
Connection: close//表示非堅持型
User-agent: Mozilla/5.0 //瀏覽器的型別
Accept-language: fr//許多協商首部(negotiation header)中的一種
注意到上圖出現的實體(Entity Body)部分,在GET方法中是空的,他在POST方法中,例如當使用者提供搜尋關鍵詞的時候,POST仍然是向伺服器請求獲取網頁,但是是網頁特定的內容。
但是HTML表單(HTML form)通常用GET方法,並在URL(統一資源定位器)中加上輸入的文字,就像這樣:
//當你在某個網站上面搜尋“monkeys” 和“bananas”的時候,URL會變成下面這個樣子
www.somesite.com/animalsearch?monkeys&bananas
應答報文
//一個例子
HTTP/1.1 200 OK//the protocol version field, a status code(狀態碼:請求結果), and a corresponding status message.
Connection: close//非堅持型
Date: Tue, 18 Aug 2015 15:44:04 GMT//伺服器從自己的檔案系統中獲取被請求物件,並將它插入到回應報文中,後將它傳送給客戶機時的時間
Server: Apache/2.2.3 (CentOS)//伺服器型別
Last-Modified: Tue, 18 Aug 2015 15:11:03 GMT// It is critical for object caching, both in the local client and in network cache servers (also known as proxy servers).
Content-Length: 6821//被髮送物件的位元數
Content-Type: text/html//傳送主題的型別(HTML 文字)(The object type is officially indicated by the Content-Type: header and not by the file extension.)
(data data data data data ...)//報文核心部分(the meat of message)包含被請求的物件
報文請求結果型別:
200 OK: Request succeeded and the information is returned in the response.
301 Moved Permanently: Requested object has been permanently moved; the new URL is specified in Location : header of the response message. The client software will automatically retrieve the new URL.
400 Bad Request: This is a generic error code indicating that the request could not be understood by the server
404 Not Found: The requested document does not exist on this server.
505 HTTP Version Not Supported: The requested HTTP protocol version is not supported by the server.
狀態行(state line)
表頭行(header line)
(待續…)
總結
問題: 1.HTTP/2?(unsolved)相關文章
- 使用 Wireshark 除錯 HTTP/2 流量除錯HTTP
- wireshark抓包curl傳送http2請求HTTP
- http://gitlab.maclove.comHTTPGitlabMac
- Wireshark的HTTP請求包和響應包如何對應HTTP
- Wireshark資料抓包教程之安裝Wireshark
- gitlab-ce將https修改為httpGitlabHTTP
- wireshark-filterFilter
- Wireshark使用教程
- Tcpdump和wiresharkTCP
- GitLab error: RPC failed; result=22, HTTP code = 413GitlabErrorRPCAIHTTP
- 一站式學習Wireshark(一):Wireshark基本用法
- iOS Wireshark抓包iOS
- Wireshark網路工具
- Wireshark圖解教程圖解
- wireshark抓包分析
- wireshark的使用教程
- 抓包工具wireshark
- Wireshark資料抓包教程之Wireshark的基礎知識
- Wireshark網路抓包
- wireshark 分析TCP協議TCP協議
- Wireshark的資料包
- wireshark 過濾規則
- wireshark學習筆記筆記
- wireshark抓包學習
- HTTP 錯誤 503.4 - Service Unavailable FastCGI 池佇列已滿HTTPAIAST佇列
- gitlab兩種連線方式:ssh和http配置介紹GitlabHTTP
- Wireshark網路分析例項集錦第2章設定Wireshark檢視
- wireshark抓包新手使用教程
- 網路抓包工具Wireshark
- 獲取Wireshark資料流
- CTF學習(6):Misc(wireshark)
- wireshark過濾返回包特徵特徵
- 《熬夜整理》保姆級系列教程-玩轉Wireshark抓包神器教程(1)-初識Wireshark
- Ubuntu 16.04 安裝 Wireshark分析tcpdump的pcap包——sudo apt install wireshark-qtUbuntuTCPPCAAPTQT
- 一站式學習Wireshark(二):應用Wireshark觀察基本網路協議協議
- Wireshark運算子!=無法正常工作
- ? 如何用 wireshark 抓包 TLS 封包TLS
- 瞭解使用wireshark抓包工具