計算機網絡——應用層-Web&HTTP

計算機網絡系列博文——目錄

Web(World Wide Web)

20世紀90年代初
因特網應用

Web應用的組成

  • 文檔格式標準 HTML
  • Web瀏覽器
  • Web服務器
  • 應用層協(xié)議HTTP

網頁(Web Page)

由對象組成每辟。對象是一個文件瞪讼,如HTML文件,JPEG圖像,Java程序再沧,視頻片段等。
對象可通過一個URL地址尋址棕所。
Web頁面常由一個HTML基本文件和多個引用對象構成瀑踢。

URL地址

URL(Uniform Resoure Locator):統(tǒng)一資源定位器 RFC1738

Scheme://host:port/path

用以尋址Web對象
由一個存放對象的服務器主機名和對象路徑名構成。

超文本傳輸協(xié)議(HyperText Transfer Protocol,HTTP)

HTTP 由客戶端程序和服務端程序實現(xiàn)哄陶,二者通過交換HTTP報文會話帆阳。
HTTP規(guī)范定義了HTTP客戶端和服務端之間的通信協(xié)議。

Web瀏覽器實現(xiàn)HTTP客戶端,請求屋吨、接收蜒谤、展示Web對象
Web服務器實現(xiàn)HTTP服務端,響應客戶的請求,發(fā)送對象

HTTP使用TCP作為支撐運輸層協(xié)議至扰。

端口:80

無狀態(tài)協(xié)議 服務器不保存關于客戶的任何信息
服務器向客戶發(fā)送被請求的文件鳍徽,而不存儲任何關于客戶的狀態(tài)信息。

往返時間(Round-Trip Time,RTT)
一個短分組從客戶到服務器然后再返回客戶所花費的時間敢课。

非持續(xù)連接

某客戶和服務器的一次會話中阶祭,每個請求/響應對通過一個單獨的TCP連接傳輸

HTTP 1.0版本使用非持續(xù)性連接

串行非持續(xù)連接

對多個待獲得的web對象,客戶端一次只請求一個對象直秆,待前一個對象接收完畢后再發(fā)送對下一個對象的請求濒募。

時間分析

  • 為請求一個小web對象(對象傳輸時間可忽略),需要消耗兩個RTT時間圾结。第一個RTT執(zhí)行TCP握手的前兩部分瑰剃,第二個RTT結合TCP握手的第三部分發(fā)送請求報文,接收響應報文疫稿。
  • 請求一個引用a個小web對象的小基本web對象需要耗時(a+1)*2個RTT

并行非持續(xù)連接

瀏覽器通常支持并行的TCP連接。并行TCP連接數(shù)通常為5~10個舀凛。
對多個待獲得的web對象,客戶端一次可同時建立多個TCP連接梯醒,以同時請求多個web對象。
時間分析

  • 建立TCP連接并獲得小基本web文檔需要兩個RTT。若在瀏覽器并行能力之內猫胁,被引用的多個小web對象可同時獲得弃秆,需要兩個RTT氢卡。共4個RTT。

持續(xù)連接

某客戶和服務器的一次會話中们拙,所有請求/響應對經同一TCP連接傳輸

HTTP 1.1版本在默認方式下采用持續(xù)連接突勇,但也可由客戶端/服務器配置為非持續(xù)連接。

無流水(pipelining)的持久性連接

客戶端只有收到前一個響應后才發(fā)送新的請求
可理解為同個TCP內的串行

時間分析

  • 建立TCP連接并獲得小基本web文檔需要兩個RTT。每個被引用的小web對象耗時1個RTT氏捞。
  • 請求一個引用a個小web對象的小基本web對象需要耗時2+a個RTT

帶有流水機制的持久性連接

客戶端只要遇到一個引用對象就盡快發(fā)出請求
可理解為同個TCP內的并行
HTTP 1.1的默認選項

時間分析

  • 理想情況下液茎,收到所有的引用對象只需耗時約1個RTT
  • 請求一個引用a個小web對象的小基本web對象需要耗時3個RTT

TCP 三次握手
1.客戶向服務器發(fā)送一個小TCP報文段;
2.服務器用一個小TCP報文段做出確認和響應辞嗡;
3.客戶向服務器返回確認和一個HTTP請求報文豁护;
4.服務器返回相應HTML文件;

HTTP報文格式

HTTP規(guī)范
RFC 1945 , RFC 2616

用ASCII文本書寫
HTTP協(xié)議有兩類消息,請求消息(request)和響應消息(response)

HTTP 請求報文

請求行 HTTP請求報文的第一行

  • 方法字段 值可用為:GET POST HEAD PUT DELETE 欲间; 絕大多數(shù)HTTP請求報文使用GET方法
  • URL字段 請求對象的標識
  • HTTP版本字段

方法

  • GET方法 請求一個對象
  • POST方法 提交表單
  • HEAD方法 類GET,但返回特殊的響應報文(無實體體)断部,而非所請求的對象猎贴,常用于調試
  • PUT方法 用戶上傳對象到指定Web服務器的指定目錄
  • DELETE方法 允許用戶刪除Web服務器上的對象

首部行 請求行后繼的其它行,包含一些會話信息

空行 回車換行蝴光,分隔首部行和實體體

實體體(entity body)
GET方法下實體體為空
POST方法下實體體包含表單信息

HTTP 響應報文

狀態(tài)行

  • 協(xié)議版本字段
  • 狀態(tài)碼
  • 狀態(tài)信息

常見狀態(tài)碼

  • 200 OK
  • 301 Moved Permanently
  • 400 Bad Request
  • 404 Not Found
  • 505 HTTP Version Not Supported

首部行

空行

實體體
包含了所請求的對象

cookie

HTTP是無狀態(tài)協(xié)議她渴,但cookie技術允許服務器識別用戶
cookie在無狀態(tài)的HTTP之上建立一個用戶會話層

參見 [RFC 6265]

cookie組件

  • HTTP響應報文中的cookie首部行
  • HTTP請求報文中的cookie首部行
  • 用戶端系統(tǒng)中保留一個cookie文件,由瀏覽器管理
  • Web站點中的后臺數(shù)據(jù)庫

cookie技術的爭議在于它可能泄露用戶的隱私

Web緩存器(代理服務器)

代表原Web服務器來響應HTTP請求的網絡實體

  • Web緩沖器的存儲空間保存最近請求過的對象的副本
  • 可以配置用戶瀏覽器蔑祟,使得HTTP請求首先指向Web緩沖器

Web緩沖器通常由ISP購買并安裝

條件GET方法

允許緩存器證實其緩存的副本是新的趁耗。
如果緩存器有web對象最新的版本,則初始服務器不需要向緩存器發(fā)送該web對象

在HTTP請求消息中聲明所持有版本的日期
If-modified-since: <date>

如果緩存的版本是最新的疆虚,則響應消息中不包含對象
HTTP/1.0 304 Not Modified

web緩存工作機制

  1. 瀏覽器向web緩存器請求web對象A,若該請求緩存未命中苛败,則緩存器向存放A的初始服務器請求web對象A并緩存之,而后將對象A發(fā)送給瀏覽器径簿。
    注意初始服務器給緩存器的響應報文中包括首部行:Last-Modified:date 1罢屈,該行說明了對象A上次被修改的時間。
  2. 一定時間后篇亭,瀏覽器再次向web緩存器請求web對象A,該請求緩存命中缠捌,且瀏覽器注意到A的上次修改時間為date 1。
    緩存器向初始服務器發(fā)送條件GET請求译蒂,該請求在對web對象A的普通請求基礎上添加了首部行:If-Modified-Since:date 1曼月。
  3. 初始服務器收到緩存器的條件GET請求,檢查在date 1后該對象有無修改柔昼,若有修改哑芹,發(fā)送新的對象A并附上最近一次修改的時間。若未修改岳锁,發(fā)送帶有 304 Not Modified 狀態(tài)行的響應報文绩衷,且該報文實體體為空蹦魔。
  4. 緩存器接收到初始服務器響應后,給瀏覽器發(fā)送相應對象A咳燕。

緩存機制優(yōu)點

  1. web緩存器可大大減少對客戶請求的響應時間勿决,特別是當客戶與初始服務器間的瓶頸帶寬遠低于客戶與web緩存器間的瓶頸帶寬時。
  2. 大大減少一個機構的接入鏈路到因特網的通信流量以降低費用
  3. 從整體上招盲,大大減小因特網上的Web流量低缩,實現(xiàn)有效的內容分發(fā)

內容分發(fā)網絡(Content Distribution Network,CDN)
基于緩存器技術,CDN公司在因特網上安裝許多地理上分散的緩存器曹货,使得大流量本地化咆繁。
有共享CDN(Akamai,Limelight),專用CDN(谷歌顶籽,微軟)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末玩般,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子礼饱,更是在濱河造成了極大的恐慌坏为,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件镊绪,死亡現(xiàn)場離奇詭異匀伏,居然都是意外死亡,警方通過查閱死者的電腦和手機蝴韭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門够颠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人榄鉴,你說我怎么就攤上這事履磨。” “怎么了牢硅?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵蹬耘,是天一觀的道長。 經常有香客問我减余,道長综苔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任位岔,我火速辦了婚禮如筛,結果婚禮上,老公的妹妹穿的比我還像新娘抒抬。我一直安慰自己杨刨,他們只是感情好,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布擦剑。 她就那樣靜靜地躺著妖胀,像睡著了一般芥颈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赚抡,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天爬坑,我揣著相機與錄音,去河邊找鬼涂臣。 笑死盾计,一個胖子當著我的面吹牛,可吹牛的內容都是我干的赁遗。 我是一名探鬼主播署辉,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼瓶埋,長吁一口氣:“原來是場噩夢啊……” “哼剑辫!你這毒婦竟也來了?” 一聲冷哼從身側響起依疼,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤剖煌,失蹤者是張志新(化名)和其女友劉穎刚夺,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體末捣,經...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年创橄,在試婚紗的時候發(fā)現(xiàn)自己被綠了箩做。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡妥畏,死狀恐怖邦邦,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情醉蚁,我是刑警寧澤燃辖,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站网棍,受9級特大地震影響黔龟,放射性物質發(fā)生泄漏。R本人自食惡果不足惜滥玷,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一氏身、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧惑畴,春花似錦蛋欣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽到踏。三九已至,卻和暖如春尚猿,著一層夾襖步出監(jiān)牢的瞬間窝稿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工谊路, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留讹躯,地道東北人。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓缠劝,卻偏偏與公主長得像潮梯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子惨恭,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355