標籤:VID tom http事務 web程式 因此 可靠 tcp串連 通過 get
【轉】https://www.toutiao.com/i6592556686068679182/
首先瞭解一次完整的HTTP請求到響應的過程需要的步驟:
1. 網域名稱解析
2. 發起TCP的3次握手
3. 建立TCP串連後發起http請求
4. 伺服器端響應http請求,瀏覽器得到html代碼
5. 瀏覽器解析html代碼,並請求html代碼中的資源
6. 瀏覽器對頁面進行渲染呈現給使用者
1.網域名稱解析
就是將網站名稱轉變成IP地址:localhost-->127.0.0.1
像什麼hosts檔案,DNS網域名稱解析等等可以實現這種功能
2.發起TCP的3次握手
在客戶機和伺服器之間建立正常的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的串連。
3.發起HTTP請求(HTTP Request)
所謂的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請求並不包含任何實體
4.伺服器端HTTP響應(HTTP Response)請求
當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)
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
application/javascript
application/pdf
application/zip
application/atom+xml
5.瀏覽器解析html代碼,並請求html代碼中的資源
有時候我們擷取一個HTML頁面,在對瀏覽器對HTML解析的過程中,如果發現額外的URL需要擷取的內容,會再次發起HTTP請求去伺服器擷取,比如樣式檔案,圖片。許多個HTTP請求,只依靠一個TCP串連就夠了,這就是所謂的持久串連。也是所謂的一次HTTP請求完成。
【轉】HTTP學習---圖解HTTP[三向交握&&ISO模型]