日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

漲知識了,網(wǎng)絡(luò)原來是這樣連接的

 回家的夢想 2019-07-17

漲知識了,網(wǎng)絡(luò)原來是這樣連接的

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

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

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

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

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

答案:

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

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

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

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

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

漲知識了,網(wǎng)絡(luò)原來是這樣連接的

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

瀏覽器先要解析URL

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

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

漲知識了,網(wǎng)絡(luò)原來是這樣連接的

省略文件名的情況

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

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

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

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

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

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

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

那么,下面這個URL 又是什么意思呢?

(c)http://www.lab.

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

不過,下面這個例子就更詭異了。

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

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

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

HTTP 的基本思路

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

漲知識了,網(wǎng)絡(luò)原來是這樣連接的

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

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

漲知識了,網(wǎng)絡(luò)原來是這樣連接的

除了圖1.4 中的內(nèi)容之外,HTTP 消息中還有一些用來表示附加信息的頭字段。客戶端向Web 服務(wù)器發(fā)送數(shù)據(jù)時,會先發(fā)送頭字段,然后再發(fā)送數(shù)據(jù)。不過,頭字段屬于可有可無的附加信息,因此我們暫時跳過。

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

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

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

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

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

生成HTTP 請求消息

理解了HTTP 的基本知識之后,讓我們回到對瀏覽器本身的探索中來。

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

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

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

漲知識了,網(wǎng)絡(luò)原來是這樣連接的

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

漲知識了,網(wǎng)絡(luò)原來是這樣連接的

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

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

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

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

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

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

漲知識了,網(wǎng)絡(luò)原來是這樣連接的

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

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

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

漲知識了,網(wǎng)絡(luò)原來是這樣連接的

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

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

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

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

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

1 條請求消息中只能寫1 個URI。如果需要獲取多個文件,必須對每個文件單獨發(fā)送1 條請求。

漲知識了,網(wǎng)絡(luò)原來是這樣連接的

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

漲知識了,網(wǎng)絡(luò)原來是這樣連接的

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

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

漲知識了,網(wǎng)絡(luò)原來是這樣連接的

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

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

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

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

第 1 章 Web瀏覽器

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

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

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

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

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

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

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

第 3 章 集線器、交換機、路由器

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

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

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

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

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

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

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

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

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

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

第 6 章 Web服務(wù)器

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

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

漲知識了,網(wǎng)絡(luò)原來是這樣連接的

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

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

  • 熱身問答

在各章的開頭有一些簡單的熱身題,都是判斷對錯的題目,大家一定要試試看。

  • 探索之旅的看點

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

  • 正文

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

  • 小測驗

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

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

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

  • 關(guān)于插圖

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

——

【圖靈教育】

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

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

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多