網路是用物理鏈路將各個孤立的工作站或主機相連在一起,組成資料鏈路,從而達到資源共用和通訊的目的。通訊是人與人之間通過某種媒體進行的資訊交流與傳遞。網路通訊是通過網路將各個孤立的裝置進行連線,通過資訊交換實現人與人,人與計算機,計算機與計算機之間的通訊。
網路通訊中最重要的就是網路通訊協定。當今網路協定有很多,區域網中最常用的有三個網路協定:MICROSOFT的NETBEUI、NOVELL的IPX/SPX和TCP/IP協定。應根據需要來選擇合適的網路協定。
由於文章篇幅太長,無法全部展示出來,需要完整版的朋友新增小助理即可獲取
1.1為什麼要學習網路協定
相信大家都聽過通天塔的故事,上帝為了阻止人類聯合起來,讓人類說不同的語言,人類沒法溝通,達不成「協定」,通天塔的計劃就失敗了。
1.2網路分層的真實含義
由於長時間從事計算機網路相關的工作,我發現計算機網路有一個顯著的特點,就是這是一個不僅需要背誦,而且特別需要將原理爛熟於胸的學科。很多問題看起來懂了,但是就怕細問,一問就發現你懂得沒有那麼透徹。
1.3ifconfig:熟悉又陌生的命令列
當面試者聽到這個問題的時候,常常會覺得走錯了房間。我面試的是技術崗位啊,怎麼問這麼簡單的問題?
1.4 DHCP與PXE:IP地址是怎麼來的,又是怎麼沒的
上一節,我們講了IP地址的一些基本概念。如果需要和其他機器通訊,就需要一個通訊地址,我們需要給網路卡設定一個IP地址。
2.1從物理層到MAC層:如何在宿舍裡自己組網玩聯機遊戲
上一章我們見證了IP地址的誕生,或者說是整個作業系統的誕生。一旦機器有了I地址,就可以在網路環境裡和其他的機器展開溝通了。
2.2交換機與VLAN:辦公室太複雜,我要回學校
上一節,我們在宿舍裡組建了一個原生的區域網,大家可以愉快地一起玩遊戲了。宿舍是一個非常簡單的場景。本節讓我們切換到一個稍微複雜一點的場景——辦公室。
2.3ICMP與ping:投石問路的偵察兵
無論是在宿舍,還是在辦公室,或者運維一個資料中心,我們常常會遇到網路不通的問題。那臺機器明明就在那裡,你甚至都可以通過機器的終端連上去看。它看著好好的,可是就是連不上網,究竟是哪裡出了問題呢?
2.4世界這麼大,我想出閘道器:歐洲十國遊與玄奘西行
前幾節主要講了宿舍裡和辦公室裡用到的網路協定。你已經有了一些基礎,是時候去外網逛逛了!
2.5路由協定:「西出閘道器無故人」「敢問路在何方」
俗話說得好,在家千日好,出門一日難。包一旦出了閘道器,就像玄奘西行—樣踏上了江湖漂泊的路。
上一節我們描述的是一個相對簡單的情形。跑出了閘道器之後,只有一條路可以走。但是,網路世界複雜得多,一旦出了閘道器,會面臨很多路由器,有很多條道路可以選。如何選擇一個最便捷的道路去求取真經呢?這裡面還有很多門道可以講。
3.1UDP:雖然簡單但是可以客製化化
講完層以後,接下來我們開始講傳輸層。在1.1節中已經講過,傳輸層裡比較重要的兩個協定,一個是TCP,一個是UDP。對不從事底層開發或者應用開發的人來講,最常用的就是這兩個協定。面試時,這兩個協定經常會被放在一起問,因而在本書中也會將兩者結合起來講。
3.2TCP(上):雖然複雜,使用起來卻輕鬆
3.2Tcp (上):雖然複雜,使用起來卻輕鬆
3.1節講了UDP,UDP包中基本上包括了傳輸層必需的埠欄位,就像我們小時候一樣簡單,相信「網」之初,性本善,不丟包,不亂序。
3.3TCP(下):西行必定多妖孽,恆心智慧消磨難
我們前面說到玄奘西行,要出閘道器。既然出了閘道器,那就要在公網上傳輸資料,公網往往是不可靠的,因此需要很多機制去保證傳輸的可靠性,這時就需要各種重要的策略來堅定西行的恆心,還需要大量的演演算法來作為西行的智慧儲備。
3.4 socket:Talk is cheap, show me the code
前面講完了TCP和UDP,還沒有上手實踐過,這一節就講一講基於TCP和UDP的socket(通訊端)程式設計。
4.1HTTP:看個新聞原來這麼麻煩
前面講述完傳輸層,接下來開始講應用層的協定。就從最常用的HTTP開始講起。
HTTP幾乎是每個人上網用的第一個協定,同時也是很容易被忽略的協定。
既然本節要講看新聞,咱們就先登入某新聞網站http://www. 決命.com。
4.2HTTPS:點外賣的過程原來這麼複雜
用HTTP看個新聞沒有問題,但是換到更加嚴肅的場景中,就存在很多的安全風險。例如你要下單做一次支付,如果還是使用普通的HTTP,那你很可能就會被駭客盯上。
4.3串流媒體協定:如何在直播裡看到帥哥美女
最近直播比較火,很多人都喜歡看直播,一個直播系統裡面都有哪些組成部分,都使用了什麼協定呢?
無論是直播還是點播,其實都是對視訊資料的傳輸。一提到視訊,大家都愛看,但是一提到視訊技術,大家都頭疼,因為名詞實在是太多了。
4.4P2P協定:下載電影,分散式協定速度快
如果你想下載一個電影,一般會通過什麼方式呢?
當然,最簡單的方式就是通過HTTP進行下載。但是相信你有過這樣的體驗,通過瀏覽器下載的時候,只要檔案稍微大點,下載的速度就奇慢無比。
5.1 DNS:網路世界的地址簿
前面我們講了平時常見的看新聞、支付、直播、下載等場景,現在網站的數量非常多,常用的網站就有二三十個,如果全部通過I地址進行存取,恐怕很難記住。因此,我們需要一個地址簿,根據網站名稱就可以檢視具體的地址。
例如,「西湖邊的‘外婆家’」就是名稱,通過地址簿,我們可以檢視它到底位於哪條路,門牌號是多少號。
5.2HTTPDNS:網路世界的地址簿也會指錯路
上一節我們知道了DNS的兩項功能,第一項功能是根據網站名稱查到具體的IP地址,另一項功能是針對多個地址做負載均衡,而且可以在多個地址中選擇一個距離近的地址存取。
5.3CDN:你去小賣部取過快遞嗎
5.4資料中心:我是開發商,自己拿地蓋別墅
無論是看新聞、下訂單、看視訊,還是下載檔案,最終的存取目的地都是資料中心。我們前面學了這麼多與網路協定相關的知識,你是不是很好奇資料中心究竟長什麼樣呢?
5.5VPN:朝中有人好做官
前面我們講到了資料中心,資料中心裡面很複雜。有的公司有多個資料中心,需要將多個資料中心連線起來,或將辦公室和資料中心連線起來,此時該怎麼辦呢?
5.6行動網路:去巴塞羅那,手機也上不了「臉書」
前面講的都是電腦上網的場景,那使用手機上網有什麼不同呢?
6.1雲中網路:自己拿地成本高,購買公寓更靈活
在5.4 節中,我們知道了資料中心裡面堆著一大片一大片的機器,相互之間用網路連線。如果機器數量非常多,那麼維護起來還是挺麻煩的,有好多不靈活的地方,比如以下幾點。
6.2軟體定義網路:共用基礎設施的小區物業管理辦法
上一節我們瞭解了使用原生的VLAN和Linux網橋的方式來進行雲平臺的管理,但是這種方式在靈活性、隔離性方面都略顯不足,而且整個網路缺少統一的檢視、統一的管理。
6.3雲中網路之安全:雖然不是土豪,也需要基本保障
上一節我們看到,做一個小區物業維護一個大家共用的環境,還是挺不容易的。如果大家都是自覺遵守規則的住戶還好,如果遇上不自覺的住戶就會很麻煩。
6.4雲中網路之QoS:室友瘋狂下電影,我該怎麼辦
6.5雲中網路之隔離GRE、VXLAN:雖然住一個小區,也要保護隱私
對於雲平臺中的隔離問題,前面用的策略-直都是VLAN,但是我們也說過這種策略的問題:VLAN只有12位元,4096個。雖然當時設計時看起來夠用,但是現在已經絕對不夠用了,那麼該怎麼辦呢?
7.1容器網路:來去自由的日子,不買公寓去合租
7.2容器網路之Flannel:每人一畝三分地
7.3容器網路之Calico:為了高效說出善意的謊言
7.2節我們講了Flannel如何解決容器跨主機互通的問題,這個解決方式其實和虛擬機器器的網路互通模式是差不多的,都是通過隧道進行的。但是Flannel有一個非常好的模式,就是給不同的物理機設定不同的網段,這一點和虛擬機器器的Overlay模式完全不一樣。在虛擬機器器的場景下,整個網段在所有的物理機之間都是可以「飄來飄去」的。網段不同,就給了我們做路由策略的可能。
7.4 RPC概述:遠在天邊,近在眼前
前面我們講了容器網路如何實現跨主機互通,以及微服務之間的相互呼叫。
8.1基於XML的SOAP:不要說NBA,請說美國職業籃球聯賽
7.4節我們講了RPC 的經典模型和設計要點,並以早期的ONC RPC為例,詳述了具體的實現。
8.2基於JSON的RESTful介面協定:我不關心過程,請給我結果
8.1節我們講了基於XML的SOAP,SOAP中S的意思是Simple,但是好像一點兒都不簡單啊!
你會發現,對於SOAP來講,無論XML中呼叫的是什麼函數,多是通過HTTP 的POST方法傳送的。但是之前學習HTTP時,我們知道HTTP除了POST,還有PUT、DELETE、GET等方法,這些也可以是一個個動作,而且基本滿足增刪查改的需求——增POST、刪DELETE、查GET、改PUT。
8.3二進位制類RPC協定:還是叫NBA吧,總說全稱多費勁
前面講了兩個常用文字類的RPC協定,陌生人之間的溝通,用NBA、CBA這樣的縮略語,會使協定約定非常不方便。
8.4跨語言類RPC協定:交流之前,雙方先交換一下專業術語表
到目前為止,我們已經講解了4種RPC協定,分別是ONC RPC、基於XML的SOAP、基於JSON的RESTful和Hessian2。
9.1知識串講:用「雙11」的故事串起網路協定的碎片知識(上)
基本的網路知識都講完了,還記得最初舉的那個「雙11」下單的例子嗎?本章會詳細地講解這個過程,用這個過程將我們講過的網路協定知識連貫起來。
9.2知識串講:用「雙11」的故事串起網路協定的碎片知識(中)
上一節我們講到,手機App經過了一個複雜的過程,終於拿到了電商網站的SLB的IP地址,是不是該下單了?
9.3知識串講:用「雙11」的故事串起網路協定的碎片知識(下)
上—節我們封裝了一個長長的網路包,「大炮」準備完畢,開始傳送。
9.4搭建一個網路實驗環境:授人以魚不如授人以漁.
網路是一門實驗性很強的學科,就像我經常說的一樣:一看覺得懂,一問就打鼓,一用就糊塗。在本書寫作過程中,我自己也深深體會到了。這個時候,我常常會拿一個現實的環境上手操作一下,抓個包看看,這樣心裡就會有定論。
因為這本書內容實在是太多了!沒有辦法給大家全部展示出來了,需要獲取的小夥伴可以直接點贊+關注後新增小助理即可免費獲取以上筆記