前言
本章主要介紹web是建立在何種技術之上荆秦,以及HTTP協(xié)議是如何誕生并發(fā)展的芹敌,從背景深入了解這部分內(nèi)容拜隧。
1.1 使用HTTP協(xié)議訪問Web
日常生活中我們在瀏覽器的搜索引擎框輸入(www.xxx.com)URL斗这,Web頁面是如何呈現(xiàn)在眼前?
Web的傳輸用到了HTTP(HyperText Transfer Protocol,超文本傳輸協(xié)議),從客戶端到服務器端的一系列操作都在HTTP協(xié)議上完成捎稚。
1.2 HTTP的誕生
在深入學習HTTP之前,先來介紹HTTP誕生背景。
1.2.1 為知識共享而規(guī)劃的 Web
1989年3月今野,互聯(lián)網(wǎng)并沒有普及葡公,在這之前,HTTP誕生条霜。
1.2.2 Web成長時代
1.1990年11月催什,CERN成功研制了世界上第一臺Web服務器和Web瀏覽器。
2.1993年1月,現(xiàn)代瀏覽器的祖先 NCSA(National Center for Supercomputer Applications蛔外,美國國家超級計算機應用中心)研發(fā)的Mosaic 問世了蛆楞。
3.1994 年 的 12 月,網(wǎng)景通信公司發(fā)布了 Netscape Navigator 1.0夹厌,1995年微軟公司發(fā)布 Internet Explorer 1.0 和 2.0豹爹。
4.時光流轉,從 1995 年左右起矛纹,微軟公司與網(wǎng)景通信公司之間爆發(fā)的瀏覽器大戰(zhàn)愈演愈烈臂聋。兩家公司都各自對 HTML 做了擴展,于是導致在HTML 頁面時或南,必須考慮兼容他們兩家公司的瀏覽器孩等。
5.2000 年前后,這場瀏覽器戰(zhàn)爭隨著網(wǎng)景通信公司的衰落而暫告一段落采够。但就在 2004 年肄方,Mozilla 基金會發(fā)布了 Firefox 瀏覽器,第二次瀏覽器大戰(zhàn)隨即爆發(fā)蹬癌。
1.2.3 駐足不前的 HTTP
1.HTTP/0.9
HTTP于1990年問世权她,當時HTTP并沒有作為正式的標準。
2.HTTP/1.0
HTTP/1.0正式作為標準被公布是在1996年5月逝薪,版本為HTTP/1.0,記載于RFC1945隅要。
3.HTTP/1.1
1997 年 1 月公布的 HTTP/1.1 是目前主流的 HTTP 協(xié)議版本。
1.3 網(wǎng)絡基礎 TCP/IP
1.3.1 TCP/IP協(xié)議族
在計算機網(wǎng)絡中通信和傳輸董济,就要基于相同的方法和規(guī)則步清,比如,如何探測到通信目標虏肾、由哪一邊先發(fā)起通信廓啊、使用哪種語言進行通信、怎樣結束通信等規(guī)則都需要事先確定封豪。不同的硬件崖瞭、操作系統(tǒng)之間的通信,所有的這一切都需要一種規(guī)則撑毛。而我們就把這種規(guī)則稱為協(xié)議(protocol)书聚。
1.3.2 TCP/IP分層管理
TCP/IP協(xié)議族按層次分為4層:應用層、傳輸層雌续、網(wǎng)絡層斩个、數(shù)據(jù)鏈路層。
把 TCP/IP 層次化是有好處的驯杜。比如受啥,如果互聯(lián)網(wǎng)只由一個協(xié)議統(tǒng)籌,某個地方需要改變設計時鸽心,就必須把所有部分整體替換掉滚局。而分層之后只需把變動的層替換掉即可。把各層之間的接口部分規(guī)劃好之后顽频,每個層次內(nèi)部的設計就能夠自由改動了藤肢。
值得一提的是,層次化之后糯景,設計也變得相對簡單了嘁圈。處于應用層上的應用可以只考慮分派給自己的任務,而不需要弄清對方在地球上哪個地方蟀淮、對方的傳輸路線是怎樣的最住、是否能確保傳輸送達等問題。
TCP/IP 協(xié)議族各層的作用如下
1.應用層:向用戶提供應用服務時通信的活動怠惶,HTTP協(xié)議也處于改層涨缚。
2.傳輸層:傳輸層對應上面的應用層,提供網(wǎng)絡連接兩臺計算機的網(wǎng)絡傳輸策治。
在傳輸層有兩個性質(zhì)不同的協(xié)議:TCP(Transmission Control Protocol脓魏,傳輸控制協(xié)議)和UDP(User Data Protocol,用戶數(shù)據(jù)報協(xié)議)览妖。
3.網(wǎng)絡層(又名網(wǎng)絡互連層):網(wǎng)絡層處理在網(wǎng)絡上流動的數(shù)據(jù)包,數(shù)據(jù)包是網(wǎng)絡傳輸上的最小數(shù)據(jù)單位揽祥。
4.數(shù)據(jù)鏈路層(又名網(wǎng)絡接口層):用來處理連接網(wǎng)絡的硬件部分讽膏。比如:操作系統(tǒng)、網(wǎng)絡適配器拄丰、網(wǎng)卡府树。
1.3.3 TCP/IP 通信傳輸流
利用 TCP/IP 協(xié)議族進行網(wǎng)絡通信時,會通過分層順序與對方進行通信料按。發(fā)送端從應用層往下走奄侠,接收端則往應用層往上走。
我們用 HTTP 舉例來說明载矿,首先作為發(fā)送端的客戶端在應用層(HTTP 協(xié)議)發(fā)出一個想看某個 Web 頁面的 HTTP 請求垄潮。
接著,為了傳輸方便,在傳輸層(TCP 協(xié)議)把從應用層處收到的數(shù)據(jù)(HTTP 請求報文)進行分割弯洗,并在各個報文上打上標記序號及端口號后轉發(fā)給網(wǎng)絡層旅急。
在網(wǎng)絡層(IP 協(xié)議),增加作為通信目的地的 MAC 地址后轉發(fā)給鏈路層牡整。這樣一來藐吮,發(fā)往網(wǎng)絡的通信請求就準備齊全了。
接收端的服務器在鏈路層接收到數(shù)據(jù)逃贝,按序往上層發(fā)送谣辞,一直到應用層。當傳輸?shù)綉脤鱼灏猓拍芩阏嬲邮盏接煽蛻舳税l(fā)送過來的 HTTP請求泥从。
在層層傳輸數(shù)據(jù)時,每經(jīng)過一層就會打上上一層的首部信息迫皱。層層封裝歉闰,接收端則反之。層層去除卓起。
1.4 與 HTTP 關系密切的協(xié)議 : IP和敬、TCP 和DNS
下面我們分別針對在 TCP/IP 協(xié)議族中與 HTTP 密不可分的 3 個協(xié)議(IP、TCP 和 DNS)進行說明戏阅。
1.4.1 負責傳輸?shù)?IP 協(xié)議
按層次分昼弟,IP(Internet Protocol)網(wǎng)際協(xié)議位于網(wǎng)絡層。InternetProtocol 這個名稱可能聽起來有點夸張奕筐,但事實正是如此舱痘,因為幾乎所有使用網(wǎng)絡的系統(tǒng)都會用到 IP 協(xié)議。TCP/IP 協(xié)議族中的 IP 指的就是網(wǎng)際協(xié)議离赫,協(xié)議名稱中占據(jù)了一半位置芭逝,其重要性可見一斑≡ㄐ兀可能有人會把“IP”和“IP 地址”搞混旬盯,“IP”其實是一種協(xié)議的名稱。
IP 協(xié)議的作用是把各種數(shù)據(jù)包傳送給對方翎猛。而要保證確實傳送到對方那里胖翰,則需要滿足各類條件。其中兩個重要的條件是 IP 地址和 MAC地址(Media Access Control Address)切厘。
IP 地址指明了節(jié)點被分配到的地址萨咳,MAC 地址是指網(wǎng)卡所屬的固定地址。IP 地址可以和 MAC 地址進行配對疫稿。IP 地址可變換培他,但 MAC地址基本上不會更改鹃两。
使用 ARP 協(xié)議憑借 MAC 地址進行通信IP 間的通信依賴 MAC 地址。在網(wǎng)絡上靶壮,通信的雙方在同一局域網(wǎng)(LAN)內(nèi)的情況是很少的怔毛,通常是經(jīng)過多臺計算機和網(wǎng)絡設備中轉才能連接到對方。而在進行中轉時腾降,會利用下一站中轉設備的 MAC地址來搜索下一個中轉目標拣度。這時,會采用 ARP 協(xié)議(AddressResolution Protocol)螃壤。ARP 是一種用以解析地址的協(xié)議抗果,根據(jù)通信方的 IP 地址就可以反查出對應的 MAC 地址。沒有人能夠全面掌握互聯(lián)網(wǎng)中的傳輸狀況在到達通信目標前的中轉過程中奸晴,那些計算機和路由器等網(wǎng)絡設備只能獲悉很粗略的傳輸路線冤馏。
這種機制稱為路由選擇(routing),有點像快遞公司的送貨過程寄啼。想要寄快遞的人逮光,只要將自己的貨物送到集散中心,就可以知道快遞公司是否肯收件發(fā)貨墩划,該快遞公司的集散中心檢查貨物的送達地址涕刚,明確下站該送往哪個區(qū)域的集散中心。接著乙帮,那個區(qū)域的集散中心自會判斷是否能送到對方的家中杜漠。
我們是想通過這個比喻說明,無論哪臺計算機察净、哪臺網(wǎng)絡設備驾茴,它們都無法全面掌握互聯(lián)網(wǎng)中的細節(jié)。