前言
雖然在大學的時候大家都學過網路協議 ,但是肯定感覺網路協議的知識點非常多 ,非常復雜,學的時候就渾渾噩噩,真正到了實踐中更是糊里糊涂,一旦作業中遇到了網路問題,除了會簡單地 ping 幾下 ,基本沒有什么解決問題的思路, 然而當拿起書來學習,或者看一些官方檔案的時候,各種生僻的專業詞匯馬上撲面而來,每了解其中的一個詞匯 ,都要看多 篇文章,讀多本書,導致一篇即使很短的有關網路技術的文章也要幾個星期才能看完,
這嚴重打擊著大家的自信心,并且很容易讓人在技術的海洋中迷失自我,從而產生“從人門到放棄”的沖動!
網路協議和變化萬千的前沿技術不同,它的變化比較小,一旦掌握到一定程度,就會一直受益 技術變 很快,這 幾年OpenStack、docker、Mesos、kubernetes、微服務、serverless、AIops等技術層出不窮,讓大多數技術人員應接不暇,但是掌握了基礎知識 后,反而發現很多技術看起來“轟轟烈烈”, 脫下外衣,其實本質還是操作系計算機網路、演算法與資料結構、編譯原理 、計算機組成與系統結構 ,
如果基礎打好了,最大的收益就是,在最新的技術出來以后,只要經過短時間的學習,就很容易上手,就能在新技術的滾滾浪潮中保持快速學習的能力,
既然網路協議既是基礎,又繞不過去,還這么難,但是趟過去之后又不怎么變,收益越來越大,那為什么不寫一檔案,給大家一點可借鑒的經驗,幫助大家盡快掌握網路協議呢?
那么,今天咱們就從目錄、主要包括的內容和總結三部分給大家進行網路協議的拓展學習,希望大家能夠喜歡!!
目錄

?
主要內容
主要把本文內容分為九章來給大家介紹:
第1章通信協議概述.
1.1為什么要學習網路協議
1.2網路分層的真實含義,總結一下本節的內容,理解網路協議的作業模式,有以下兩個小竅門,
- 始終想象自己是一個處理網路包的程式:如何拿到網路包,如何根據規則進行處理,如何發出去,
- 始終牢記一個原則:只要是在網路上跑的包,都是完整的,可以有下層沒上層,絕對不可能有上層沒下層,
1.3 ifconfig:熟悉又陌生的命令列,通過本節的學習希望你能記住以下的知識點,后面都能用得上:
- I地址有定位功能,MAC地址類似身份證號,無定位功能,
- CIDR可以用來判斷是不是本地地址,
- IP地址分公網IP地址和私網IP地址,后面的章節中會談到“出國門”,就與此有關,
1.4 DHCP與PXE:IP地址是怎么來的,又是怎么沒的,本節內容總結如下:
- DHCP主要租給客戶端IP地址,這個程序和租房很像,要商談、簽約、續租,廣播還不能“搶單”,
- DHCP會給客戶端推薦“裝修隊”PXE來安裝作業系統,這在云計算領域大有用處,

?
第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 這兩個實作,

?
第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問題,

?
第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服務器,即元資料集中,檔案資料分散;另一種基于分布式哈希演算法,元資料和檔案資料全部分散,

?
第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等,分控制面協議和資料面協議,你可以對照這個結構,試著說出手機上網的流程,
- 即便你在國外運營商的范圍內上網,也要由國內運營商控制,因而也上不了“臉書”,

?
第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可以作為隧道埠,通過設定流表規則在虛擬機網路和物理機網路之間進行轉換,

?
第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的傳輸一般需要一個狀態機,同時需要另外一個行程專門做服務發現,

?
第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,

?
第9章網路協議知識串講.
9.1 知識串講:用"雙*"的故事串起網路協議的碎片知識(上),
9.2 知識串講:用"雙*"的故事串起網路協議的碎片知識(中),
9.3 知識串講:用"雙*“的故事串起網路協議的碎片知識(下),
9.4 搭建—個網路實驗環境:授人以魚不如授人以漁,

?
這份【趣談網路協議】檔案共有435頁,需要完整版的朋友,可以【見下圖】來獲取!!

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

?
TCP/IP網路協議

?
網路IO
還有課件分享

?
IO課件

?
TCP/IP課件
TCP/IP/IO網路通信視頻和課件掃碼即可免費獲取
好了,今天就分享到這里了,希望大家能夠好好學習,把計算機網路這一塊兒給提升上來,也希望本文能夠得到大家的喜歡!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/132217.html
標籤:Java

