【轉】HTTP學習---圖解HTTP[三向交握&&ISO模型]

來源:互聯網
上載者:User

標籤: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模型]

相關文章

聯繫我們

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

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

Tags Index: