大家好,我是老楊。
隻要參加過網工這崗位面試的,應該很難逃開面試官問網絡協定的相關問題。
網絡協定是一個很大的範疇,你要細說,咱們這公衆号的「每天5分鐘」系列,已經拆開細說的明明白白。
很多小白會有一個誤區,就是學習一個東西,就想去買一本書,一次性搞定。
想學網絡協定,很多人會選擇買經典書籍,比如《TCP/IP詳解》。
對于書本裡這些枯燥的講解,看不懂就算了,打瞌睡也就算了,最重要的是不知道怎麼才能和工作結合起來,用起來,真正的掌握它……
我不看還不行嗎,我不學了!
可是,你在實際的網絡工作中又會發現,網絡協定是永遠繞不開的命題。
我的天,這是不是你的難題?
今天這篇文章,我就花上一點時間,和你說說網絡協定那些事兒。
今日文章閱讀福利:《TCP/IP詳解卷一:協定》
私信我,發送暗号“TCP”,我會把老網工常看的TCP/IP經典入門書籍發送給你,以作參考。
01 網絡協定,有哪些?
是以,話說回來,網絡協定到底是什麼啊?
在計算機科學和網絡通信領域,協定是指用于在不同系統之間進行通信和交流的規則和約定。
網絡協定定義了通信的格式、資料的傳輸方式、錯誤處理機制以及參與通信的各個實體的角色和責任。
例如,你想和一個大型主機的操作員進行通信,由于這兩個資料終端所用字元集不同,是以操作員所輸入的指令彼此不認識。
為了能進行通信,規定每個終端都要将各自字元集中的字元先變換為标準字元集的字元後,才進入網絡傳送,到達目的終端之後,再變換為該終端字元集的字元。
在這裡,你可以把網絡協定了解為網絡世界的“合同”、“規則”甚至是“法律”。
每個人都要按着法律有秩序的生活,每個網絡裝置,網絡傳輸方式,也都會按着網絡協定定義的那樣運作。
隻有這樣,資料才有辦法“溝通”。
舉個不算太恰當的例子,更直接的說明一下:
我說福州話,你說英語,我倆互相都聽不懂對方說話,但這時候,國家規定,在中國,你隻能說“标準國語”,有了一個統一的規則之後,我倆都去學習了國語,這下就可以交流了。
說完"是什麼",我們說說"有什麼"。
常見的網絡協定有TCP/IP協定、UDP協定、HTTP協定、FTP協定、Telnet協定、SMTP協定、NFS協定等。
很多時候,你隻要了解常見的網絡協定工作過程就可以了,因為他們是“根”,了解這些協定,再去學習其他協定,就有一種水到渠成之感。
學習最忌諱的就是抓不住重點瞎學,尤其是初學者和小白,一開始就容易把經理放在太多細節和末枝上,榨幹自己的所有精力,反而一無所獲。
例如,資料包的結構,浏覽一下各字段的作用就可以了,能記住就記住,記不住也沒關系.
你隻需要先重點了解IP頭部裡的目的位址、源位址和TCP頭部裡的目的端口号、源端口号,這幾個東西搞懂了就行,點到為止。
學習不要貪多。
但話說到這裡,肯定就有朋友會問,那我就是想學所有的網絡協定,到底是有多少?
我們回到最開始對于網絡協定的定義來看:
網絡協定是一種規則,為了讓網絡世界更好運作而設,那麼有需要網絡的地方,就有網絡協定,沒錯吧?
網絡協定中,最活躍的一個部分,就是在OSI七層模型裡。也就是我們常說的OSI七層協定。
萌新在這一塊,就得學上不少時間。
每個層級,都會對應不同的網絡協定,比如傳輸層主要的兩個協定,就是UDP協定和TCP協定。
如果你想要具體了解,也可以私信我,發送暗号“網絡技術”,領取由我本人親自整理的網絡協定圖譜大全。
為什麼網絡協定看上去賊多?
感覺根本學不完?
咋整啊?
你要知道,資料通信本身作為底層架構,它所輻射的面積很廣,什麼資料安全、資料傳輸、資料控制等。
你的業務場景越多,你需要的“法律”就會有微妙的變化,自然就要具體問題具體定制。
就像碼農學程式設計一樣,為什麼會有這麼多程式設計語言啊,都學java不就好了?
每個語言都有自己得天獨厚的優勢,沒有最好的語言,隻有最合适這個業務場景下的語言。
當然,如果你想要更好的了解網絡協定,我建議你可以從它的發展曆史去入手,比如先選一本大學生教科書入手,比如《網絡通信概論》,粗淺且全面,适合新手。
這樣,了解了大架構,再去看你感興趣的細節,比如路由交換等,從源頭開始了解,你或許就比人多了一分通透。
02 網絡協定,要怎麼學?
我一直覺得網絡比系統好學,因為網絡不抽象,你想要知道個什麼東西,都可以通過抓包來分析,一頓分析,差不多也明白了七七八八了。
而且,在聊怎麼學之前,你一定要明白一點,學網絡有一句話你要牢記:
知道“為什麼”,比知道“怎麼做”更重要。
在網絡這塊,你能搞懂一個技術是怎麼來的、怎麼去的,你上手應用就會非常快。
如果你隻是執着于,我要學技術,我隻想快點用到項目裡,強行倒着學,隻會得不償失。
我們來聊個具體的,比如ARP協定。
你先了解ARP協定的工作過程,然後去了解下ARP攻擊是怎麼回事。
這個過程,就叫做學理論,也叫做我說的,了解“為什麼”。
這樣你就明白,ARP攻擊其實就是利用ARP協定設計上的不嚴謹,僞造ARP資料包篡改網絡裡其他電腦的ARP緩存清單。
ARP協定采用廣播發送協定資料包,這就導緻裡網絡裡的每一台電腦都會收到ARP的協定資料包。
而ARP協定規定即使你的電腦沒有發出ARP請求,隻要有ARP回應包到達你的主機,你就要對這些協定包進行處理,并将回應包中的MAC和IP對應關系放入自己的ARP緩存。
如果ARP回應包裡面的網關IP與ARP對應關系是正确的,這個問題不大。
但如果有人在網絡中僞造了錯誤的網關IP與ARP對應關系并廣播到網絡裡,那就出問題了。
你可能也意識到,你上不了網,是因為網關IP對應的ARP對應關系出錯,但是沒有辦法,因為你的電腦上運作的ARP協定規定,你的電腦必須要接受這個錯誤的對應關系。
這就是網絡協定設計的不嚴謹,設計和實作ARP協定的時候沒有想到居然會有人在網絡中僞造ARP回應包并廣播到網絡中。
這樣一趟順下來,還有什麼搞不懂的協定?
那麼,要怎麼圍繞“為什麼”去學習理論?
前面說到,很多人學網絡技術都喜歡買書,而且尤其喜歡買經典讀物,比如《TCP/IP 詳解》,但是讀不懂。
雖然《TCP/IP 詳解》也是斯蒂芬森做了無數次實驗總結出來的經典,但對小白來說的确晦澀,那怎麼了解協定的來龍去脈?
我建議你可以看《計算機網絡自頂向下方法與Internet特色》這本書,可讀性非常強,友善你了解常見協定的工作全過程。
然後,其他書籍你可以選讀,建議至少要覆寫路由和交換的内容,書籍不限。
但要明白一個重點,你了解理論,是要了解網絡的整體架構以及了解主要技術,比如子網劃分,交換機工作原理,靜态路由協定,動态路由協定等的實作過程。
所有閱讀行為,都要圍繞這點進行。
了解完“為什麼”,我們來聊“怎麼做”。
隻是看理論,終究還是紙上談兵,是以,我建議你用模拟器輔助了解,也就是“怎麼做”的第一步。
比如我習慣用cisco packet tracer,它有一個功能,就是可以像看動畫一樣,看到資料是如何在網絡拓撲結構中傳輸和互動的。
也可以抓取指定協定的資料包,幫助新手網工更好的了解整個協定。
當然,有人會說,我有很多裝置啊,直接用真機不香嗎?可以啊,隻不過沒有模拟器上看得那麼直覺。
如果覺得用模拟器練手完全沒重點,不知道從何下手,我建議你可以找個思科CCNP的實驗内容,比較有參考性。
當然,你在上述基礎上,可以結合《TCP/IP路由技術(卷1》學習,自己設計幾個實驗玩玩。
這樣你就可以了解常用的一些技術細節,還有技術的實作過程。這樣對你來說,理論不再是紙上談兵,你能更好的吸收和了解晦澀的内容。
到這裡,或許你能對網絡協定的了解程度更深一些。
你有什麼學習好方法?歡迎留言區告訴其他朋友
原創:老楊丨10年資深網絡工程師,更多網工提升幹貨,請關注公衆号:網絡工程師俱樂部