2 應用層 Web和HTTP

2021-10-21 17:46:46 字數 3228 閱讀 2927

http在預設方式下使用持續連線

非持續連線:每個請求/響應對是經乙個單獨的tcp連線傳送,tcp連線在傳送完乙個物件後關閉。

非持續連線的缺點:

持續連線:在相同的客戶和伺服器之間,後續的請求和響應報文能夠通過相同的連線進行傳送。

請求行方法字段:get post head put delete

get:傳送乙個請求來取得伺服器上的某一資源。

post:向伺服器提交資料。

head:head和get本質是一樣的,區別在於head不含有呈現資料,而僅僅是http頭資訊。有的人可能覺得這個方法沒什麼用,其實不是這樣的。想象乙個業務情景:欲判斷某個資源是否存在,我們通常使用get,但這裡用head則意義更加明確。

put: put和post極為相似,都是向伺服器傳送資料,但它們之間有乙個重要區別,put通常指定了資源的存放位置,而post則沒有,post的資料存放位置由伺服器自己決定。

delete:刪除某乙個資源。

url欄位:帶有請求物件的標識

http版本

首部行

實體體

初始狀態行status line

http/1.1 200 ok
狀態碼

文字含義

200ok

請求成功,資訊在返回的響應報文中

301moved permanently

請求的物件已經被永久轉移了,新的url定義在響應報文的location:首部行的一種,客戶軟體將自動獲取新的url

304not modified

伺服器回給web快取器,表示請求物件未被修改,可以使用

400bad request

乙個通用差錯**,指示該請求不能被伺服器理解

404not found

被請求的文件不在伺服器上

伺服器不支援請求報文使用的http協議版本

首部行

實體體使用場景:乙個web站點通常希望能夠識別使用者,可能是因為伺服器希望限制使用者的訪問,或者希望把內容與使用者身份聯絡起來,http中使用了cookie,允許站點對使用者進行跟蹤。

web站點產生唯一識別碼,並以此為索引在它的後端資料庫中產生乙個表項

伺服器用乙個包含set-cookie的首部行對瀏覽器進行響應。

set-cookie: 1678
瀏覽器收到http響應報文,在自己管理的cookie檔案中新增一行,包含伺服器的主機名和set-cookie中的識別碼。

以後再訪問該web站點時,請求報文都會帶有包含識別碼的首部行

cookie: 1678
cookie用於標識乙個使用者

web快取(web cache):即**伺服器proxy server,能夠代表初始web伺服器來滿足http請求的網路實體。**伺服器擁有磁碟儲存空間,並在儲存空間中儲存最近請求過的物件的副本。下面是某瀏覽器請求物件 的過程

部署web快取器的好處

case a

1:機構---100mbps區域網---> 內部路由器---15mbps接入鏈路--->網際網路絡由器

2:初始伺服器(處於世界各地)---> 網際網路

if 15個*1mb請求/s 從機構發出

區域網流量強度 = 15*1mb/s / 100mbps = 0.15

接入鏈路流量強度 = 15*1mb/s / 15mbps = 1.0,鏈路上的時延會變得非常大並且無限增長。

case b okkkkkk

1:(機構+機構快取器)---100mbps區域網---> 內部路由器---15mbps接入鏈路--->網際網路絡由器

2:初始伺服器(處於世界各地)---> 網際網路

假設web快取器的命中率為0.4,web快取器的響應時間10ms;15mbps鏈路上,流量強度0.6,當小於0.8時,時延增量都將在幾十毫秒

計算平均時延 = 0.4*10ms + 0.6*(2s+10ms)

= 1.2s

case c

增大接入鏈路的速率為100mbps,接入鏈路的流量強度也為0.15

則總的時延可以大致認為 = 接入鏈路**http請求報文開始,一直到收到網際網路的響應報文,大約2s

可見增加web快取器的方案更優

內容分發網路 content distribution network cdn

儲存在web伺服器中的物件自該副本快取在客戶上以後可能已經被修改了

http中的條件get機制就是允許快取器證實它的物件是最新的。

case a:乙個瀏覽器向**快取器請求了。。。

**快取器 -> web伺服器

web伺服器 -> **伺服器

case b:one week late,另乙個瀏覽器向**快取器又請求了同一物件

**快取器 -> web伺服器

if-modified-since: web, 9, sep 2015 12:12:12

web伺服器 -> **伺服器

應用層學習筆記二 Web和HTTP

http hypertext transfer protocal 超文字傳輸協議 http由兩個程式實現 乙個客戶端程式和乙個伺服器程式,執行在不同的端系統中,通過交換http報文進行會話。http定義了報文結構和報文交換的方式。一些術語 web瀏覽器 實現了http的客戶端 web伺服器 實現了h...

應用層(HTTP協議)

應用層 負責應用程式之間的溝通 結構化傳輸協議 方便資料式的組織與解析 1.作用 傳輸檔案,網頁 採用tcp協議 tcp協議詳解 2.url 統一資源定位符 相對路徑是根目錄下的相對路徑 3.urlencode 編碼 和urldecode 解碼 乙個字元8位,前4位 編成1位,後4位 編成1位,再加...

應用層 HTTP協議

應用層 應用層和應用程式直接相關,這是和程式設計師打交道最多的地方。自定製協議 不重要 1 約定好客戶端請求 request 包含什麼資訊,伺服器響應 response 包含什麼資訊 2 約定好資料按照什麼格式來組織,本質上網際網路傳輸的都是 二進位制 字串 序列化 反序列化 已有協議 重要 htt...