《網(wǎng)絡(luò)是怎樣連接的》探索之旅 @阿貍不歌

《網(wǎng)絡(luò)是怎樣連接的》 封面

? ? ? 圖靈出的網(wǎng)絡(luò)基礎(chǔ)相關(guān)的書(shū)我也看了不少了,像《HTTP權(quán)威指南》、《圖解HTTP》、《HTTPS權(quán)威指南:在服務(wù)器和Web應(yīng)用上部署SSL/TLS和PKI》、《HTTP 小書(shū)》專(zhuān)門(mén)講述 HTTP/HTTPS協(xié)議;《圖解TCP/IP》、《TCP/IP詳解》專(zhuān)門(mén)介紹TCP/IP協(xié)議;《圖解網(wǎng)絡(luò)硬件》、《圖解服務(wù)器端網(wǎng)絡(luò)架構(gòu)》、《以太網(wǎng)權(quán)威指南》則主要介紹網(wǎng)絡(luò)硬件。像本書(shū)一樣囊括主要的網(wǎng)絡(luò)協(xié)議、網(wǎng)絡(luò)硬件等綜合性的書(shū),圖靈倒好像是出的第一本。 要說(shuō)類(lèi)似本書(shū)這樣介紹網(wǎng)絡(luò)基礎(chǔ)原理的書(shū),市面其實(shí)還是很多的,一般名字就叫《計(jì)算機(jī)網(wǎng)絡(luò)原理/計(jì)算機(jī)網(wǎng)絡(luò)概論》,通常出自各大學(xué)出版社,如果你是計(jì)算機(jī)系的學(xué)生,那這門(mén)課是要必過(guò)的。但是這些都是典型的教材風(fēng)格,內(nèi)容嘛,大概只能以枯燥來(lái)形容,要不是為了考試,你可能是很難啃下去的。而《網(wǎng)絡(luò)是怎樣連接的》這本書(shū)的原版(日文)竟然已經(jīng)重印了32次,號(hào)稱(chēng)“蹲馬桶就能看懂”,并且適合“向老媽、女友等普及計(jì)算機(jī)知識(shí)”,究竟是如何做到?讓我們來(lái)看一看吧……

? ? ? ?全書(shū)圍繞著一張圖來(lái)說(shuō),每一章的內(nèi)容都在這張圖上 —— 萬(wàn)一在旅途中迷失了方向,請(qǐng)務(wù)必回來(lái)看一看這張地圖

網(wǎng)絡(luò)探索之旅

? ? ? 如果打開(kāi)幾本大學(xué)版《計(jì)算機(jī)網(wǎng)絡(luò)》的目錄,你會(huì)發(fā)現(xiàn),它們的目錄幾乎都是一樣的:第一章:概述、第二章:物理層、第3章:數(shù)據(jù)鏈路層、第4章:網(wǎng)絡(luò)層、第5章:傳輸層、第6章:應(yīng)用層、第7章:網(wǎng)絡(luò)安全。按部就班的介紹網(wǎng)絡(luò)協(xié)議棧的每一層,而且還是從離用戶“最遠(yuǎn)”的物理層說(shuō)起。

? ? ? ? 本書(shū)沒(méi)有采用這種套路,而是從每個(gè)網(wǎng)民都會(huì)的“上網(wǎng)”(三步:打開(kāi)瀏覽器、輸入網(wǎng)址、瀏覽網(wǎng)頁(yè))這件事說(shuō)開(kāi)去,揭示了“上網(wǎng)”背后的全過(guò)程。作者從“上網(wǎng)”這個(gè)常見(jiàn)的場(chǎng)景切入,把整個(gè)網(wǎng)絡(luò)的全貌如此清晰地展現(xiàn)出來(lái),并引導(dǎo)著讀者在思考“網(wǎng)絡(luò)是怎樣連接的”過(guò)程中層層遞進(jìn),環(huán)環(huán)相扣的不斷追問(wèn)與回答。并最終“實(shí)現(xiàn)” “不理解網(wǎng)絡(luò)的全貌,也就無(wú)法理解每一種網(wǎng)絡(luò)技術(shù)背后的本質(zhì)意義”的目標(biāo)。


? ? ? ? 本書(shū)的特點(diǎn)不是生硬的列出概念,而是用比較淺顯易懂的詞語(yǔ)來(lái)解釋概念,比如以DNS域名結(jié)構(gòu)為例:

某《計(jì)算機(jī)網(wǎng)絡(luò)原理》教材中如是說(shuō)——

? ? ? ?在分層結(jié)構(gòu)的DNS域名中,必須有一個(gè)是頂級(jí)域名,然后在這個(gè)頂級(jí)域名下面再申請(qǐng),或者注冊(cè)二級(jí)、三級(jí),甚至更多級(jí)別的域名,各級(jí)域名間同樣是以小圓點(diǎn)(.)分隔、連接的。最右邊的部分代表的是頂級(jí)域名,左邊部分代表的是子域名,而且是級(jí)別最低的域名寫(xiě)在最前面,級(jí)別最高的域名寫(xiě)在最后面。下級(jí)域名必須隸屬于上級(jí)域名。例如,itct.com.cn這個(gè)DNS域名是一個(gè)三級(jí)域名,其中itct是三級(jí)域名(在本域名中級(jí)別最低),它隸屬于其二級(jí)域名com,而二級(jí)域名com又隸屬于其一級(jí)域名(又稱(chēng)頂級(jí)域名)cn。

《網(wǎng)絡(luò)是怎樣連接的》則是用了大家比較熟悉的 事業(yè)集團(tuán)、部門(mén)、科室 來(lái)舉例 ——

? ? ? DNS服務(wù)器中的所有信息都是按照域名以分層次的結(jié)構(gòu)來(lái)保存的。層次結(jié)構(gòu)這個(gè)詞聽(tīng)起來(lái)可能有點(diǎn)不容易懂,其實(shí)就類(lèi)似于公司中的事業(yè)集團(tuán)、部門(mén)、科室這樣的結(jié)構(gòu)。層次結(jié)構(gòu)能夠幫助我們更好地管理大量的信息。DNS中的域名都是用句點(diǎn)來(lái)分隔的,比如www.lab.glasscom.com,這里的句點(diǎn)代表了不同層次之間的界限,就相當(dāng)于公司里面的組織結(jié)構(gòu)不用部、科之類(lèi)的名稱(chēng)來(lái)劃分,只是用句點(diǎn)來(lái)分隔而已A。在域名中,越靠右的位置表示其層級(jí)越高,比如www.lab.glasscom.com這個(gè)域名如果按照公司里的組織結(jié)構(gòu)來(lái)說(shuō),大概就是“com事業(yè)集團(tuán)glasscom部lab科的www”這樣。其中,相當(dāng)于一個(gè)層級(jí)的部分稱(chēng)為域。因此,com域的下一層是glasscom域,再下一層是lab域,再下面才是www這個(gè)名字。

? ? ? 很顯然,“向老媽、女友等”普及DNS域名的知識(shí)用公司里面的組織結(jié)構(gòu)來(lái)舉例更好令人理解。


? ? ? ?日式科普書(shū)有個(gè)特點(diǎn),就是喜歡在書(shū)中設(shè)計(jì)幾個(gè)人物,以打諢插科的方式伴隨讀者的閱讀過(guò)程,把一些值得思考的問(wèn)題或者是重要的概念通過(guò)幽默的問(wèn)答方式展現(xiàn)出來(lái),讓人輕松的就能記住知識(shí)要點(diǎn)。本書(shū)當(dāng)中的人物是探索隊(duì)員與探索隊(duì)長(zhǎng),下面一段關(guān)于socket(套接字)的對(duì)話就很典型——

探索隊(duì)員: Socket庫(kù)也好,套接字(socket)也好,這個(gè)名字到底是怎么來(lái)的呢?

探索隊(duì)長(zhǎng): 你知道燈泡 ?? 的插座嗎?就是燈具里面把燈泡 ?? 擰進(jìn)去的那個(gè)孔。

隊(duì)員: 知道呀。

隊(duì)長(zhǎng): 其實(shí)那個(gè)就是socket。

隊(duì)員: 啥?你說(shuō)Socket庫(kù)就是燈泡?? 的插座?

隊(duì)長(zhǎng): ?你想象一下,假設(shè)我們有一段程序,把它“咔”一下插到一個(gè)套接字里,于是我們就可以開(kāi)始通信了,就跟燈泡 ?? 插進(jìn)去就亮一樣。

隊(duì)員: 似乎有點(diǎn)牽強(qiáng)吧?

隊(duì)長(zhǎng): 哪有?套接字的背后就是傳輸數(shù)據(jù)的通道,這個(gè)通道和我們的通信對(duì)象是相連接的,就像流過(guò)電線的電流一樣,數(shù)據(jù)就在這個(gè)通道中流動(dòng),所以我們插進(jìn)去一個(gè)程序,就可以和對(duì)方通信了,能理解不?

看了這一段對(duì)話,你對(duì)于向向老媽或者女友解釋什么是“套接字”就一定很有信心了吧?? ?!

套接字 vs 燈泡

再看看某《計(jì)算機(jī)網(wǎng)絡(luò)原理》教材里關(guān)于Socket的解釋——

? ? ? 前面介紹OSI/RM的傳輸層服務(wù)時(shí),提到過(guò)傳輸通信兩端的端點(diǎn)就是TSAP地址,對(duì)應(yīng)的就是傳輸層協(xié)議端口。在TCP/IP網(wǎng)絡(luò)中,同樣有端點(diǎn)的概念,但它并不是直接采用OSI/RM中的TSAP叫法,而是稱(chēng)為“套接字”(Socket),就像在TCP中仍然把所傳輸?shù)臄?shù)據(jù)稱(chēng)為“數(shù)據(jù)段”,而沒(méi)有采用OSI/RM中的TPDU叫法一樣。當(dāng)然,需要說(shuō)明的是,Socket并不能直接等同于TSAP,它們只是類(lèi)似,實(shí)際上Socket只是利用了TSAP地址,因?yàn)樵谒ǖ囊唤M參數(shù)中就有TSAP地址—端口。“套接字”最早使用于UNIX操作系統(tǒng)中,后來(lái)被廣泛地應(yīng)用于Windows和Linux系統(tǒng)中,成為了事實(shí)上的TCP標(biāo)準(zhǔn)。

? ? ? Socket可以看成是在兩個(gè)網(wǎng)絡(luò)應(yīng)用程序進(jìn)行通信連接時(shí)的一個(gè)端點(diǎn)(或者稱(chēng)為“邏輯接口”),它是連接應(yīng)用程序和網(wǎng)絡(luò)驅(qū)動(dòng)程序的橋梁,如圖10-35所示。從位置上看,它與本章前面介紹的TSAP是不一樣的,因?yàn)門(mén)SAP是位于傳輸層上邊緣(但仍屬于傳輸層),而Socket是完全位于應(yīng)用層,但它調(diào)用了傳輸層的端口。Socket包括了TSAP地址,同樣它還包括了在本章前面所介紹的服務(wù)原語(yǔ)。

看著上面這一堆的縮寫(xiě)、術(shù)語(yǔ)、你懵逼了沒(méi)有呢?上面固然也用了“橋梁”來(lái)做比喻,可是哪有

就像流過(guò)電線的電流一樣,數(shù)據(jù)就在這個(gè)通道中流動(dòng),所以我們插進(jìn)去一個(gè)程序,就可以和對(duì)方通信了。

這樣的比喻來(lái)的淺顯易懂呢?

? ? ? 很多年前,我買(mǎi)的第一本編程書(shū),滿篇都是“句柄”(handler) 、“宏”(Macro)這樣令人費(fèi)解的詞,看得我很快就從入門(mén)到放棄了。如今,有這樣一本讀起來(lái)輕松愉快的《網(wǎng)絡(luò)是怎樣連接的》就在你面前,還不快下手還等什么呢?


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

相關(guān)閱讀更多精彩內(nèi)容

  • 參考:http://www.2cto.com/net/201611/569006.html TCP HTTP UD...
    F麥子閱讀 3,067評(píng)論 0 14
  • 定義 網(wǎng)絡(luò)協(xié)議為計(jì)算機(jī)網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)交換而建立的規(guī)則、標(biāo)準(zhǔn)或約定的集合。網(wǎng)絡(luò)協(xié)議主要由三個(gè)要素組成:語(yǔ)義、語(yǔ)法及時(shí)...
    FlyAndroid閱讀 1,105評(píng)論 0 10
  • 引言 網(wǎng)絡(luò)學(xué)習(xí)的核心內(nèi)容就是網(wǎng)絡(luò)協(xié)議的學(xué)習(xí) 網(wǎng)絡(luò)協(xié)議:網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)交換而建立的規(guī)則、標(biāo)準(zhǔn)或者說(shuō)是約定的集合因?yàn)椴?..
    _涼風(fēng)_閱讀 2,188評(píng)論 8 22
  • 1. 網(wǎng)絡(luò)編程概述 1.1 計(jì)算機(jī)網(wǎng)絡(luò) 是指將地理位置不同的具有獨(dú)立功能的多臺(tái)計(jì)算機(jī)及其外部設(shè)備,通過(guò)通信線路連接...
    JackChen1024閱讀 1,128評(píng)論 0 3
  • 拍攝于西安南郊,一場(chǎng)春雨過(guò)后,空氣清新,華燈初上;萬(wàn)家燈火和車(chē)水馬龍下,是多少普通人的故事!
    小豆丁要吃豆閱讀 160評(píng)論 0 1

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