我們先了解一下http是什麼
http(hypertext transfer protocol):超文字傳輸協議
http就是檔案傳輸的乙個協議,屬於應用層協議,使用tcp作為它的支撐傳輸協議
http是web的核心,web客戶端和web服務端通過交換http報文進行檔案傳輸
我們看一下客戶端是如何使用http與伺服器端建立聯絡的
客戶端發出乙個小tcp報文段
伺服器用乙個小的tcp報文段做出確認和相應,這時候客戶端與伺服器端建立了乙個tcp連線
客戶端向伺服器發出乙個確認同時發出乙個http請求報文
伺服器端接到報文後就在該tcp上傳輸html檔案
上面的1~3步就是三次握手的過程
url: url位址由兩部分組成,伺服器主機名以及物件的路徑名
非持續連線,一旦傳輸完乙個檔案,伺服器就會關閉tcp連線,而每當客戶端檢查html檔案獲取其他檔案的url位址重新請求檔案傳輸時,就要重新建立tcp連線
持續連線,就是在http傳輸時不關閉tcp連線,從html中獲得的其他url的位址請求檔案傳輸時就使用該tcp連線,不用重新建立tcp連線
http請求報文
accept-language: frhttp相應報文
(data data data...)你是否好奇為什麼某寶等購物平台知道你喜歡的商品型別,他們是怎麼儲存你的資料的,這主要是通過cookie實現的
我們前面提到的http伺服器是無狀態的,它並不知道跟他請求的客戶端是誰,但是伺服器希望能夠識別使用者,或許是為了限制,如爬蟲等程式,因此http提供了cookie方法,它允許伺服器站點對客戶進行跟蹤
cookie是如何實現的?
當我們對乙個伺服器發出http請求報文時,可能伺服器很繁忙,導致響應時間過長,因此我們可以設立web快取器,快取器中存放著我們最近請求過的報文,當快取器中不存在我們請求的報文時,快取器就向初始伺服器發出乙個請求報文,接受到報文後儲存值快取器中並向我們傳送響應報文、因此web快取器既是乙個客戶也是伺服器
get方法
每當我們向web快取器發出乙個請求報文時,為了保證web快取器中的存放物件副本是最新的,web快取器會向初始伺服器發出乙個請求報文get,格式如下
if-modified-since: web, 7 sep 2011 09:23:24因為web快取器儲存物件副本時同時存放了最後修改日期,因此根據該修改日期web快取器就能判斷是否修改過,如果沒修改過,初始伺服器就不用特地發物件過來,只要發乙個狀態響應就可以了
參考:《計算機網路自頂向下方法》
應用層(HTTP協議)
應用層 負責應用程式之間的溝通 結構化傳輸協議 方便資料式的組織與解析 1.作用 傳輸檔案,網頁 採用tcp協議 tcp協議詳解 2.url 統一資源定位符 相對路徑是根目錄下的相對路徑 3.urlencode 編碼 和urldecode 解碼 乙個字元8位,前4位 編成1位,後4位 編成1位,再加...
應用層 HTTP協議
應用層 應用層和應用程式直接相關,這是和程式設計師打交道最多的地方。自定製協議 不重要 1 約定好客戶端請求 request 包含什麼資訊,伺服器響應 response 包含什麼資訊 2 約定好資料按照什麼格式來組織,本質上網際網路傳輸的都是 二進位制 字串 序列化 反序列化 已有協議 重要 htt...
應用層協議 HTTP
http通常用於瀏覽器請求web 詳細參見 http 1.1協議中共定義了八種方法 也叫 動作 來以不同方式操作指定的資源 gethead 與get方法一樣,都是向伺服器發出指定資源的請求。只不過伺服器將不傳回資源的本文部分。它的好處在於,使用這個方法可以在不必傳輸全部內容的情況下,就可以獲取其中 ...