免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
漲知識(shí)了,網(wǎng)絡(luò)原來(lái)是這樣連接的

從在瀏覽器中輸入網(wǎng)址,到屏幕上顯示出相關(guān)網(wǎng)頁(yè)的內(nèi)容,這個(gè)只有幾秒鐘的過(guò)程,卻需要很多硬件和軟件在各自的崗位上相互配合完成一系列的工作,你知道這個(gè)過(guò)程中究竟發(fā)生了什么么?

下面我們就以探索之旅的形式,探索這一系列工作中的其中一個(gè)環(huán)節(jié)——瀏覽器是怎么生成消息的。

在開始探索之旅之前,我們準(zhǔn)備了一些和本文內(nèi)容有關(guān)的小問(wèn)題,請(qǐng)大家先試試看。這些題目是否答得出來(lái)并不影響接下來(lái)的探索之旅,因此大家可以放輕松。

下列說(shuō)法是正確的(√)還是錯(cuò)誤的(×)?

  1. http://www.nikkeibp.co.jp/ 中的www 代表World Wide Web 協(xié)議(對(duì)通信操作規(guī)則所作的定義)。
  2. 個(gè)人也可以申請(qǐng)注冊(cè)互聯(lián)網(wǎng)中的域名。
  3. 瀏覽器等網(wǎng)絡(luò)應(yīng)用程序?qū)嶋H上并不具備網(wǎng)絡(luò)控制功能。

答案:

  1. ×。http://www.nikkeibp.co.jp/ 中的www 只是Web 服務(wù)器上的一種命名。而且,World Wide Web 也不是一個(gè)協(xié)議的名字,而是Web 的提出者最早開發(fā)的瀏覽器兼HTML 編輯器的名字。
  2. √。如果是“.com”“.net”“.org”“.jp”(除“co.jp”“ne.jp”等“xx.jp”格式的域名外)等沒(méi)有對(duì)注冊(cè)對(duì)象范圍進(jìn)行限制的域名,任何個(gè)人都可以申請(qǐng)注冊(cè)。此外,也有一種“.name”域名是專門為個(gè)人申請(qǐng)者準(zhǔn)備的。
  3. √。應(yīng)用程序并不是自己去控制網(wǎng)絡(luò),而是委托操作系統(tǒng)來(lái)控制網(wǎng)絡(luò)。

探索之旅從輸入網(wǎng)址開始

我們的探索之旅從在瀏覽器中輸入網(wǎng)址開始,在介紹瀏覽器的工作方式之前,讓我們先來(lái)介紹一下網(wǎng)址。網(wǎng)址,準(zhǔn)確來(lái)說(shuō)應(yīng)該叫URL,如果我說(shuō)它就是以http:// 開頭的那一串東西,恐怕大家一下子就明白了,但實(shí)際上除了“http:”,網(wǎng)址還可以以其他一些文字開頭,例如“ftp:”“ file:”“mailto:” 等。

之所以有各種各樣的URL,是因?yàn)楸M管我們通常是使用瀏覽器來(lái)訪問(wèn)Web服務(wù)器的,但實(shí)際上瀏覽器并不只有這一個(gè)功能,它也可以用來(lái)在FTP服務(wù)器上下載和上傳文件,同時(shí)也具備電子郵件客戶端的功能。可以說(shuō),瀏覽器是一個(gè)具備多種客戶端功能的綜合性客戶端軟件,因此它需要一些東西來(lái)判斷應(yīng)該使用其中哪種功能來(lái)訪問(wèn)相應(yīng)的數(shù)據(jù),而各種不同的URL 就是用來(lái)干這個(gè)的,比如訪問(wèn)Web 服務(wù)器時(shí)用“http:”,而訪問(wèn)FTP服務(wù)器時(shí)用“ftp:”。

圖1.1 列舉了現(xiàn)在互聯(lián)網(wǎng)中常見的幾種URL,根據(jù)訪問(wèn)目標(biāo)的不同,URL 的寫法也會(huì)不同。例如在訪問(wèn)Web 服務(wù)器和FTP 服務(wù)器時(shí),URL 中會(huì)包含服務(wù)器的域名和要訪問(wèn)的文件的路徑名等,而發(fā)郵件的URL 則包含收件人的郵件地址。此外,根據(jù)需要,URL 中還會(huì)包含用戶名、密碼、服務(wù)器端口號(hào)等信息。

盡管URL 有各種不同的寫法,但它們有一個(gè)共同點(diǎn),那就是URL 開頭的文字,即“http:”“ftp:”“file:”“mailto:”這部分文字都表示瀏覽器應(yīng)當(dāng)使用的訪問(wèn)方法。比如當(dāng)訪問(wèn)Web 服務(wù)器時(shí)應(yīng)該使用HTTP協(xié)議,而訪問(wèn)FTP 服務(wù)器時(shí)則應(yīng)該使用FTP 協(xié)議。因此,我們可以把這部分理解為訪問(wèn)時(shí)使用的協(xié)議類型。盡管后面部分的寫法各不相同,但開頭部分的內(nèi)容決定了后面部分的寫法,因此并不會(huì)造成混亂。

瀏覽器先要解析URL

瀏覽器要做的第一步工作就是對(duì)URL 進(jìn)行解析,從而生成發(fā)送給Web服務(wù)器的請(qǐng)求消息。剛才我們已經(jīng)講過(guò),URL 的格式會(huì)隨著協(xié)議的不同而不同,因此下面我們以訪問(wèn)Web 服務(wù)器的情況為例來(lái)進(jìn)行講解。

根據(jù)HTTP 的規(guī)格,URL 包含圖1.2(a)中的這幾種元素。當(dāng)對(duì)URL進(jìn)行解析時(shí),首先需要按照?qǐng)D1.2(a)的格式將其中的各個(gè)元素拆分出來(lái),例如圖1.2(b)中的URL 會(huì)拆分成圖1.2(c)的樣子。然后,通過(guò)拆分出來(lái)的這些元素,我們就能夠明白URL 代表的含義。例如,我們來(lái)看拆分結(jié)果圖1.2(c),其中包含Web 服務(wù)器名稱www.lab.glasscom.com,以及文件的路徑名/dir1/file1.html,因此我們就能夠明白,圖1.2(b)中的URL 表示要訪問(wèn)www.lab.glasscom.com 這個(gè)Web 服務(wù)器上路徑名為/dir/file1.html 的文件,也就是位于/dir/ 目錄下的file1.html 這個(gè)文件(圖1.3)。

省略文件名的情況

圖1.2(b)是一個(gè)以“http:”開頭的典型URL,但有時(shí)候我們也會(huì)見到一些不太一樣的URL,例如下面這個(gè)URL 是以“/”來(lái)結(jié)尾的。

(a)http://www.lab.glasscom.com/dir/

我們可以這樣理解,以“/”結(jié)尾代表/dir/ 后面本來(lái)應(yīng)該有的文件名被省略了。根據(jù)URL 的規(guī)則,文件名可以像前面這樣省略。

不過(guò),沒(méi)有文件名,服務(wù)器怎么知道要訪問(wèn)哪個(gè)文件呢?其實(shí),我們會(huì)在服務(wù)器上事先設(shè)置好文件名省略時(shí)要訪問(wèn)的默認(rèn)文件名。這個(gè)設(shè)置根據(jù)服務(wù)器不同而不同,大多數(shù)情況下是index.html 或者default.htm 之類的文件名。因此,像前面這樣省略文件名時(shí),服務(wù)器就會(huì)訪問(wèn)/dir/index.html或者/dir/default.htm。

還有一些URL 是像下面這樣只有Web 服務(wù)器的域名的,這也是一種省略了文件名的形式。

(b)http://www.lab.glasscom.com/

這個(gè)URL 也是以“/”結(jié)尾的,也就是說(shuō)它表示訪問(wèn)一個(gè)名叫“/”的目錄。而且,由于省略了文件名,所以結(jié)果就是訪問(wèn)/index.html 或者/default.htm 這樣的文件了。

那么,下面這個(gè)URL 又是什么意思呢?

(c)http://www.lab.glasscom.com

這次連結(jié)尾的“/”都省略了。像這樣連目錄名都省略時(shí),真不知道到底在請(qǐng)求哪個(gè)文件了,實(shí)在有些過(guò)分。不過(guò),這種寫法也是允許的。當(dāng)沒(méi)有路徑名時(shí),就代表訪問(wèn)根目錄下事先設(shè)置的默認(rèn)文件,也就是/index.html 或者/default.htm 這些文件,這樣就不會(huì)發(fā)生混亂了。

不過(guò),下面這個(gè)例子就更詭異了。

(d)http://www.lab.glasscom.com/whatisthis

前面這個(gè)例子中,由于末尾沒(méi)有“/”,所以whatisthis 應(yīng)該理解為文件名才對(duì)。但實(shí)際上,很多人并沒(méi)有正確理解省略文件名的規(guī)則,經(jīng)常會(huì)把目錄末尾的“/”也給省略了。因此,或許我們不應(yīng)該總是將whatisthis 作為文件名來(lái)處理。一般來(lái)說(shuō),這種情況會(huì)按照下面的慣例進(jìn)行處理:如果Web 服務(wù)器上存在名為whatisthis 的文件,則將whatisthis 作為文件名來(lái)處理;如果存在名為whatisthis 的目錄,則將whatisthis 作為目錄名來(lái)處理。

瀏覽器的第一步工作就是對(duì)URL 進(jìn)行解析。

HTTP 的基本思路

解析完URL 之后,我們就知道應(yīng)該要訪問(wèn)的目標(biāo)在哪里了。接下來(lái),瀏覽器會(huì)使用HTTP 協(xié)議來(lái)訪問(wèn)Web 服務(wù)器,不過(guò)在介紹這一環(huán)節(jié)之前,我們先來(lái)講一講HTTP 協(xié)議到底是怎么回事。

HTTP 協(xié)議定義了客戶端和服務(wù)器之間交互的消息內(nèi)容和步驟,其基本思路非常簡(jiǎn)單。首先,客戶端會(huì)向服務(wù)器發(fā)送請(qǐng)求消息(圖1.4)。請(qǐng)求消息中包含的內(nèi)容是“對(duì)什么”和“進(jìn)行怎樣的操作”兩個(gè)部分。其中相當(dāng)于“對(duì)什么”的部分稱為URI。一般來(lái)說(shuō),URI 的內(nèi)容是一個(gè)存放網(wǎng)頁(yè)數(shù)據(jù)的文件名或者是一個(gè)CGI 程序的文件名,例如“/dir1/file1.html”“/dir1/program1.cgi”等。不過(guò),URI 不僅限于此,也可以直接使用“http:”開頭的URL 來(lái)作為URI。換句話說(shuō)就是,這里可以寫各種訪問(wèn)目標(biāo),而這些訪問(wèn)目標(biāo)統(tǒng)稱為URI。

相當(dāng)于接下來(lái)“進(jìn)行怎樣的操作”的部分稱為方法。方法表示需要讓W(xué)eb 服務(wù)器完成怎樣的工作,其中典型的例子包括讀取URI 表示的數(shù)據(jù)、將客戶端輸入的數(shù)據(jù)發(fā)送給URI 表示的程序等。表1.1 列舉了主要的方法,通過(guò)這張表大家應(yīng)該能夠理解通過(guò)方法可以執(zhí)行怎樣的操作。

除了圖1.4 中的內(nèi)容之外,HTTP 消息中還有一些用來(lái)表示附加信息的頭字段??蛻舳讼騑eb 服務(wù)器發(fā)送數(shù)據(jù)時(shí),會(huì)先發(fā)送頭字段,然后再發(fā)送數(shù)據(jù)。不過(guò),頭字段屬于可有可無(wú)的附加信息,因此我們暫時(shí)跳過(guò)。

收到請(qǐng)求消息之后,Web 服務(wù)器會(huì)對(duì)其中的內(nèi)容進(jìn)行解析,通過(guò)URI和方法來(lái)判斷“對(duì)什么”“進(jìn)行怎樣的操作”,并根據(jù)這些要求來(lái)完成自己的工作,然后將結(jié)果存放在響應(yīng)消息中。在響應(yīng)消息的開頭有一個(gè)狀態(tài)碼,它用來(lái)表示操作的執(zhí)行結(jié)果是成功還是發(fā)生了錯(cuò)誤。當(dāng)我們?cè)L問(wèn)Web 服務(wù)器時(shí),遇到找不到的文件就會(huì)顯示出404 Not Found 的錯(cuò)誤信息,其實(shí)這就是狀態(tài)碼。狀態(tài)碼后面就是頭字段和網(wǎng)頁(yè)數(shù)據(jù)。響應(yīng)消息會(huì)被發(fā)送回客戶端,客戶端收到之后,瀏覽器會(huì)從消息中讀出所需的數(shù)據(jù)并顯示在屏幕上。到這里,HTTP 的整個(gè)工作就完成了。

現(xiàn)在大家應(yīng)該已經(jīng)了解了HTTP 的全貌,下面我們?cè)傺a(bǔ)充一些關(guān)于HTTP 方法的知識(shí)。表1.1 列出的方法中,最常用的一個(gè)就是GET 方法了。一般當(dāng)我們?cè)L問(wèn)Web 服務(wù)器獲取網(wǎng)頁(yè)數(shù)據(jù)時(shí),使用的就是GET 方法。所謂一般的訪問(wèn)過(guò)程大概就是這樣的:首先,在請(qǐng)求消息中寫上GET 方法,然后在URI 中寫上存放網(wǎng)頁(yè)數(shù)據(jù)的文件名“/dir1/file1.html”,這就表示我們需要獲取/dir1/file1.html 文件中的數(shù)據(jù)。當(dāng)Web 服務(wù)器收到消息后,會(huì)打開/dir1/file1.html 文件并讀取出里面的數(shù)據(jù),然后將讀出的數(shù)據(jù)存放到響應(yīng)消息中,并返回給客戶端。最后,客戶端瀏覽器會(huì)收到這些數(shù)據(jù)并顯示在屏幕上。

還有一個(gè)經(jīng)常使用的方法就是POST。我們?cè)诒韱沃刑顚憯?shù)據(jù)并將其發(fā)送給Web 服務(wù)器時(shí)就會(huì)使用這個(gè)方法。當(dāng)我們?cè)诰W(wǎng)上商城填寫收貨地址和姓名,或者是在網(wǎng)上填寫問(wèn)卷時(shí),都會(huì)遇到帶有輸入框的網(wǎng)頁(yè),而這些可以輸入信息的部分就是表單。使用POST 方法時(shí),URI 會(huì)指向Web 服務(wù)器中運(yùn)行的一個(gè)應(yīng)用程序的文件名,典型的例子包括“index.cgi”“index.php”等。然后,在請(qǐng)求消息中,除了方法和URI 之外,還要加上傳遞給應(yīng)用程序和腳本的數(shù)據(jù)。這里的數(shù)據(jù)也就是用戶在輸入框里填寫的信息。

當(dāng)服務(wù)器收到消息后,Web 服務(wù)器會(huì)將請(qǐng)求消息中的數(shù)據(jù)發(fā)送給URI 指定的應(yīng)用程序。最后,Web 服務(wù)器從應(yīng)用程序接收輸出的結(jié)果,會(huì)將它存放到響應(yīng)消息中并返回給客戶端。

前面兩個(gè)方法屬于HTTP 的典型用法,除此之外的其他方法在互聯(lián)網(wǎng)上幾乎見不到使用的例子。因此,只要理解了這兩個(gè)方法,就能夠應(yīng)付大部分情況了,但如果可以,還是推薦大家看一看表1.1 中所有方法的說(shuō)明,思考一下它們的含義,以便理解HTTP 協(xié)議具備的所有功能。如果只有GET 和POST 方法,我們就只能從Web 服務(wù)器中獲取網(wǎng)頁(yè)數(shù)據(jù),以及將網(wǎng)頁(yè)輸入框中的信息發(fā)送給Web 服務(wù)器,而有了PUT 和DELETE 方法,就能夠從客戶端修改或者刪除Web 服務(wù)器上的文件。有了這些功能,我們甚至可以將Web 服務(wù)器當(dāng)成文件服務(wù)器來(lái)用。當(dāng)然,出于安全上的原因,或者是支持GET 和POST 之外的方法的客戶端沒(méi)有廣泛普及之類的原因,一般我們并不會(huì)碰到這樣的用法,但大家應(yīng)該能夠看出,HTTP 協(xié)議其實(shí)蘊(yùn)藏著很多的可能性。

生成HTTP 請(qǐng)求消息

理解了HTTP 的基本知識(shí)之后,讓我們回到對(duì)瀏覽器本身的探索中來(lái)。

對(duì)URL 進(jìn)行解析之后,瀏覽器確定了Web 服務(wù)器和文件名,接下來(lái)就是根據(jù)這些信息來(lái)生成HTTP 請(qǐng)求消息了。實(shí)際上,HTTP 消息在格式上是有嚴(yán)格規(guī)定的,因此瀏覽器會(huì)按照規(guī)定的格式來(lái)生成請(qǐng)求消息(圖1.5)。

首先,請(qǐng)求消息的第一行稱為請(qǐng)求行。這里的重點(diǎn)是最開頭的方法,方法可以告訴Web 服務(wù)器它應(yīng)該進(jìn)行怎樣的操作。不過(guò)這里必須先解決一個(gè)問(wèn)題,那就是方法有很多種,我們必須先判斷應(yīng)該選用其中的哪一種。

解決這個(gè)問(wèn)題的關(guān)鍵在于瀏覽器的工作狀態(tài)。這次探索之旅是從在瀏覽器頂部的地址欄中輸入網(wǎng)址開始的,但瀏覽器并非只有在這一種場(chǎng)景下才會(huì)向Web 服務(wù)器發(fā)送請(qǐng)求消息。比如點(diǎn)擊網(wǎng)頁(yè)中的超級(jí)鏈接,或者在表單中填寫信息后點(diǎn)擊“提交”按鈕,這些場(chǎng)景都會(huì)觸發(fā)瀏覽器的工作,而選用哪種方法也是根據(jù)場(chǎng)景來(lái)確定的。

我們的場(chǎng)景是在地址欄中輸入網(wǎng)址并顯示網(wǎng)頁(yè),因此這里應(yīng)該使用GET方法。點(diǎn)擊超級(jí)鏈接的場(chǎng)景中也是使用GET 方法。如果是表單,在HTML源代碼中會(huì)在表單的屬性中指定使用哪種方法來(lái)發(fā)送請(qǐng)求,可能是GET 也可能是POST(圖1.6)。

寫好方法之后,加一個(gè)空格,然后寫URI。URI 部分的格式如下,一般是文件和程序的路徑名。

/< 目錄名>/…/< 文件名>

前面已經(jīng)講過(guò),路徑名一般來(lái)說(shuō)已經(jīng)包含在URL 中了,因此只要從URL 中提取出來(lái)原封不動(dòng)地寫上去就好了。

第一行的末尾需要寫上HTTP 的版本號(hào),這是為了表示該消息是基于哪個(gè)版本的HTTP 規(guī)格編寫的。到此為止,第一行就結(jié)束了。

第二行開始為消息頭。盡管通過(guò)第一行我們就可以大致理解請(qǐng)求的內(nèi)容,但有些情況下還需要一些額外的詳細(xì)信息,而消息頭的功能就是用來(lái)存放這些信息。消息頭的規(guī)格中定義了很多項(xiàng)目,如日期、客戶端支持的數(shù)據(jù)類型、語(yǔ)言、壓縮格式、客戶端和服務(wù)器的軟件名稱和版本、數(shù)據(jù)有效期和最后更新時(shí)間等。這些項(xiàng)目表示的都是非常細(xì)節(jié)的信息,因此要想準(zhǔn)確理解這些信息的意思,就需要對(duì)HTTP 協(xié)議有非常深入的了解。表1.2中列舉了主要的頭字段供大家參考,但不必全部弄明白。消息頭中的內(nèi)容隨著瀏覽器類型、版本號(hào)、設(shè)置等的不同而不同,大多數(shù)情況下消息頭的長(zhǎng)度為幾行到十幾行不等。

寫完消息頭之后,還需要添加一個(gè)完全沒(méi)有內(nèi)容的空行,然后寫上需要發(fā)送的數(shù)據(jù)。這一部分稱為消息體,也就是消息的主體。不過(guò),在使用GET 方法的情況下,僅憑方法和URI,Web 服務(wù)器就能夠判斷需要進(jìn)行怎樣的操作,因此消息體中不需要填寫任何數(shù)據(jù)。消息體結(jié)束之后,整個(gè)消息也就結(jié)束了。

當(dāng)使用POST 方法時(shí),需要將表單中填寫的信息寫在消息體中。到此為止,請(qǐng)求消息的生成操作就全部完成了。

發(fā)送請(qǐng)求后會(huì)收到響應(yīng)

當(dāng)我們將上述請(qǐng)求消息發(fā)送出去之后,Web 服務(wù)器會(huì)返回響應(yīng)消息。關(guān)于響應(yīng)消息我們?cè)谶@里先粗略地了解一下。響應(yīng)消息的格式以及基本思路和請(qǐng)求消息是相同的(圖1.5(b)),差別只在第一行上。在響應(yīng)消息中,第一行的內(nèi)容為狀態(tài)碼和響應(yīng)短語(yǔ),用來(lái)表示請(qǐng)求的執(zhí)行結(jié)果是成功還是出錯(cuò)。狀態(tài)碼和響應(yīng)短語(yǔ)表示的內(nèi)容一致,但它們的用途不同。狀態(tài)碼是一個(gè)數(shù)字,它主要用來(lái)向程序告知執(zhí)行的結(jié)果(表1.3);相對(duì)地,響應(yīng)短語(yǔ)則是一段文字,用來(lái)向人們告知執(zhí)行的結(jié)果。

返回響應(yīng)消息之后,瀏覽器會(huì)將數(shù)據(jù)提取出來(lái)并顯示在屏幕上,我們就能夠看到網(wǎng)頁(yè)的樣子了。如果網(wǎng)頁(yè)的內(nèi)容只有文字,那么到這里就全部處理完畢了,但如果網(wǎng)頁(yè)中還包括圖片等資源,則還有下文。

當(dāng)網(wǎng)頁(yè)中包含圖片時(shí),會(huì)在網(wǎng)頁(yè)中的相應(yīng)位置嵌入表示圖片文件的標(biāo)簽的控制信息。瀏覽器會(huì)在顯示文字時(shí)搜索相應(yīng)的標(biāo)簽,當(dāng)遇到圖片相關(guān)的標(biāo)簽時(shí),會(huì)在屏幕上留出用來(lái)顯示圖片的空間,然后再次訪問(wèn)Web 服務(wù)器,按照標(biāo)簽中指定的文件名向Web 服務(wù)器請(qǐng)求獲取相應(yīng)的圖片并顯示在預(yù)留的空間中。這個(gè)步驟和獲取網(wǎng)頁(yè)文件時(shí)一樣,只要在URI 部分寫上圖片的文件名并生成和發(fā)送請(qǐng)求消息就可以了。

由于每條請(qǐng)求消息中只能寫1 個(gè)URI,所以每次只能獲取1 個(gè)文件,如果需要獲取多個(gè)文件,必須對(duì)每個(gè)文件單獨(dú)發(fā)送1 條請(qǐng)求。比如1 個(gè)網(wǎng)頁(yè)中包含3 張圖片,那么獲取網(wǎng)頁(yè)加上獲取圖片,一共需要向Web 服務(wù)器發(fā)送4 條請(qǐng)求。

判斷所需的文件,然后獲取這些文件并顯示在屏幕上,這一系列工作的整體指揮也是瀏覽器的任務(wù)之一,而Web 服務(wù)器卻毫不知情。Web 服務(wù)器完全不關(guān)心這4 條請(qǐng)求獲取的文件到底是1 個(gè)網(wǎng)頁(yè)上的還是不同網(wǎng)頁(yè)上的,它的任務(wù)就是對(duì)每一條單獨(dú)的請(qǐng)求返回1 條響應(yīng)而已。

到這里,我們已經(jīng)介紹了瀏覽器與Web 服務(wù)器進(jìn)行交互的整個(gè)過(guò)程。作為參考,圖1.7 展示了瀏覽器與Web 服務(wù)器之間交互消息的一個(gè)實(shí)例。在這個(gè)例子中,我們需要獲取一張名為sample1.htm 的網(wǎng)頁(yè),網(wǎng)頁(yè)中包含一張名為picture.jpg 的圖片,圖中展示了這個(gè)過(guò)程中產(chǎn)生的消息。

1 條請(qǐng)求消息中只能寫1 個(gè)URI。如果需要獲取多個(gè)文件,必須對(duì)每個(gè)文件單獨(dú)發(fā)送1 條請(qǐng)求。

上面內(nèi)容是網(wǎng)絡(luò)連接內(nèi)容的一個(gè)小小的點(diǎn),繼續(xù)學(xué)習(xí)網(wǎng)絡(luò)是怎樣連接的,可以讀《網(wǎng)絡(luò)是怎樣連接的》,本文內(nèi)容就節(jié)選自它,它是日系圖解版“計(jì)算機(jī)網(wǎng)絡(luò)概論”,在豆瓣收獲9.2分好評(píng),它涵蓋了網(wǎng)絡(luò)的全貌。

即便不提互聯(lián)網(wǎng)(Internet),大家也都知道網(wǎng)絡(luò)是一個(gè)巨大而復(fù)雜的系統(tǒng),因此用一本書的篇幅涵蓋所有的知識(shí)是不可能的。

不過(guò),我們可以開啟探索之旅,從在瀏覽器中輸入網(wǎng)址(比如 http://www.nikkeibp.co.jp/)開始,一路追蹤到顯示出網(wǎng)頁(yè)內(nèi)容為止的整個(gè)過(guò)程,這樣就能夠用一本書的篇幅講清楚網(wǎng)絡(luò)的全貌了。

之所以要控制在一本書的篇幅,是因?yàn)椋喝绻皇侵v解 TCP/IP、以太網(wǎng)這些單獨(dú)的技術(shù),讀者就無(wú)法理解網(wǎng)絡(luò)這個(gè)系統(tǒng)的全貌;如果無(wú)法理解網(wǎng)絡(luò)的全貌,也就無(wú)法理解每一種網(wǎng)絡(luò)技術(shù)背后的本質(zhì)意義;而如果無(wú)法理解其本質(zhì)意義,就只能停留在死記硬背的程度,無(wú)法做到實(shí)際應(yīng)用。為了避免這一點(diǎn),即便一本書的篇幅只能介紹有限的一些場(chǎng)景,我們也依然可以涵蓋網(wǎng)絡(luò)系統(tǒng)的全貌。

其次,本書重點(diǎn)介紹了實(shí)際的網(wǎng)絡(luò)設(shè)備和軟件是如何工作的。TCP/IP、以太網(wǎng)等技術(shù),可以理解為規(guī)定網(wǎng)絡(luò)設(shè)備和軟件如何工作的一種規(guī)則。盡管理解這些規(guī)則很重要,但僅僅學(xué)習(xí)這些規(guī)則是無(wú)法看到設(shè)備和軟件的內(nèi)部構(gòu)造的。這是因?yàn)?,為了減少設(shè)備生產(chǎn)和軟件開發(fā)上的制約,網(wǎng)絡(luò)中的規(guī)則將設(shè)備和軟件的內(nèi)部構(gòu)造看作一個(gè)黑箱,只從外部視角規(guī)定了這些設(shè)備和軟件的工作方式。而且,實(shí)際的設(shè)備和軟件中還包含很多規(guī)則中所沒(méi)有規(guī)定的要素。要想熟練運(yùn)用網(wǎng)絡(luò)技術(shù),理解實(shí)際的設(shè)備和軟件是非常重要的,但這一點(diǎn)單靠學(xué)習(xí)規(guī)則本身是無(wú)法做到的。考慮到上述原因,本書將重點(diǎn)介紹設(shè)備和軟件的內(nèi)部工作方式。

正是因?yàn)楸緯纳鲜鎏厣艿搅俗x者的好評(píng)(至少筆者是這樣認(rèn)為的),第 1 版的銷量遠(yuǎn)遠(yuǎn)超出了筆者的預(yù)期。這是一件值得高興的事,但也暴露出一些問(wèn)題。因?yàn)樽x者群之廣,遠(yuǎn)遠(yuǎn)超過(guò)了當(dāng)初設(shè)想的范圍。要理解實(shí)際設(shè)備和軟件的工作方式,需要一定程度的基礎(chǔ)知識(shí),而第 1 版中對(duì)這些內(nèi)容的講解并不充分。因此,在第 2 版的編寫中,筆者將這部分內(nèi)容作為重點(diǎn),全面修訂了講解的內(nèi)容,大幅增加了對(duì)于基礎(chǔ)知識(shí)的介紹。結(jié)果,這本書的篇幅比第 1 版增加了將近 100 頁(yè),這也充分體現(xiàn)了此次修訂的成果。

圖書內(nèi)容結(jié)構(gòu)

第 1 章 Web瀏覽器

首先探索了瀏覽器的工作方式。大家可以認(rèn)為我們的探索之旅是從在瀏覽器中輸入網(wǎng)址(URL)開始的。例如,當(dāng)我們輸入下面這樣的網(wǎng)址時(shí),瀏覽器就會(huì)按照一定的規(guī)則去分析這個(gè)網(wǎng)址的含義,然后根據(jù)其含義生成請(qǐng)求消息。

http://www.lab.glasscom.com/sample1.html

在上面這個(gè)例子中,瀏覽器生成的請(qǐng)求消息表示“請(qǐng)給我 sample1.html 這一文件中儲(chǔ)存的網(wǎng)頁(yè)數(shù)據(jù)”,接著瀏覽器會(huì)將請(qǐng)求消息發(fā)送給 Web 服務(wù)器。

當(dāng)然,瀏覽器并不會(huì)親自負(fù)責(zé)數(shù)據(jù)的傳送。傳送消息是搬運(yùn)數(shù)字信息的機(jī)制負(fù)責(zé)的工作,因此瀏覽器會(huì)委托它將數(shù)據(jù)發(fā)送出去。具體來(lái)說(shuō),就是委托操作系統(tǒng)中的網(wǎng)絡(luò)控制軟件將消息發(fā)送給服務(wù)器。第 1 章中,我們會(huì)探索到瀏覽器將數(shù)據(jù)委托出去為止。

第 2 章 協(xié)議棧、網(wǎng)卡

第 2 章我們將探索搬運(yùn)數(shù)據(jù)的機(jī)制。其中最先出場(chǎng)的是協(xié)議棧(網(wǎng)絡(luò)控制軟件叫作協(xié)議棧)。這個(gè)軟件會(huì)將從瀏覽器接收到的消息打包,然后加上目的地址等控制信息。如果拿郵局來(lái)比喻,就是把信裝進(jìn)信封,然后在信封上寫上收信人的地址。這個(gè)軟件還有其他一些功能,例如當(dāng)發(fā)生通信錯(cuò)誤時(shí)重新發(fā)送包,或者調(diào)節(jié)數(shù)據(jù)發(fā)送的速率等,或許我們可以把它當(dāng)作一位幫我們寄信的小秘書。

接下來(lái),協(xié)議棧會(huì)將包交給網(wǎng)卡(負(fù)責(zé)以太網(wǎng)或無(wú)線網(wǎng)絡(luò)通信的硬件)。然后,網(wǎng)卡會(huì)將包轉(zhuǎn)換為電信號(hào)并通過(guò)網(wǎng)線發(fā)送出去。這樣一來(lái),包就進(jìn)入到網(wǎng)絡(luò)之中了。

第 3 章 集線器、交換機(jī)、路由器

接下來(lái)出場(chǎng)的物品會(huì)根據(jù)接入互聯(lián)網(wǎng)的形式不同而不同??蛻舳擞?jì)算機(jī)可以通過(guò)家庭或公司的局域網(wǎng)接入互聯(lián)網(wǎng),也可以單獨(dú)直接接入互聯(lián)網(wǎng)。很遺憾,我們的探索之旅無(wú)法涵蓋所有這些可能性,因此只能以現(xiàn)在最典型的場(chǎng)景為例,假設(shè)客戶端計(jì)算機(jī)是連接到家庭或公司的局域網(wǎng)中,然后再通過(guò) ADSL 和光纖到戶(FTTH)等寬帶線路接入互聯(lián)網(wǎng)。

在這樣的場(chǎng)景中,網(wǎng)卡發(fā)送的包會(huì)經(jīng)過(guò)交換機(jī)等設(shè)備,到達(dá)用來(lái)接入互聯(lián)網(wǎng)的路由器。路由器的后面就是互聯(lián)網(wǎng),網(wǎng)絡(luò)運(yùn)營(yíng)商會(huì)負(fù)責(zé)將包送到目的地,就好像我們把信投到郵筒中之后,郵遞員會(huì)負(fù)責(zé)把信送給收件人一樣。

第 4 章 接入網(wǎng)、網(wǎng)絡(luò)運(yùn)營(yíng)商

接下來(lái),數(shù)據(jù)從用來(lái)接入互聯(lián)網(wǎng)的路由器出發(fā),進(jìn)入了互聯(lián)網(wǎng)的內(nèi)部。互聯(lián)網(wǎng)的入口線路稱為接入網(wǎng)。一般來(lái)說(shuō),我們可以用電話線、ISDN、 ADSL、有線電視、光線、專線等多種通信線路來(lái)接入互聯(lián)網(wǎng),這些通信線路統(tǒng)稱為接入網(wǎng)。接入網(wǎng)連接到簽約的網(wǎng)絡(luò)運(yùn)營(yíng)商,并接入被稱為接入點(diǎn)(Point of Presence,PoP)的設(shè)備。

接入點(diǎn)的實(shí)體是一臺(tái)專為運(yùn)營(yíng)商設(shè)計(jì)的路由器,我們可以把它理解為離你家最近的郵局。從各個(gè)郵筒中收集來(lái)的信件會(huì)在郵局進(jìn)行分揀,然后被送往全國(guó)甚至全世界,互聯(lián)網(wǎng)也是一樣,網(wǎng)絡(luò)包首先通過(guò)接入網(wǎng)被發(fā)送到接入點(diǎn),然后再?gòu)倪@里被發(fā)送到全國(guó)甚至全世界。接入點(diǎn)的后面就是互聯(lián)網(wǎng)的骨干部分了。

在骨干網(wǎng)中存在很多運(yùn)營(yíng)商和大量的路由器,這些路由器相互連接,組成一張巨大的網(wǎng),而我們的網(wǎng)絡(luò)包就在其中經(jīng)過(guò)若干路由器的接力,最終被發(fā)送到目標(biāo) Web 服務(wù)器上。其中的具體細(xì)節(jié)我們會(huì)在正文中進(jìn)行講解,但其實(shí)它的基本原理和家庭、公司中的路由器是相同的。也就是說(shuō),無(wú)論是在互聯(lián)網(wǎng)中,還是在家庭、公司的局域網(wǎng)中,包都是以相同的方式傳輸?shù)模@也是互聯(lián)網(wǎng)的一大特征。

不過(guò),運(yùn)營(yíng)商使用的路由器可跟我們家用的小型路由器不一樣,它是一種可以連接幾十根網(wǎng)線的高速大型路由器。在互聯(lián)網(wǎng)的骨干部分,存在著大量的這種路由器,它們之間以復(fù)雜的形式連接起來(lái),而網(wǎng)絡(luò)包就在這些路由器之間穿行。

此外,路由器不但在規(guī)模上存在差異,在路由器間的連接方式上也存在差異。家庭和公司局域網(wǎng)中一般采用以太網(wǎng)線進(jìn)行連接,而互聯(lián)網(wǎng)中除了以太網(wǎng)線連接之外,還會(huì)使用比較古老的電話技術(shù)和最新的光通信技術(shù)來(lái)傳送網(wǎng)絡(luò)包。這一部分所使用的技術(shù)是當(dāng)今網(wǎng)絡(luò)中最熱門的部分,可以說(shuō)是最尖端技術(shù)的結(jié)晶。

第 5 章 防火墻、緩存服務(wù)器

通過(guò)骨干網(wǎng)之后,網(wǎng)絡(luò)包最終到達(dá)了 Web 服務(wù)器所在的局域網(wǎng)中。接著,它會(huì)遇到防火墻,防火墻會(huì)對(duì)進(jìn)入的包進(jìn)行檢查。大家可以把防火墻想象成門口的保安,他會(huì)檢查所有進(jìn)入的包,看看有沒(méi)有危險(xiǎn)的包混在里面。檢查完之后,網(wǎng)絡(luò)包接下來(lái)可能還會(huì)遇到緩存服務(wù)器。網(wǎng)頁(yè)數(shù)據(jù)中有一部分是可以重復(fù)利用的,這些可以重復(fù)利用的數(shù)據(jù)就被保存在緩存服務(wù)器中。如果要訪問(wèn)的網(wǎng)頁(yè)數(shù)據(jù)正好在緩存服務(wù)器中能夠找到,那么就可以不用勞煩 Web 服務(wù)器,直接從緩存服務(wù)器讀出數(shù)據(jù)。此外,在大型網(wǎng)站中,可能還會(huì)配備將消息分布到多臺(tái) Web 服務(wù)器上的負(fù)載均衡器,還有可能會(huì)使用通過(guò)分布在整個(gè)互聯(lián)網(wǎng)中的緩存服務(wù)器來(lái)分發(fā)內(nèi)容的服務(wù)。經(jīng)過(guò)這些機(jī)制之后,網(wǎng)絡(luò)包才會(huì)到達(dá) Web 服務(wù)器。

第 6 章 Web服務(wù)器

當(dāng)網(wǎng)絡(luò)包到達(dá) Web 服務(wù)器后,數(shù)據(jù)會(huì)被解包并還原為原始的請(qǐng)求消息,然后交給 Web 服務(wù)器程序。和客戶端一樣,這個(gè)操作也是由操作系統(tǒng)中的協(xié)議棧(網(wǎng)絡(luò)控制軟件)來(lái)完成的。接下來(lái),Web 服務(wù)器程序分析請(qǐng)求消息的含義,并按照其中的指示將數(shù)據(jù)裝入響應(yīng)消息中,然后發(fā)回給客戶端。響應(yīng)消息回到客戶端的過(guò)程和之前我們介紹的過(guò)程正好相反。

當(dāng)響應(yīng)到達(dá)客戶端之后,瀏覽器會(huì)從中讀取出網(wǎng)頁(yè)的數(shù)據(jù)并在屏幕上顯示出來(lái)。到這里,訪問(wèn) Web 服務(wù)器的一系列操作就全部完成了,我們的探索之旅也到達(dá)了終點(diǎn)。

各章的結(jié)構(gòu)

各章的內(nèi)容分為熱身問(wèn)答、探索之旅的看點(diǎn)、正文、小測(cè)驗(yàn)幾個(gè)部分,還有若干個(gè)專欄。

  • 熱身問(wèn)答

在各章的開頭有一些簡(jiǎn)單的熱身題,都是判斷對(duì)錯(cuò)的題目,大家一定要試試看。

  • 探索之旅的看點(diǎn)

探索之旅的看點(diǎn)總結(jié)了正文將要介紹的主題,可以以此來(lái)了解該章的梗概。

  • 正文

熟悉了看點(diǎn)之后就該正式出發(fā)了。在這一部分,我們將邀請(qǐng)經(jīng)驗(yàn)豐富的導(dǎo)游來(lái)進(jìn)行講解,相信即便是不具備任何網(wǎng)絡(luò)知識(shí)的讀者也能夠想象出現(xiàn)實(shí)中網(wǎng)絡(luò)的樣子。請(qǐng)大家靜下心來(lái),慢慢欣賞。

  • 小測(cè)驗(yàn)

這是一些和正文內(nèi)容相關(guān)的測(cè)試題,大家可以用這些題目來(lái)確認(rèn)自己的理解程度。答案位于下一頁(yè)中的專欄的最后。

  • 專欄“網(wǎng)絡(luò)術(shù)語(yǔ)其實(shí)很簡(jiǎn)單”

在專欄中,探索隊(duì)長(zhǎng)和探索隊(duì)員會(huì)以對(duì)話的形式介紹一些網(wǎng)絡(luò)術(shù)語(yǔ)的詞源。這些術(shù)語(yǔ)大家平時(shí)可能感覺(jué)很難,但通過(guò)了解它們的詞源,就能夠理解其本質(zhì)含義。讀完這部分會(huì)讓你覺(jué)得這些術(shù)語(yǔ)變得親切了。

  • 關(guān)于插圖

在畫圖時(shí),一般來(lái)說(shuō)箭頭都是從左到右繪制的,但本書則正好相反,是從右到左繪制的,這是為了和介紹包格式的圖以及介紹信號(hào)波形的圖的位置關(guān)系保持一致。箭頭的方向和一般的習(xí)慣相反,這一點(diǎn)希望大家理解。

——

【圖靈教育】

閱讀改變世界,閱讀塑造人生

讓我們站在巨人的肩膀上,解鎖更多IT技能!

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
零基礎(chǔ)寫python爬蟲之爬蟲的定義及URL構(gòu)成
Mongoose源碼剖析:外篇之web服務(wù)器
關(guān)于 Excel 中超鏈接介紹
Http協(xié)議中的各種長(zhǎng)度限制總結(jié)
網(wǎng)絡(luò)基本功(二十一):細(xì)說(shuō)HTTP(上)
了解WWW服務(wù)與HTTP協(xié)議
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服