華為18級工程師三年心血終成趣談網路協議文件(附大牛講解)

前言

雖然在大學的時候大家都學過網路協議 ,但是肯定感覺網路協議的知識點非常多 ,非常複雜。學的時候就渾渾噩噩,真正到了實踐中更是糊里糊塗,一旦工作中遇到了網路問題,除了會簡單地 ping 幾下 ,基本沒有什麼解決問題的思路。 然而當拿起書來學習,或者看一些官方文件的時候,各種生僻的專業詞彙馬上撲面而來,每瞭解其中的一個詞彙 ,都要看多 篇文章,讀多本書,導致一篇即使很短的有關網路技術的文章也要幾個星期才能看完。

這嚴重打擊著大家的自信心,並且很容易讓人在技術的海洋中迷失自我,從而產生“從人門到放棄”的衝動!

網路協議和變化萬千的前沿技術不同,它的變化比較小,一旦掌握到一定程度,就會一直受益 技術變 很快,這 幾年OpenStack、docker、Mesos、kubernetes、微服務、serverless、AIops等技術層出不窮,讓大多數技術人員應接不暇,但是掌握了基礎知識 後,反而發現很多技術看起來“轟轟烈烈”, 脫下外衣,其實本質還是操作系計算機網路、演算法與資料結構、編譯原理 、計算機組成與系統結構 。

如果基礎打好了,最大的收益就是,在最新的技術出來以後,只要經過短時間的學習,就很容易上手,就能在新技術的滾滾浪潮中保持快速學習的能力。

既然網路協議既是基礎,又繞不過去,還這麼難,但是趟過去之後又不怎麼變,收益越來越大,那為什麼不寫一文件,給大家一點可借鑑的經驗,幫助大家儘快掌握網路協議呢?

那麼,今天咱們就從目錄、主要包括的內容和總結三部分給大家進行網路協議的拓展學習,希望大家能夠喜歡!!

目錄

華為18級工程師三年心血終成趣談網路協議文件(附大牛講解)

主要內容

主要把本文內容分為九章來給大家介紹:

第1章通訊協議概述.

1。1為什麼要學習網路協議

1。2網路分層的真實含義,總結一下本節的內容,理解網路協議的工作模式,有以下兩個小竅門。

始終想象自己是一個處理網路包的程式:如何拿到網路包,如何根據規則進行處理,如何發出去。

始終牢記一個原則:只要是在網路上跑的包,都是完整的。可以有下層沒上層,絕對不可能有上層沒下層。

1。3 ifconfig:熟悉又陌生的命令列,透過本節的學習希望你能記住以下的知識點,後面都能用得上:

I地址有定位功能,MAC地址類似身份證號,無定位功能。

CIDR可以用來判斷是不是本地地址。

IP地址分公網IP地址和私網IP地址。後面的章節中會談到“出國門”,就與此有關。

1。4 DHCP與PXE:IP地址是怎麼來的,又是怎麼沒的,本節內容總結如下:

DHCP主要租給客戶端IP地址,這個過程和租房很像,要商談、簽約、續租,廣播還不能“搶單”。

DHCP會給客戶端推薦“裝修隊”PXE來安裝作業系統,這在雲計算領域大有用處。

華為18級工程師三年心血終成趣談網路協議文件(附大牛講解)

第2章從二層到三層.

2。1從物理層到MAC層:如何在宿舍裡自己組網玩聯機遊戲,本節有3個重點需要記住:

MAC層是用來解決多路訪問的“堵車”問題的。

ARP是透過“吼”的方式來尋找目標MAC地址的,“吼”完之後會記住一段時間,這個叫作快取。

交換機是有MAC地址學習能力的,學會了它就能知道誰在哪裡,不用廣播了。

2。2交換機與VLAN:辦公室太複雜,我要回學校,本節總結如下:

·當交換機的數目越來越多時,會遭遇環路問題,讓廣播包迷路。這時就需要使用STP透過“比武論劍”的方式,將有環路的圖變成沒有環路的樹,從而解決環路問題。

·交換機數目過多會導致隔離問題。可以透過VLAN形成虛擬區域網,從而解決廣播問題和安全問題。

2。3ICMP與ping:投石問路的偵察兵,本節內容總結如下:

·ICMP 相當於網路世界的偵察兵。本節講解了兩種型別的ICMP報文,一種是主動探查的查詢報文,一種異常報告的差錯報文。

ping使用查詢報文,Traceroute使用差錯報文。

2。4世界這麼大,我想出閘道器:歐洲十國遊與玄奘西行,本節總結如下:

·如果離開區域網,就需要經過閘道器。

·路由器是一個三層裝置,裡面有如何尋找下一跳的規則。

·經過路由器之後MAC頭要變,如果I地址不變,相當於不換護照的“歐洲十國遊”,如果IP地址改變,相當於換護照的“玄奘西行”。

2。5路由協議:“西出閘道器無故人“”敢問路在何方”,本節總結如下:

路由分靜態路由和動態路由,靜態路由可以配置複雜的策略路由,控制轉發策略。

動態路由有兩種主流協議,距離向量路由協議和鏈路狀態路由協議。分別對應BGP和OSPF 這兩個實現。

華為18級工程師三年心血終成趣談網路協議文件(附大牛講解)

第3章重要的傳輸層.

3。1 UDP:雖然簡單但是可以定製化,本節總結如下:

如果將TCP比作成熟的社會人,UDP則是頭腦簡單的小朋友。TCP複雜,UDP簡單。TCP維護連線,UDP誰都相信。TCP知進退,UDP愣頭青一個,勇往直前。

·UDP雖然簡單,但它有簡單的用法。它可以用在環境簡單、需要多播、應用層自己控制傳輸的地方,例如DHCP、VXLAN、QUIC等。

3。2 TCP(上):雖然複雜,使用起來卻輕鬆,本節總結如下:

· TCP頭很複雜,但是主要關注五個方面:順序問題、丟包問題、連線維護、流量控制,以及擁塞控制。

連線的建立要經過三次握手,斷開要經過四次揮手。

3。3 TCP (下):西行必定多妖孽,恆心智慧消磨難,總結如下:

順序問題、丟包問題、流量控制都是透過滑動視窗來解決的,滑動視窗其實就相當於領導和下屬的工作備忘錄,佈置過的工作要有編號,幹完了有反饋,活兒不能派太多,也不能太少。

擁塞控制是透過擁塞視窗來解決的,相當於往管道里面倒水,快了容易溢位,慢了浪費頻寬,要摸著石頭過河,找到最優值。

3。4 socket: Talk is cheap, show me the code ,本節總結如下:

你需要記住在基於TCP和UDP的socket程式的函式呼叫過程中,客戶端和服務端都需要呼叫哪些函式。

寫一個能夠支撐大量連線的高併發的服務端不容易,需要多程序、多執行緒,而 epoll能解決C10K問題。

華為18級工程師三年心血終成趣談網路協議文件(附大牛講解)

第4章常用的應用層.

4。1 HTTP:看個新聞原來這麼麻煩,本節總結如下:

HTTP很常用,也很複雜,重點記住GET、POST、PUT、DELETE這幾個方法,以及重要的首部欄位。

HTTP2。0透過頭壓縮、分幀、二進位制編碼、多路複用等技術提升效能。

QUIC協議透過基於UDP自定義的連線、重傳、多路複用、流量控制等機制進一步提升效能。

4。2 HTTPS:點外賣的過程原來這麼複雜,本節總結如下:

加密分對稱加密和非對稱加密。對稱加密效率高,但是解決不了金鑰傳輸問題;非對稱加密可以解決這個問題,但是效率低。

非對稱加密需要透過證書和權威機構來驗證公鑰的合法性。

HTTPS是綜合了對稱加密和非對稱加密的HTTP。既保證傳輸安全,也保證傳輸效率。

4。3流媒體協議:如何在直播裡看到帥哥美女,本節總結如下:

編碼兩大流派達成了一致,都是透過關於時間、空間的各種演算法來壓縮資料的。

壓縮好的資料,為了方便傳輸會組成一系列NALU,按照幀和片依次排列。

排列好的NALU在網路傳輸時,要按照RTMP包的格式進行包裝,RTMP包會拆分成塊進行傳輸。

推送到流媒體伺服器的影片流經過轉碼和分發,可以被客戶端透過RTMP拉取,然後組合為NALU,解碼成影片格式進行播放。

4。4 P2P協議:下載電影,分散式協議速度快,本節總結如下:

下載一個檔案可以使用HTTP或FTP,這兩種協議都使用集中下載的方式,而P2P則換了一種思路,採取去中心化下載的方式。

P2P也有兩種下載方式,一種是依賴於tracker伺服器,即元資料集中,檔案資料分散;另一種基於分散式雜湊演算法,元資料和檔案資料全部分散。

華為18級工程師三年心血終成趣談網路協議文件(附大牛講解)

第5章陌生的資料中心.

5。1 DNS:網路世界的地址簿,本節總結如下:

DNS是網路世界的地址簿,可以透過域名查詢地址,由於DNS伺服器是按照樹狀結構組織的,因而域名查詢使用的是遞迴的方法,並透過快取的方式增強效能。

域名和IP地址相互對映的過程給了應用基於域名做負載均衡的機會,可以實現簡單的負載均衡,也可以根據地址和運營商實現全域性負載均衡。

5。2 HTTPDNS:網路世界的地址簿也會指錯路,本節需要記住以下兩個重點:

·傳統的DNS伺服器有很多問題,例如解析慢、更新不及時。因為快取、轉發NAT問題導致客戶端誤會自己所在的位置和所屬的運營商,從而影響流量的排程。

·HTTPDNS伺服器透過客戶端SDK,服務端透過HTTP直接呼叫解析DNS伺服器的方式,繞過了傳統DNS伺服器的缺點,實現了智慧排程。

5。3 CDN:你去小賣部取過快遞嗎,本節需記住以下兩個重點:

CDN和電商系統的分散式倉儲系統-樣,分為中心節點、區域節點、邊緣節點,將資料快取在離使用者最近的位置。

CDN最擅長的是快取靜態資料,除此之外還可以快取流媒體資料,這時要注意使用防盜鏈。CDN也支援動態資料快取,可用模式有兩種:一種是邊緣計算的生鮮超市模式,另一種 是鏈路最佳化的冷鏈運輸模式。

5。4資料中心:我是開發商,自己拿地蓋別墅,本節需要記住以下3個重點:

資料中心分為三層。伺服器連線到接入層,然後是匯聚層,接著是核心層,最外面是邊界路由器和安全裝置。

資料中心的所有鏈路都要高可用。伺服器可以繫結網絡卡,交換機可以堆疊,三層裝置可以透過等價路由,二層裝置可以透過TRILL協議實現高可用。

隨著雲和大資料的發展,東西流量相較於南北流量更加重要,因而演進出葉脊網路結構。

5。5 VPN:朝中有人好做官,本節總結如下:

VPN可以將一個機構的多個數據中心透過隧道連線起來,讓機構感覺在一個數據中心裡面一樣,如同自駕遊透過瓊州海峽。

完全基於軟體的IPsec VPN可以保證私密性、完整性、真實性,簡單便宜,但是效能稍微差一些。

MPLS-VPN綜合了I轉發模式和ATM標籤轉發模式的優勢,效能較好,但是需要從運營商處購買。

5。6行動網路:去巴塞羅那,手機也上不了“臉書”,本節總結如下:

行動網路的發展歷程從2G到3G,再到4G,功能逐漸從以打電話為主轉變為以上網為主。

請記住4G網路的結構,有eNodeB、MME、SGW、PGW等,分控制面協議和資料面協議,你可以對照這個結構,試著說出手機上網的流程。

即便你在國外運營商的範圍內上網,也要由國內運營商控制,因而也上不了“臉書”。

華為18級工程師三年心血終成趣談網路協議文件(附大牛講解)

第6章雲計算中的網路.

6。1雲中網路:自己拿地成本高,購買公寓更靈活,本節總結如下:

雲計算的關鍵技術是虛擬化,這裡我們重點關注的是虛擬網絡卡透過開啟TUN/TAP字元裝置的方式,將虛擬機器內外連線起來。

雲中的網路重點關注四個方面:共享、隔離、互通、靈活。其中共享和互通有兩種常用的方式,分別是橋接和NAT,隔離可以透過VLAN的方式來進行。

6。2軟體定義網路:共享基礎設施的小區物業管理辦法,本節總結如下:

用SDN 控制整個雲裡面的網路,就像小區保安從總控室管理整個物業是一樣的,將控制面和資料面進行了分離。

Open vSwitch是一種開源的虛擬交換機的實現,它能對經過自己的網路包做任意修改,從而使得雲對網路的控制十分靈活。

將Open vSwitch引入雲之後,可以使配置簡單而靈活,並且可以解耦物理網路和虛擬網路。

6。3雲中網路之安全:雖然不是土豪,也需要基本保障,本節總結如下:

雲中的安全策略的常用方式是使用iptables的規則,請記住它的5個鏈:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING。

iptables 的表分為4種: raw、mangle、nat、filter。其中安全策略主要在filter表中實現,而虛擬網路和物理網路地址的轉換主要在nat表中實現。

6。4雲中網路之QoS:室友瘋狂下電影,我該怎麼辦,本節總結如下:

雲中的流量控制主要是透過佇列進行的,排隊規則分為兩大類:無類別排隊規則和基於類別的排隊規則。

在雲中網路Open vSwitch中,主要使用HTB將總的頻寬在一棵樹上按照配置的比例進行分配,並且在一個分支不使用流量時,借給另外的分支,從而增強頻寬利用率。

6。5雲中網路之隔離GRE、VXLAN:雖然住一個小區,也要保護隱私,本節總結如下:

要對不同使用者的網路進行隔離,解決VLAN數目有限的問題,需要透過Overlay的方式,常使用的是GRE和VXLAN。

GRE是一種點對點的隧道模式,VXLAN是支撐組播的隧道模式,它們都要在某個隧道埠進行封裝和解封裝,實現跨物理機的互通。

Open vSwitch可以作為隧道埠,透過設定流表規則在虛擬機器網路和物理機網路之間進行轉換。

華為18級工程師三年心血終成趣談網路協議文件(附大牛講解)

第7章容器技術中的網路.

7。1容器網路:來去自由的日子,不買公寓去合租,本節總結如下:

容器是一種比虛擬機器更加輕量級的隔離方式,主要透過namespace和 cgroup技術進行資源的隔離,namespace負責“看起來”隔離,cgroup負責“用起來”隔離。

容器網路連線到物理網路的方式和虛擬機器很像,透過橋接的方式可以實現一臺物理機上容器的相互訪問,如果要訪問外網,最簡單的方式還是透過NAT。

7。2容器網路之Flannel:每人一畝三分地。,本節總結如下:

基於NAT的容器網路模型在微服務架構下有兩個問題,一個是IP地址重疊,另一個是埠衝突,需要透過Overlay 網路保持跨節點的連通性。

Flannel是跨節點容器網路方案之一,它提供的Overlay方案主要有兩種方式,一種是UDP在使用者態封裝,另一種是VXLAN在核心態封裝,而VXLAN的效能更好一些。

7。3容器網路之Calico:為了高效說出善意的謊言,本節總結如下:

Calico推薦使用物理機作為路由器,這種模式沒有虛擬化開銷,效能比較高。

Calico的主要元件包括路由、iptables 的配置元件Felix、路由廣播元件BGP Speaker,以及大規模場景下的BGP路由反射器。

為解決跨網段的問題,Calico還有一種IPIP模式,即在兩臺機器之間打一個隧道,兩臺機器分別位於隧道兩端,這樣本來不是鄰居的兩臺機器,因為隧道變成了相鄰的機器。

7。4 RPC概述:遠在天邊,近在眼前,本節總結如下:

遠端呼叫看起來用socket程式設計就可以了,其實是很複雜的,要解決協議約定問題、傳輸協議問題和服務發現問題。

Bruce Jay Nelson的論文、早期ONC RPC框架,以及NFS的實現,給出瞭解決這三大問題的示範性實現,即協議約定要公用協議描述檔案並透過這個檔案生成Stub程式,RPC的傳輸一般需要一個狀態機,同時需要另外一個程序專門做服務發現。

華為18級工程師三年心血終成趣談網路協議文件(附大牛講解)

第8章微服務相關協議.

8。1基於XML的SOAP:不要說NBA,請說美國職業籃球聯賽,本節總結如下:

原來的二進位制RPC有很多缺點:格式要求嚴格、修改過於複雜、不面向物件。於是產生了基於文字的呼叫方式——基於XML的SOAP。

SOAP的三大要素:協議約定用WSDL、傳輸協議用HTTP、服務發現用UDDL。

8。2基於JSON的RESTful介面協議:我不關心過程,請給我結果,本節總結如下。

SOAP過於複雜,而且設計是面向動作的,因而往往因為架構問題導致併發量上不去。

RESTful不僅僅是一個API,還是一種架構模式,主要面向資源提供無狀態服務,有利於橫向擴充套件應對高併發。

8。3二進位制類RPC協議:還是叫NBA吧,總說全稱多費勁,本節總結如下:

RESTful API對於接入層和Controller層之外的呼叫,已基本形成事實標準,但隨著內部

服務之間的呼叫越來越多,效能也越來越重要,於是Dubbo的RPC框架有了用武之地。

Dubbo透過註冊中心解決服務發現問題,透過Hessian2序列化解決協議約定的問題,透過Netty解決網路傳輸的問題。

在更加複雜的微服務場景下,Spring Cloud的RESTful方式在內部呼叫時也會被考慮,重要的是JAR包的依賴和管理問題。

8。4跨語言類RPC協議:交流之前,雙方先交換一下專業術語表,本節總結如下:

gRPC是一種二進位制、效能好、跨語言、更靈活,同時可以進行服務治理的多快好省的

gRPC框架,唯一的不足就是要寫協議檔案。

gRPC 在序列化時使用Protocol Buffers,網路傳輸時使用HTTP 2。0,服務治理時可以使用基於Envoy的Service Mesh。

華為18級工程師三年心血終成趣談網路協議文件(附大牛講解)

第9章網路協議知識串講.

9。1 知識串講:用“雙*”的故事串起網路協議的碎片知識(上),

9。2 知識串講:用“雙*”的故事串起網路協議的碎片知識(中),

9。3 知識串講:用“雙*“的故事串起網路協議的碎片知識(下),

9。4 搭建—個網路實驗環境:授人以魚不如授人以漁,

華為18級工程師三年心血終成趣談網路協議文件(附大牛講解)

這份【趣談網路協議】文件共有435頁,需要完整版的朋友,可以轉發此文關注小編,私信小編【技術】來獲取!!

當然,單單有文件看是遠遠不夠的,還有影片和相匹配的課件進行學習提升,努力把計算機網路這一塊兒給搞明白,相信一定會有不凡的人生!!

TCP/IP/網路IO學習影片

華為18級工程師三年心血終成趣談網路協議文件(附大牛講解)

TCP/IP網路協議

華為18級工程師三年心血終成趣談網路協議文件(附大牛講解)

網路IO

還有課件分享

華為18級工程師三年心血終成趣談網路協議文件(附大牛講解)

IO課件

華為18級工程師三年心血終成趣談網路協議文件(附大牛講解)

TCP/IP課件

TCP/IP/IO網路通訊影片和課件獲取,轉發關注小編,私信【技術】獲取!

好了,今天就分享到這裡了,希望大家能夠好好學習,把計算機網路這一塊兒給提升上來,也希望本文能夠得到大家的喜歡!!