《图解HTTP》第一章个人学习思考
第一章 了解Web及其網(wǎng)絡(luò)基礎(chǔ)
1.1使用HTTP協(xié)議訪問Web
1.2HTTP的誕生
1.3網(wǎng)絡(luò)基礎(chǔ)TCP/IP
1.4和HTTP相關(guān)協(xié)議:IP\TCP和DNS
1.5負(fù)責(zé)域名解析的DNS服務(wù)
1.6各種協(xié)議和HTTP協(xié)議的關(guān)系
1.7URI和URL
——————————————————
心得:
HTTP為知識(shí)共享而誕生的協(xié)議,屬于TCP/IP協(xié)議族里的協(xié)議之一。
我們?yōu)g覽web時(shí)候web是如何實(shí)現(xiàn)的?數(shù)據(jù)怎么傳的?網(wǎng)絡(luò)是如何通信的呢?
利用 TCP/IP 協(xié)議族進(jìn)行網(wǎng)絡(luò)通信時(shí),會(huì)通過分層順序與對(duì)方進(jìn)行通信。發(fā)送端從應(yīng)用層往下走,接收端則往應(yīng)用層往上走。
HTTP這個(gè)應(yīng)用層協(xié)議和其他層的協(xié)議之間是什么一種關(guān)系?
1.1使用HTTP協(xié)議訪問Web
網(wǎng)頁瀏覽器(Web Browser)的地址里輸入U(xiǎn)RL,web頁面如何呈現(xiàn)?
根據(jù)web瀏覽器制定的地址欄的url,從瀏覽器向服務(wù)器端獲取文件資源等信息,從而顯示在web頁面。
Web 使用一種名為 HTTP(HyperText Transfer Protocol,超文本傳輸協(xié)議 )的協(xié)議作為規(guī)范,完成從客戶端到服務(wù)器端等一系列運(yùn)作流程。而協(xié)議是指規(guī)則的約定。
1.2 HTTP誕生
1989 年 3 月,互聯(lián)網(wǎng)還只屬于少數(shù)人。在這一互聯(lián)網(wǎng)的黎明期,HTTP 誕生了。CERN(歐洲核子研究組織)的蒂姆 ? 伯納斯 - 李(Tim BernersLee)博士提出了一種能讓遠(yuǎn)隔兩地的研究者們共享知識(shí)的設(shè)想。最初設(shè)想的基本理念是:借助多文檔之間相互關(guān)聯(lián)形成的超文本(HyperText),連成可相互參閱的 WWW(World Wide Web,萬維網(wǎng))。現(xiàn)在已提出了 3 項(xiàng) WWW 構(gòu)建技術(shù),分別是:把 SGML(Standard Generalized Markup Language,標(biāo)準(zhǔn)通用標(biāo)記語言)作為頁面的文本標(biāo)記語言的 HTML(HyperText Markup Language,超文本標(biāo)記語言);作為文檔傳遞協(xié)議的 HTTP ;指定文檔所在地址的 URL(Uniform Resource Locator,統(tǒng)一資源定位符)。
HTTP/0.9
HTTP 于 1990 年問世。那時(shí)的 HTTP 并沒有作為正式的標(biāo)準(zhǔn)被建立。現(xiàn)在的 HTTP 其實(shí)含有 HTTP1.0 之前版本的意思,因此被稱為HTTP/0.9。
HTTP/1.0
HTTP 正式作為標(biāo)準(zhǔn)被公布是在 1996 年的 5 月,版本被命名為HTTP/1.0,并記載于 RFC1945。雖說是初期標(biāo)準(zhǔn),但該協(xié)議標(biāo)準(zhǔn)至今仍被廣泛使用在服務(wù)器端。
HTTP/1.1
1997 年 1 月公布的 HTTP/1.1 是目前主流的 HTTP 協(xié)議版本。當(dāng)初的標(biāo)準(zhǔn)是 RFC2068,之后發(fā)布的修訂版 RFC2616 就是當(dāng)前的最新版本。
1.3 網(wǎng)絡(luò)基礎(chǔ)TCP/IP
TCP/IP 協(xié)議族
計(jì)算機(jī)與網(wǎng)絡(luò)設(shè)備要相互通信,雙方就必須基于相同的方法。比如,如何探測(cè)到通信目標(biāo)、由哪一邊先發(fā)起通信、使用哪種語言進(jìn)行通信、怎樣結(jié)束通信等規(guī)則都需要事先確定。不同的硬件、操作系統(tǒng)之間的通信,所有的這一切都需要一種規(guī)則。而我們就把這種規(guī)則稱為協(xié)議(protocol)。
TCP/IP 是互聯(lián)網(wǎng)相關(guān)各類協(xié)議族的總稱
**協(xié)議中存在各式各樣的內(nèi)容。**從電纜的規(guī)格到 IP 地址的選定方法、尋找異地用戶的方法、雙方建立通信的順序,以及 Web 頁面顯示需要處理的步驟,等等。
TCP/IP分層管理
TCP/IP 協(xié)議族按層次分別分為以下 4 層:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層。
TCP/IP 層次化是有好處的。
應(yīng)用層:
應(yīng)用層決定了向用戶提供應(yīng)用服務(wù)時(shí)通信的活動(dòng)。TCP/IP 協(xié)議族內(nèi)預(yù)存了各類通用的應(yīng)用服務(wù)。比如,FTP(File Transfer Protocol,文件傳輸協(xié)議)和 DNS(Domain Name System,域名系統(tǒng))服務(wù)就是其中兩類。HTTP 協(xié)議也處于該層。
傳輸層:
傳輸層對(duì)上層應(yīng)用層,提供處于網(wǎng)絡(luò)連接中的兩臺(tái)計(jì)算機(jī)之間的數(shù)據(jù)傳輸。在傳輸層有兩個(gè)性質(zhì)不同的協(xié)議。TCP(Transmission Control Protocol,傳輸控制協(xié)議)和 UDP(User Data Protocol,用戶數(shù)據(jù)報(bào)協(xié)議)。
網(wǎng)絡(luò)層(網(wǎng)絡(luò)互連層):
網(wǎng)絡(luò)層用來處理在網(wǎng)絡(luò)上流動(dòng)的數(shù)據(jù)包。數(shù)據(jù)包是網(wǎng)絡(luò)傳輸?shù)淖钚?shù)據(jù)單位,該層規(guī)定了通過怎樣的路徑(所謂的傳輸路線)到達(dá)對(duì)方計(jì)算機(jī),并把數(shù)據(jù)包傳送給對(duì)方。
和對(duì)方計(jì)算機(jī)之間通過多臺(tái)計(jì)算機(jī)或網(wǎng)絡(luò)設(shè)備進(jìn)行傳輸時(shí),網(wǎng)絡(luò)層所起的作用就是在眾多的選項(xiàng)內(nèi)選擇一條傳輸路線。
鏈路層(又名數(shù)據(jù)鏈路層,網(wǎng)絡(luò)接口層)
用來處理連接網(wǎng)絡(luò)的硬件部分。包括控制操作系統(tǒng)、硬件的設(shè)備驅(qū)動(dòng)、NIC(Network Interface Card,網(wǎng)絡(luò)適配器,即網(wǎng)卡),及光纖等物理可見部分(還包括連接器等一切傳輸媒介)。硬件上的范疇均在鏈路層的作用范圍之內(nèi)。
利用 TCP/IP 協(xié)議族進(jìn)行網(wǎng)絡(luò)通信時(shí),會(huì)通過分層順序與對(duì)方進(jìn)行通信。發(fā)送端從應(yīng)用層往下走,接收端則往應(yīng)用層往上走。
HTTP舉例
1、作為發(fā)送端的客戶端在應(yīng)用層(HTTP協(xié)議)發(fā)出想看某個(gè)Web頁面的HTTP請(qǐng)求。
2、在傳輸層(TCP協(xié)議)(HTTP請(qǐng)求報(bào)文)進(jìn)行分割,并在各個(gè)報(bào)文上打上標(biāo)記序號(hào)及端口號(hào)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)層。
3、在網(wǎng)絡(luò)層(IP協(xié)議),增加作為通信目的地的MAC地址后轉(zhuǎn)發(fā)給鏈路層。
4、接收端的服務(wù)器在鏈路層接收到數(shù)據(jù),按順序往上層發(fā)送,一直到應(yīng)用層,當(dāng)傳輸?shù)綉?yīng)用層,才真正接收到由客戶端發(fā)送來的HTTP請(qǐng)求。
1.4 與 HTTP 關(guān)系密切的協(xié)議 : IP、TCP 和DNS
協(xié)議及其對(duì)應(yīng)的層:
HTTP協(xié)議/DNS協(xié)議,應(yīng)用層
TCP協(xié)議,傳輸層
IP協(xié)議,網(wǎng)絡(luò)層
1.4.1 負(fù)責(zé)傳輸?shù)腎P協(xié)議
IP(Internet Protocol,因特網(wǎng)協(xié)議),網(wǎng)際協(xié)議位于網(wǎng)絡(luò)層。TCP/IP協(xié)議族里的IP指的就是網(wǎng)際協(xié)議,“IP”和“IP 地址”別搞混,“IP”其實(shí)是一種協(xié)議的名稱。
**IP協(xié)議作用——把各種數(shù)據(jù)包傳送給對(duì)方。保證確實(shí)傳送到對(duì)方那里。 **
問題:如何做到正確的傳輸給對(duì)方它所需要的數(shù)據(jù)呢?
IP地址指明節(jié)點(diǎn)被分配到的地址,MAC地址是指網(wǎng)卡所屬的固定地址。IP地址和MAC地址進(jìn)行配對(duì)。IP地址可變換,但是MAC地址基本上不改變。(使用 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 地址。
在到達(dá)通信目標(biāo)前中轉(zhuǎn)過程里,計(jì)算機(jī)和路由器等網(wǎng)絡(luò)設(shè)備獲悉傳輸路線的機(jī)制稱為路由選擇。(routing) 幫助記憶:寄件人發(fā)件,快遞公司收件到貨物集散中心然后派件中轉(zhuǎn),達(dá)到收件人所在區(qū)域在層層分發(fā)直到到達(dá)地址。
1.4.2 確保可靠性的TCP協(xié)議
按層次分,TCP 位于傳輸層,提供可靠的字節(jié)流服務(wù)。
字節(jié)流服務(wù)(Byte Stream Service)是指,為了方便傳輸,將大塊數(shù)據(jù)分割成以報(bào)文段(segment)為單位的數(shù)據(jù)包進(jìn)行管理。而可靠的傳輸服務(wù)是指,能夠把數(shù)據(jù)準(zhǔn)確可靠地傳給對(duì)方。一言以蔽之,TCP 協(xié)議為了更容易傳送大數(shù)據(jù)才把數(shù)據(jù)分割,而且 TCP 協(xié)議能夠確認(rèn)數(shù)據(jù)最終是否送達(dá)到對(duì)方。
如何實(shí)現(xiàn)數(shù)據(jù)包傳輸?shù)秸_的目標(biāo)呢?
用 TCP 協(xié)議把數(shù)據(jù)包送出去后,TCP不會(huì)對(duì)傳送后的情況置之不理,它一定會(huì)向?qū)Ψ酱_認(rèn)是否成功送達(dá)。握手過程中使用了 TCP 的標(biāo)志(flag) —— SYN(synchronize) 和ACK(acknowledgement)。
發(fā)送端首先發(fā)送一個(gè)帶 SYN 標(biāo)志的數(shù)據(jù)包給對(duì)方。接收端收到后,回傳一個(gè)帶有 SYN/ACK 標(biāo)志的數(shù)據(jù)包以示傳達(dá)確認(rèn)信息。最后,發(fā)送端再回傳一個(gè)帶 ACK 標(biāo)志的數(shù)據(jù)包,代表“握手”結(jié)束。若在握手過程中某個(gè)階段莫名中斷,TCP 協(xié)議會(huì)再次以相同的順序發(fā)送相同的數(shù)據(jù)包。
1.5 負(fù)責(zé)域名解析的DNS服務(wù)
DNS(Domain Name System)服務(wù)是和HTTP協(xié)議一樣位于應(yīng)用層的協(xié)議,是提供域名到IP地址時(shí)間的解析服務(wù)。
DNS協(xié)議提供通過域名查找IP地址,或者逆向從IP地址反查域名的服務(wù)。
計(jì)算機(jī)可以被賦予IP地址,也可以被賦予主機(jī)名和域名。**用戶通常使用主機(jī)名或域名來訪問對(duì)方的計(jì)算機(jī),**而不是直接通過 IP地址訪問。因?yàn)榕c IP 地址的一組純數(shù)字相比,用字母配合數(shù)字的表示形式來指定計(jì)算機(jī)名更符合人類的記憶習(xí)慣。計(jì)算機(jī)通常通過純數(shù)字的IP地址來訪問
1.6 各種協(xié)議和HTTP協(xié)議的關(guān)系
IP 協(xié)議、TCP 協(xié)議和 DNS 服務(wù)在使用HTTP 協(xié)議的通信過程中各自發(fā)揮了哪些作用?
1.7 URI和URL
URI,統(tǒng)一資源標(biāo)識(shí)符
URL,統(tǒng)一資源定位符
URI是用字符串標(biāo)識(shí)的某一互聯(lián)網(wǎng)資源,URL表示資源的地點(diǎn)(互聯(lián)網(wǎng)上所處的位置),URL是URI的子集。
1.7.1 URI——Uniform Resource Identifier
Uniform:規(guī)定統(tǒng)一的格式可方便處理多種不同類型的資源,而不是根據(jù)上下文環(huán)境來識(shí)別資源指定的訪問方式。
Resource:定義“可識(shí)別的任何東西”,除了文檔文件、圖像或服務(wù)(如當(dāng)天天氣預(yù)報(bào))外可以區(qū)別于其他類型的,全都可作為資源。
Identifier:表示可標(biāo)識(shí)的對(duì)象,也稱為標(biāo)識(shí)符。
URI 就是由某個(gè)協(xié)議方案表示的資源的定位標(biāo)識(shí)符。協(xié)議方案是指訪問資源所使用的協(xié)議類型名稱。
1.7.2 URI格式
表示指定的URI,要使用涵蓋全部必要信息的絕對(duì)URI、絕對(duì)URL以及相對(duì)URL.
相對(duì)URL是指從瀏覽器中基本URI處指定的URL,如/image/logo.gif。
http: 或 https: 等協(xié)議方案名獲取訪問資源時(shí)要指定協(xié)議類型。不區(qū)分字母大小寫,最后附一個(gè)冒號(hào)(:)。
1、登入信息(認(rèn)證)指定用戶名和密碼作為從服務(wù)端獲取資源時(shí)必要的登入信息(身份認(rèn)證)
2、服務(wù)器地址:使用絕對(duì)URI必須指定訪問的服務(wù)器地址。地址可以是類似hackr.jp 這種 DNS 可解析的名稱,或是 192.168.1.1 這類 IPv4 地址名,還可以是 [0:0:0:0:0:0:0:1] 這樣用方括號(hào)括起來的 IPv6 地址名。
3、服務(wù)器端口號(hào):
指定服務(wù)器連接的網(wǎng)絡(luò)端口號(hào)。是可選項(xiàng),用戶省略則自動(dòng)使用默認(rèn)端口號(hào)。
4、帶層次的文件路徑:
指定服務(wù)器上的文件路徑來定位特指的資源。
5、查詢字符串:
針對(duì)已指定的文件路徑內(nèi)的資源,可以使用查詢字符串傳入任意參數(shù),此項(xiàng)可選。
6、片段標(biāo)識(shí)符
使用片段標(biāo)識(shí)符通常可標(biāo)記處已獲取資源里的子資源(文檔內(nèi)的某個(gè)位置)。但在 RFC 中并沒有明確規(guī)定其使用方法。該項(xiàng)也為可選項(xiàng)。
RFC(Request for Comments,征求修正意見書)
通常,應(yīng)用程序會(huì)遵照由 RFC 確定的標(biāo)準(zhǔn)實(shí)現(xiàn)。可以說,RFC 是互聯(lián)網(wǎng)的設(shè)計(jì)文檔,要是不按照 RFC 標(biāo)準(zhǔn)執(zhí)行,就有可能導(dǎo)致無法通信的狀況。比如,有一臺(tái) Web 服務(wù)器內(nèi)的應(yīng)用服務(wù)沒有遵照RFC 的標(biāo)準(zhǔn)實(shí)現(xiàn),那 Web 瀏覽器就很可能無法訪問這臺(tái)服務(wù)器了。
由于不遵照 RFC 標(biāo)準(zhǔn)實(shí)現(xiàn)就無法進(jìn)行 HTTP 協(xié)議通信,所以基本上客戶端和服務(wù)器端都會(huì)以 RFC 為標(biāo)準(zhǔn)來實(shí)現(xiàn) HTTP 協(xié)議。但也存在某些應(yīng)用程序因客戶端或服務(wù)器端的不同,而未遵照 RFC 標(biāo)準(zhǔn),反而將自成一套的“標(biāo)準(zhǔn)”擴(kuò)展的情況。
總結(jié)
以上是生活随笔為你收集整理的《图解HTTP》第一章个人学习思考的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java ssm自行车在线租赁系统ide
- 下一篇: 唐诗分析项目设计文档