HTTP協議 具體解析

2021-10-23 06:04:20 字數 2324 閱讀 1501

之前介紹過http的基礎知識,這章來繼續**一下具體組成。為之後自己寫web伺服器打個基礎。

超文字傳輸協議,具體的看我之前的部落格:http協議。

http通常是作為應用層的協議。http協議承載於tcp協議之上,有時候也承載在tls/ssl協議層之上(https)。

回顧一下工作流程:

客戶端連線到web伺服器:客戶端與伺服器的http埠建立tcp連線。

客戶端請求:通過tcp套接字,客戶端向伺服器傳送請求報文-請求行、請求頭部、空行和請求資料組成。

伺服器接收並響應:伺服器解析請求,將資源副本寫到套接字,由客戶端讀取。

釋放tcp連線:連線狀態為關閉時,伺服器主動關閉連線,客戶端被動。若為keepalive,則保持一段時間,等待新的請求。

客戶端解析內容:解析狀態行看是否成功,然後解析響應頭分析出內容。再讀取資料html,翻譯並顯示。

客戶端傳送乙個http請求到伺服器的請求訊息格式:

請求行、請求頭部、空行和請求資料get /pv/pv2.gif?ie=utf-8&q=haha&userid=&samplekey=&event_type=pv&tn=result&tpl=&fr=ala&258779243144.4575 http/1.1

(空行)

(任意其他資料)

從上面這個例子來看,1234部分。

1為請求行,說明請求型別,要訪問的資源以及所使用的http版本。

get 表明請求型別,/後東西為所請求的資源,http1.1,為使用版本

2為請求頭部,請求行之下的開始,說明伺服器要使用的額外資訊。

host為請求目的地,connection為連線資訊,user-agent是使用的工具,是瀏覽器檢測正常連線還是爬蟲的東西,具體的可以自己詳查,知道這個東西就可以了。可以看到是一些自己的電腦和瀏覽器資訊。之後就是一些相關的東西,需要時詳查即可。

3為空行,請求頭部後的行必須是空行。

4為請求資料,可以新增一些其他的資訊,我們這個裡面為空。

post請求格式大致類似。

伺服器接受到客戶端的請求後會返回乙個http的響應訊息。

響應也是四部分組成:狀態行、訊息報頭、空行和響應正文。

狀態行,由http協議版本號,狀態碼,狀態訊息三部分組成。http1.1為版本號,200為狀態碼,訊息是ok。

訊息報頭,說明一些複雜資訊。date不必說,時間。content-type:指定html,編碼型別之類的。

空行,同get。

響應正文:伺服器返回給客戶端的文字資訊。其後的內容。

狀態碼由三位數字組成,第乙個數字定義了響應的類別,共分五種類別:

1xx:指示資訊,請求已收到,繼續處理。

2xx:成功,請求被成功接收、理解、接受。

3xx:重定向,完成請求需要進一步的操作。

4xx:客戶端錯誤,請求無法實現。

5xx:服務端錯誤。

常見狀態碼

200 ok:請求成功

400 bad request:請求有語法錯誤,伺服器無法理解

401 unauthorized:請求未經授權

403 forbidden:被伺服器拒絕

404 not found:我經常會遇到的,請求資源不存在

500 internal server error:伺服器發生不可預期的錯誤

這是兩個常用的請求,單獨拿出來說一下:

get提交的資料會放在url之後,以?分割,引數間以&相連。post請求是把提交的資料放在http包的body中。

get提交的資料大小有限制(其實限制於url),post沒有。

get方式需要使用request.querystring來取得變數的值,而post方式通過request.form來獲取變數的值。

get提交資料會有安全問題,因為在url中。

對於get方式的請求,瀏覽器會把http header和data一併傳送出去,伺服器響應200(返回資料); 而對於post,瀏覽器先傳送header,伺服器響應100 continue,瀏覽器再傳送data,伺服器響應200 ok(返回資料)。

好了,大概就是這些了,具體使用的時候再深挖。http不是乙個很難的東西,看起來就像是個字串解析。懂語法懂規則,操作起來就不會很複雜。

加油!

HTTP協議解析

客戶端 通過傳送請求獲取伺服器資源的 web 瀏覽器等.http hypertext transfer protocol,超文字傳輸協議 url uniform12resource locator,統一資源定位符 tcp ip 網際網路相關的各類協議族的總稱 uri 統一資源識別符號,表示由某個協議...

HTTP協議解析

1 http協議是什麼 http協議是工作在應用層的一種知名的通訊協議 大佬程式設計師寫的 負責應用程式之間的資料溝通。http是乙個簡單的請求 響應協議,它通常執行在tcp之上。它指定了客戶端可能傳送給伺服器什麼樣的訊息以及得到什麼樣的響應。2 http協議的格式解析 首行 請求首行 請求方法 g...

HTTP協議解析(簡)

總結http協議 規定了瀏覽器和伺服器端的資料互動的格式 特點是 基於請求和響應模型。必須要先有請求,後有響應。請求和響應必須成對出現。簡單快捷。因為傳送請求的時候只需要傳送請求方式和請求路徑即可 請求行1.請求方式 請求方式有很多種,常用就兩種get 和post get和post的區別?get 請...