《圖解http》--了解web及網(wǎng)絡(luò)基礎(chǔ)

前言

本章主要介紹web是建立在何種技術(shù)之上,以及HTTP協(xié)議是如何誕生并發(fā)展的,從背景深入了解這部分內(nèi)容。

1.1 使用HTTP協(xié)議訪問Web

日常生活中我們在瀏覽器的搜索引擎框輸入(www.xxx.com)URL,Web頁面是如何呈現(xiàn)在眼前?

訪問web資源圖

Web的傳輸用到了HTTP(HyperText Transfer Protocol,超文本傳輸協(xié)議),從客戶端到服務(wù)器端的一系列操作都在HTTP協(xié)議上完成。

1.2 HTTP的誕生

在深入學(xué)習(xí)HTTP之前,先來介紹HTTP誕生背景。

1.2.1 為知識(shí)共享而規(guī)劃的 Web
1989年3月,互聯(lián)網(wǎng)并沒有普及,在這之前,HTTP誕生。

1.2.2 Web成長時(shí)代
1.1990年11月,CERN成功研制了世界上第一臺(tái)Web服務(wù)器和Web瀏覽器。
2.1993年1月,現(xiàn)代瀏覽器的祖先 NCSA(National Center for Supercomputer Applications,美國國家超級(jí)計(jì)算機(jī)應(yīng)用中心)研發(fā)的Mosaic 問世了。
3.1994 年 的 12 月,網(wǎng)景通信公司發(fā)布了 Netscape Navigator 1.0,1995年微軟公司發(fā)布 Internet Explorer 1.0 和 2.0。
4.時(shí)光流轉(zhuǎn),從 1995 年左右起,微軟公司與網(wǎng)景通信公司之間爆發(fā)的瀏覽器大戰(zhàn)愈演愈烈。兩家公司都各自對(duì) HTML 做了擴(kuò)展,于是導(dǎo)致在HTML 頁面時(shí),必須考慮兼容他們兩家公司的瀏覽器。
5.2000 年前后,這場瀏覽器戰(zhàn)爭隨著網(wǎng)景通信公司的衰落而暫告一段落。但就在 2004 年,Mozilla 基金會(huì)發(fā)布了 Firefox 瀏覽器,第二次瀏覽器大戰(zhàn)隨即爆發(fā)。

1.2.3 駐足不前的 HTTP
1.HTTP/0.9
HTTP于1990年問世,當(dāng)時(shí)HTTP并沒有作為正式的標(biāo)準(zhǔn)。
2.HTTP/1.0
HTTP/1.0正式作為標(biāo)準(zhǔn)被公布是在1996年5月,版本為HTTP/1.0,記載于RFC1945。
3.HTTP/1.1
1997 年 1 月公布的 HTTP/1.1 是目前主流的 HTTP 協(xié)議版本。

1.3 網(wǎng)絡(luò)基礎(chǔ) TCP/IP

1.3.1 TCP/IP協(xié)議族
在計(jì)算機(jī)網(wǎng)絡(luò)中通信和傳輸,就要基于相同的方法和規(guī)則,比如,如何探測到通信目標(biāo)、由哪一邊先發(fā)起通信、使用哪種語言進(jìn)行通信、怎樣結(jié)束通信等規(guī)則都需要事先確定。不同的硬件、操作系統(tǒng)之間的通信,所有的這一切都需要一種規(guī)則。而我們就把這種規(guī)則稱為協(xié)議(protocol)。

TCP/IP是各類協(xié)議族的總稱

1.3.2 TCP/IP分層管理

OSI、TCP/IP模型圖

TCP/IP協(xié)議族按層次分為4層:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層。

把 TCP/IP 層次化是有好處的。比如,如果互聯(lián)網(wǎng)只由一個(gè)協(xié)議統(tǒng)籌,某個(gè)地方需要改變設(shè)計(jì)時(shí),就必須把所有部分整體替換掉。而分層之后只需把變動(dòng)的層替換掉即可。把各層之間的接口部分規(guī)劃好之后,每個(gè)層次內(nèi)部的設(shè)計(jì)就能夠自由改動(dòng)了。
值得一提的是,層次化之后,設(shè)計(jì)也變得相對(duì)簡單了。處于應(yīng)用層上的應(yīng)用可以只考慮分派給自己的任務(wù),而不需要弄清對(duì)方在地球上哪個(gè)地方、對(duì)方的傳輸路線是怎樣的、是否能確保傳輸送達(dá)等問題。

TCP/IP 協(xié)議族各層的作用如下
1.應(yīng)用層:向用戶提供應(yīng)用服務(wù)時(shí)通信的活動(dòng),HTTP協(xié)議也處于改層。
2.傳輸層:傳輸層對(duì)應(yīng)上面的應(yīng)用層,提供網(wǎng)絡(luò)連接兩臺(tái)計(jì)算機(jī)的網(wǎng)絡(luò)傳輸。
在傳輸層有兩個(gè)性質(zhì)不同的協(xié)議:TCP(Transmission Control Protocol,傳輸控制協(xié)議)和UDP(User Data Protocol,用戶數(shù)據(jù)報(bào)協(xié)議)。
3.網(wǎng)絡(luò)層(又名網(wǎng)絡(luò)互連層):網(wǎng)絡(luò)層處理在網(wǎng)絡(luò)上流動(dòng)的數(shù)據(jù)包,數(shù)據(jù)包是網(wǎng)絡(luò)傳輸上的最小數(shù)據(jù)單位。
4.數(shù)據(jù)鏈路層(又名網(wǎng)絡(luò)接口層):用來處理連接網(wǎng)絡(luò)的硬件部分。比如:操作系統(tǒng)、網(wǎng)絡(luò)適配器、網(wǎng)卡。

1.3.3 TCP/IP 通信傳輸流

通信傳輸圖

利用 TCP/IP 協(xié)議族進(jìn)行網(wǎng)絡(luò)通信時(shí),會(huì)通過分層順序與對(duì)方進(jìn)行通信。發(fā)送端從應(yīng)用層往下走,接收端則往應(yīng)用層往上走。
我們用 HTTP 舉例來說明,首先作為發(fā)送端的客戶端在應(yīng)用層(HTTP 協(xié)議)發(fā)出一個(gè)想看某個(gè) Web 頁面的 HTTP 請求。
接著,為了傳輸方便,在傳輸層(TCP 協(xié)議)把從應(yīng)用層處收到的數(shù)據(jù)(HTTP 請求報(bào)文)進(jìn)行分割,并在各個(gè)報(bào)文上打上標(biāo)記序號(hào)及端口號(hào)后轉(zhuǎn)發(fā)給網(wǎng)絡(luò)層。
在網(wǎng)絡(luò)層(IP 協(xié)議),增加作為通信目的地的 MAC 地址后轉(zhuǎn)發(fā)給鏈路層。這樣一來,發(fā)往網(wǎng)絡(luò)的通信請求就準(zhǔn)備齊全了。
接收端的服務(wù)器在鏈路層接收到數(shù)據(jù),按序往上層發(fā)送,一直到應(yīng)用層。當(dāng)傳輸?shù)綉?yīng)用層,才能算真正接收到由客戶端發(fā)送過來的 HTTP請求。


通信傳輸在各層的工作

在層層傳輸數(shù)據(jù)時(shí),每經(jīng)過一層就會(huì)打上上一層的首部信息。層層封裝,接收端則反之。層層去除。

1.4 與 HTTP 關(guān)系密切的協(xié)議 : IP、TCP 和DNS

下面我們分別針對(duì)在 TCP/IP 協(xié)議族中與 HTTP 密不可分的 3 個(gè)協(xié)議(IP、TCP 和 DNS)進(jìn)行說明。

1.4.1 負(fù)責(zé)傳輸?shù)?IP 協(xié)議
按層次分,IP(Internet Protocol)網(wǎng)際協(xié)議位于網(wǎng)絡(luò)層。InternetProtocol 這個(gè)名稱可能聽起來有點(diǎn)夸張,但事實(shí)正是如此,因?yàn)閹缀跛惺褂镁W(wǎng)絡(luò)的系統(tǒng)都會(huì)用到 IP 協(xié)議。TCP/IP 協(xié)議族中的 IP 指的就是網(wǎng)際協(xié)議,協(xié)議名稱中占據(jù)了一半位置,其重要性可見一斑??赡苡腥藭?huì)把“IP”和“IP 地址”搞混,“IP”其實(shí)是一種協(xié)議的名稱。
IP 協(xié)議的作用是把各種數(shù)據(jù)包傳送給對(duì)方。而要保證確實(shí)傳送到對(duì)方那里,則需要滿足各類條件。其中兩個(gè)重要的條件是 IP 地址和 MAC地址(Media Access Control Address)。
IP 地址指明了節(jié)點(diǎn)被分配到的地址,MAC 地址是指網(wǎng)卡所屬的固定地址。IP 地址可以和 MAC 地址進(jìn)行配對(duì)。IP 地址可變換,但 MAC地址基本上不會(huì)更改。
使用 ARP 協(xié)議憑借 MAC 地址進(jìn)行通信IP 間的通信依賴 MAC 地址。在網(wǎng)絡(luò)上,通信的雙方在同一局域網(wǎng)(LAN)內(nèi)的情況是很少的,通常是經(jīng)過多臺(tái)計(jì)算機(jī)和網(wǎng)絡(luò)設(shè)備中轉(zhuǎn)才能連接到對(duì)方。而在進(jìn)行中轉(zhuǎn)時(shí),會(huì)利用下一站中轉(zhuǎn)設(shè)備的 MAC地址來搜索下一個(gè)中轉(zhuǎn)目標(biāo)。這時(shí),會(huì)采用 ARP 協(xié)議(AddressResolution Protocol)。ARP 是一種用以解析地址的協(xié)議,根據(jù)通信方的 IP 地址就可以反查出對(duì)應(yīng)的 MAC 地址。沒有人能夠全面掌握互聯(lián)網(wǎng)中的傳輸狀況在到達(dá)通信目標(biāo)前的中轉(zhuǎn)過程中,那些計(jì)算機(jī)和路由器等網(wǎng)絡(luò)設(shè)備只能獲悉很粗略的傳輸路線。
這種機(jī)制稱為路由選擇(routing),有點(diǎn)像快遞公司的送貨過程。想要寄快遞的人,只要將自己的貨物送到集散中心,就可以知道快遞公司是否肯收件發(fā)貨,該快遞公司的集散中心檢查貨物的送達(dá)地址,明確下站該送往哪個(gè)區(qū)域的集散中心。接著,那個(gè)區(qū)域的集散中心自會(huì)判斷是否能送到對(duì)方的家中。
我們是想通過這個(gè)比喻說明,無論哪臺(tái)計(jì)算機(jī)、哪臺(tái)網(wǎng)絡(luò)設(shè)備,它們都無法全面掌握互聯(lián)網(wǎng)中的細(xì)節(jié)。

傳輸過程

文字節(jié)選《圖解Http》,下一章開始自己總結(jié),然后寫文章。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容