二、http報文格式
三、 cookie和session
web的應用層協議是超文字傳輸協議 http(hypertext transfer protocol)。http由兩個程式實現:乙個客戶程式和乙個伺服器程式,它們處在不同的端系統,通過交換http報文進行會話。
http使用tcp 作為它的支撐運輸協議。http客戶首先發起乙個與服務端的tcp連線,一旦連線建立,該瀏覽器和伺服器程序就可以使用套接字訪問tcp。
http是無狀態協議:http伺服器並不儲存關於客戶的任何資訊,比如客戶再短時間內多次請求同乙個物件,伺服器並不會因為剛剛為客戶端提供了該物件就不做出反應,而會重新傳送該物件,就像伺服器忘記之前做過的事兒一樣。
非持續連線:每乙個請求響應對是經乙個單獨的tcp連線傳送
持續連線:所有的請求響應經過相同的tcp連線傳送
非持續連線的乙個缺點就是必須為每乙個請求的物件建立和維護乙個全新的連線,而tcp連線的建立是要消耗代價的,比如時間上的延遲以及緩衝區的建立,這就給web伺服器帶來了嚴重的負擔。
http在預設情況下使用持續連線,也可以配置成非持續連線。
首先我們知道,http是以請求響應的形式實現兩端的交流。而http的報文格式就是以一種key-value形式。類似這樣:
請求報文中包含:請求行、請求報頭、實體主體
響應報文種包含:狀態行、響應報文、實體體
http請求報文使用的方法:
get:當向瀏覽器請求乙個物件時,使用get方法,在url欄位中帶有請求物件的標識。使用get時,請求正文為空
post:當使用者提交表單時,使用post方法,此時瀏覽器向伺服器請求頁面依賴於使用者的輸入,實體主體為使用者輸入的值
head:獲取報文首部。與get類似,當伺服器收到請求時,會傳送http響應,但並不返回請求物件
put:允許使用者上傳物件到指定的web伺服器的指定路徑
delete:允許使用者或者應用程式刪除web伺服器上的物件
?問:get和post方法是安全和冪等的嗎?我們已經知道了http 是乙個無狀態協議, 就是說這一次請求和上一次請求是沒有任何關係的,互不認識的,沒有關聯的。這種無狀態的好處是快速。壞處是進行使用者狀態保持的場景時 比如,登陸狀態下進行頁面跳轉,或者使用者資訊多頁面共享等場景,如果不儲存,就無法對應某乙個特定的使用者。所以必須使用一些方式或者手段比如: session 和 cookie安全:在 http 協議裡,是指請求方法不會破壞伺服器上的資源。
冪等:是指多次執行相同的操作,結果都是相同的。
所以get方法是安全且冪等的,post是不安全且不冪等的
為了儲存請求物件的會話狀態,在伺服器端使用session技術。當客戶向伺服器建立連線後,伺服器接收到請求後,就開闢一段session空間,並為其生成乙個唯一標識id號,就是sessionid。此後每一次接受到請求時,通過sessionid,就可以定位到特定的session會話,並在其所擁有的資料上進行具體操作。session提供了在伺服器端儲存和區分某乙個使用者的資料資訊。session的儲存結構為concurrenthashmap
session在伺服器端對使用者進行了儲存,但它也要通過瀏覽器發來的資訊來定位到乙個使用者,發的什麼呢?此時就用到了cookie。cookie是在瀏覽器上儲存的,它的值就是上面說的每乙個使用者的唯一標識sessionid。在伺服器第一次收到請求建立了乙個session後,在返回響應報文時就會加上一句:set-cookie = sessionid
,這樣瀏覽器接受到報文後,就會將自己的cookie設定為sessionid,以後每一次以當前使用者的身份訪問時,都會在請求行中加入cookie的值。因此到達服務端後,也能根據cookie的值定位到某乙個session會話並進行特定的操作。
參考資料:《計算機網路自頂向下》
中國慕課 哈爾濱工業大學《計算機網路》
部落格:
基本總結了http的基礎知識,還有https協議和dns等重要協議,以後慢慢都總結出來,是對自己學習進步的乙個督促。有任何問題歡迎指正,也歡迎小夥伴們點讚關注一起進步!
計算機網路 應用層 HTTP協議
是七層osi模型的第七層。應用層直接和應用程式介面並提供常見的網路應用服務。應用層也向表示層發出請求。應用層是開放系統的最高層,是直接為應用程序提供服務的。其作用是在實現多個系統應用程序相互通訊的同時,完成一系列業務處理所需的服務。超文字傳輸協議,是乙個屬於應用層的物件導向的協議,由於其簡捷 快速的...
計算機網路 應用層 HTTP協議
1.http概況 web的應用層協議是超文字傳輸協議 http 它是web的核心。http由兩部分程式實現 乙個客戶機程式和乙個伺服器程式,它們執行在不同的端系統中,通過交換http報文進行對話。http定義了這些報文的格式以及客戶機和伺服器是如何進行報文交換的。下圖是其基本思想 當使用者請求乙個w...
計算機網路 應用層 HTTP
狀態碼request請求頭 response請求頭 參考 啞服務 連線上時不會回顯,要有其他行為時 url 協議 hosts 主機 埠 uri 路徑 1.0 時每乙個http都要建立一次tcp,1.0後可設定connection keep alive來讓tcp持續 客戶端傳送request,服務端回...