首先了解一次完整的http請求到響應的過程需要的步驟
1. 網域名稱解析
2. 發起tcp的3次握手
3. 建立tcp連線後發起http請求
4. 伺服器端響應http請求,瀏覽器得到html**
5. 瀏覽器解析html**,並請求html**中的資源
6. 瀏覽器對頁面進行渲染呈現給使用者
.0
.1像什麼hosts檔案,dns網域名稱解析等等可以實現這種功能
在客戶機和伺服器之間建立正常的tcp網路連線時:
客戶機首先發出乙個syn訊息,
伺服器使用syn+ack應答表示接收到了這個訊息,
最後客戶機再以ack訊息響應。
這樣在客戶機和伺服器之間才能建立起可靠的tcp連線,資料才可以在客戶機和伺服器之間傳遞。
下面一段內容引自一次完整的http事務是怎樣乙個過程?
拿到網域名稱對應的ip位址之後,user-agent(一般是指瀏覽器)會以乙個隨機埠(1024
< 埠 < 65535)向伺服器的web程式(常用的有httpd,nginx等)80埠發起tcp的連線請求。這個連線請求(原始的http請求經過tcp/ip4層模型的層層封包)到達伺服器端後(這中間通過各種路由裝置,區域網內除外),進入到網絡卡,然後是進入到核心的tcp/ip協議棧(用於識別該連線請求,解封包,一層一層的剝開),還有可能要經過netfilter防火牆(屬於核心的模組)的過濾,最終到達web程式(本文就以nginx為例),最終建立了tcp/ip的連線。
所謂的http請求,也就是web客戶端向web伺服器傳送資訊,這個資訊由如下三部分組成:
(1)請求行
例如:get www.cnblogs.com http/1.1
請求行寫法是固定的,由三部分組成,
第一部分是請求方法:
除了常見的只有get和post方法,實際上http請求方法還有很多,比如: put方法,delete方法,head方法,connect方法,trace方法
第二部分是請求**,
第三部分是http版本。
(2)http頭
http頭在http請求可以是3種http頭:1. 請求頭(request header) 2. 普通頭(general header) 3. 實體頭(entity header)
通常來說,由於get請求往往不包含內容實體,因此也不會有實體頭。
(3)內容
只在post請求中存在,因為get請求並不包含任何實體
當web伺服器收到http請求後,會根據請求的資訊做某些處理(這些處理可能僅僅是靜態的返回頁,或是包含asp.net, php, jsp等語言進行處理後返回),相應的返回乙個http響應。http響應在結構上很類似於http請求,也是由三部分組成,分別為:
1.狀態行
例如:http/1.1 200 ok
第一部分是http版本
第二部分是響應狀態碼
第三部分是狀態碼的描述
資訊類 (100-199)
響應成功 (200-299)
重定向類 (300-399)
客戶端錯誤類 (400-499)
服務端錯誤類 (500-599)
詳細http 狀態訊息請看:http 狀態訊息
2.http頭
http響應中包含的頭包括:1. 響應頭(response header) 2. 普通頭(general header) 3. 實體頭(entity header)。
3.返回內容
http響應內容就是http請求所請求的資訊。這個資訊可以是乙個html,也可以是乙個。響應的資料格式通過content-type欄位來獲得:content-type:image/png;或者我們熟悉的content-type:text/html
下面是一些常見的content-type欄位的值。
text/plain
text/html
text/css
image/jpeg
image/png
image/svg+xml
audio/mp4
video/mp4
了解持久連線
有時候我們獲取乙個html頁面,在對瀏覽器對html解析的過程中,如果發現額外的url需要獲取的內容,會再次發起http請求去伺服器獲取,比如樣式檔案,。許多個http請求,只依靠乙個tcp連線就夠了,這就是所謂的持久連線。也是所謂的一次http請求完成。
參考:
1.http協議漫談
2.一次完整的http事務是怎樣乙個過程?
3.http 協議入門
HTTP 請求和響應過程
一次完整的http請求過程從tcp三次握手建立連線成功後開始,客戶端按照指定的格式開始向服務端傳送http請求,服務端接收請求後,解析http請求,處理完業務邏輯,最後返回乙個http的響應給客戶端,http的響應內容同樣有標準的格式。無論是什麼客戶端或者是什麼服務端,大家只要按照http的協議標準...
HTTP請求和響應過程
請求和響應過程 協議 internate 的基本協議是 tcp ip 傳輸控制協議和網際協議 而目前使用的 都是建立在 tcp ip 上的應用層協議。不同的協議對應不同的應用。而 協議是web 應用所使用的主要協議。協議基於請求響應模式,客戶端向伺服器傳送乙個請求,請求頭包含請求的方法,uri,協議...
HTTP請求和響應過程
請求和響應過程 協議 internate 的基本協議是 tcp ip 傳輸控制協議和網際協議 而目前使用的 都是建立在 tcp ip 上的應用層協議。不同的協議對應不同的應用。而 協議是web 應用所使用的主要協議。協議基於請求響應模式,客戶端向伺服器傳送乙個請求,請求頭包含請求的方法,uri,協議...