計算機網路該怎麼學?表示不管看自頂向下,還是謝希仁,都是一個感覺:太抽象,看完就忘?

1:先說下我的知識儲備:目前只會C、和數據結構

2:再說下我學習計算機網路時的困惑:感覺不管哪章,裡面的東西都特別抽象,因為沒條件對裡面每個東西進行實際考察,只能通過文字學習,可結果是:*裡面的東西太抽象*,*看完就忘*

都看了兩個月了,現在除了記了些關於計算機網路的名詞。其他什麼都沒學會。感覺*根本沒法入門*

(用「*」號括起來的,就是我存在的問題、很嚴重的問題)

我想問:是因為我知識儲備不夠,才記不住、學不會?還是我的學習方法不對?還是這門課對學生要求比較低,我對自己的要求太高了?

順便問一下,為什麼可多人都是只關注應用層和運輸層,怎麼感覺大部分人對下三層不太關注???


先聲明:沒有利益相關,推薦的所有網易課程均不是廣告O(∩_∩)O~

雖然贊不多,但是發現收藏多了兩百,覺得還是有一些小朋友會用到,那麼把我最近收藏的覺得有用的都更新一下吧,都是我個人特別關注的領域(linux研發,網路,安全)

長期更新~~ 被我發現的就逃不掉O(∩_∩)O~ 都會貼在這裡

2017-11-1更新(IPSec,XFRM,網路協議棧相關)

最近開始做IPSec這一塊,吐槽一下我們公司開發流程不完善,沒有交接,沒有資料,領導一句話,你搞VPN吧,我就一邊哭一邊查資料一邊捋代碼。

下面鏈接都是我篩選出來,比較有效的ipsec相關的博客,因為涉及到內核協議棧以及NETFILTER,所以相關的也放在下面。

//pptp與l2tp關係

https://www.zhihu.com/question/20174552

http://blog.163.com/hlz_2599/blog/static/142378474201361882619351/

http://blog.163.com/hlz_2599/blog/static/142378474201341511122929/

//IPSec穿越NAT

http://www.aiuxian.com/article/p-1934612.html

http://blog.csdn.net/iiprogram/article/details/2292852

//linux2.6ESP包解析流程

http://enchen.blog.51cto.com/716040/158005

說明:這個博主轉載了很多關於OpenSwan以及xfrm的資料,特別好。

//IP安全屬性概要

https://docs.oracle.com/cd/E19253-01/819-7058/6n91g7e3j/index.html

//SNAT和DNAT區別

http://www.linuxidc.com/Linux/2013-08/88536p2.htm

//Linux內核協議棧

http://blog.csdn.net/column/details/network-kernel-yoyo.html?page=1

//從驅動到協議棧

http://www.cnblogs.com/CasonChan/p/5166191.html

//ipsec業務流程

http://blog.sina.com.cn/s/blog_7f2122c501014eyh.html

//報文是如何從內核傳遞到用戶層的

http://lib.csdn.net/article/operatingsystem/53258

2017-6-15更新

/*以下是免費的,幾乎都是C或者linux入門時候必須的*/

//下面的是編程相關的

shell腳本

Linux Shell腳本應用 - 網易雲課堂

linux基礎

必須掌握的Linux基礎 - 網易雲課堂

雲計算

Linux雲計算精講視頻 - 網易雲課堂

高級編程

嵌入式之APUE--從入門到精通 - 網易雲課堂

架構-初級

linux入門教程之系統架構師 - 網易雲課堂

架構-安全

linux架構師之網路高級安全 - 網易雲課堂

存儲

linux架構師之存儲及調優 - 網易雲課堂

//下面是我認為作為安全研發需要熟知的

HTTP基礎偏運維

金牌講師林旭帶你學HTTP - 網易雲課堂

思科的運維

CCNA網路精品課 - 網易雲課堂

漏洞解析

邊學邊玩-網路協議web漏洞深度解析 - 網易雲課堂

抓包工具--網路入門神器

從零開始學Wireshark抓包--免費版 - 網易雲課堂

/*以下是付費的,要399。這個是我學完手頭上的,馬上就學習的。*/

庖丁解牛Linux內核 - 網易雲課堂

==================================分割線============================

補充一個鏈接在這:(現在需要9塊錢了)

TCP、IP協議族詳解 - 網易雲課堂

發現這個老師有個更加基礎的網路基礎課程,我個人是不需要聽,所以沒買。按照這個老師的講課風格,估計也會特別細緻,鏈接放在這:(這個要18塊錢)

計算機網路技術基礎 - 網易雲課堂

================================以下原答案=========================

最近在網易雲課堂上在學一個 TCP/IP的課程,講的很細很生動。需要6塊錢買課,個人覺得很值。如下圖。


說說我的學習經歷吧,本碩均就讀於帝都某211,本科自動化,研究生通信,具體方向是網路通信。

我是研究生複試完進入實驗室的,當時對計算機網路一竅不通。個人感覺,這個東西只看書不實踐很難理解。

說說我當時的學習過程吧。

1.通讀教材,對其中的Mac地址,IP,tcp等等有個大致的了解;

2.通過網路編程:安裝Linux系統,學會在Linux系統下面編程,包括使用純文本編輯器,使用gcc編譯程序,還有一些基本指令,這個非常重要;還有就是要安裝wireshark抓包軟體;

3.然後,學會使用tcp/UDP套接字編程,進行基本的收發包,體驗一下主機之間如何通過這些協議進行通信;對了,如果機器有限,可以使用mininet,搭建虛擬拓撲;在通信的過程中,採用wireshark抓包,抓取相應網口的數據包進行分析,可以看見其每一層協議,包含哪些欄位,一邊分析一邊查書,加深理解。

總之,理論聯繫實際才能學的更快。


這就是我為啥不推薦topdown這本書的原因,高屋建瓴講一堆歷史,讓初學者怎麼做實驗?

我自己用的是tcpip詳解卷1和unp,配合linux的manpage做實驗(tcpdump可替換成wireshark)。如果還覺得有困難,可以看日本人寫的那個圖解tcpip。


老鐵不要慌,計算機網路確實比較抽象,在學的過程中需要結合實際,多思考就能大概理解了~

首先,數據在網路中傳輸,本質就是1010的比特數據流(當然更本質一些應該是各種亂七八糟的信號之類的)。比特流由物理層負責傳輸,這也就是我們現實生活中搭建的各種電纜啊、無線信號塔之類的東西。

接下來可能就要開始抽象了。信號在傳輸過程中會受到干擾,導致信號丟失,而數據鏈路層通過一些校驗手段保證傳輸的信號正確,即我發送的是10101,那麼對方接收到的也是10101。

然後就是最重要的網路層,信息在網路中傳輸時,不可能直接到達,因為路途遙遠所以需要通過中間結點一步一步走,而這些結點便是路由器這類的設備。
然而因為路程遙遠,結點太多之類的原因,信息在傳輸時需要選擇相對較近的結點,所以這就需要一些協議、標準來進行約束,我就不細說了(因為忘了),書中都有~

接著是傳輸層,也同樣重要,大名鼎鼎的TCP、UDP就在這裡。之前的網路層是端到端的,也就是從一台終端到一台終端。而傳輸層是進程到進程,也就是說不同進程會根據自身業務需要選擇不同的協議。
一些需要可靠通信的應用,如文件傳輸,就需要用TCP;一些不需要可靠通信的應用,如即時通信類,對丟包數據準確性容忍度較高就可以使用UDP。

最後是應用層,在五層結構中它是最頂層,也就是我們在編寫應用時需要關注的東西。無數的應用程序豐富了我們現在的互聯網,賦予了其更深刻的意義。(我就是寫到這不知道說啥了。。

唔,最後總結一下吧。


計算機網路的分層結構可以使我們在編寫程序時不需要考慮底層的基礎設施,這樣當初小馬哥在寫QQ時就不用自己去鋪設網路線路了,也不用管消息在網路中是怎樣流通的,他只需要思考怎麼做好OICQ這個產品就好咯。而且分層可以使結構清晰,易於管理及擴展。


各種協議其實就是統一的標準,這樣廠家生產的硬體、程序員編寫的應用就能相互合作、通信啦。另外,是有專門的機構對協議啊域名啊之類的東西進行標準化及管理的~

以上便是我對計算機網路的大體理解,有錯之處還望大家多多指出,共勉~


計算機網路自頂向下有大學使用這本書做教材,lab官網有,從應用層到ip層的實現都有,雖然tcp/ip實現是模擬的,但是主要的演算法概念全部覆蓋,寫完現在也沒忘記

CS 60 Computer Networks


不到考試學不會


可以逆向思考。

如何fuck掉周圍的網路,無線,lan,wan?

從這個問題出發,各層協議,都會很熟。

在學計算機網路的時候就思考過如何fuck學校的公共WiFi。最後也成功了。

時過兩年,802.11這些協議,我葉門清。壓根不會忘。

當然記憶深刻主要因為這個事讓我被學校處分。

-----------------------------------------------------------

對於每一個學習計算機網路的同學來說,這門課最大的障礙,就是背景差異。在上大學之前,我們理解的計算機網路就是,小區光纖,家庭WiFi,手機4G。這些組網方式,和實現手段都固化了我們對網路的認識。在學習的時候,就總會拋出各種疑問,這玩意有用嗎,這玩意還能這麼用。導致那些概念無法和實際聯繫在一起,停留在抽象上。


用你掌握的一種編程語言,編寫一個Socket應用(比如實現一個最簡單的Web Server),一切就活起來了。

光看書,學不會的。


你所接觸的人都是上層開發的,下層的不懂計算機網路的實現怎麼寫路由交換機寫現代乙太網傳輸?

你在知乎上遇到的大部分都是純粹的軟體程序員,根本不關心硬體。

問這類問題最好還是去專門的技術論壇比較好,哪怕是去電子論壇可能都比軟體論壇更關心你說的下三層。

更不用說知乎這分享裝逼經驗的地方了。


剛才那答案說自頂向下那本書不好的說的是真的么?

真的看過么?

Keith W. Ross - Wikipedia

---------------------------------------------------------------------

Jim Kurose - Wikipedia

-------------------------------------------------------------------------

陳鳴,江蘇無錫人,解放軍理工大學教授、博士生導師,全軍網路技術研究中心主任,軍用網路技術實驗室(軍隊重點實驗室)主任,國家級實驗教學示範中心主任;分別於1982年、1988年在解放軍信息工程學院獲得學士、碩士學位,於1991年在解放軍通信工程學院獲得博士學位,1999~2000年為美國哥倫比亞大學訪問科學家,任中國計算機學會網路與數據通信專委會副主任,是中國通信學會等多個學術團體委員和IEEE會員;長期從事網路測量、分散式系統、網路體系結構、網路管理等領域研究和教學工作;承擔了國家自然科學基金、國家863、國家973子課題等項目;開發的多個網路管理系統和應用系統得到廣泛應用;撰寫網路著作近10本,發表SCI/EI論文幾十篇,有國家發明專利8項;獲得國家教學成果二等獎1項、省部級科技進步二、三等獎十幾項。

而且第四版第六版都讀過。個人感覺還挺好的。

說實話計算機網路沒有什麼高深的技術。但是需要有大量的記憶性的知識。而且市面上大部分計網的書籍都是需要大量背誦的知識點而且索然無味。自頂向下是我看過的少有的能讓我看進去的有一點點趣味的書籍。


如果你是學生黨,可以參考我大三的一些總結,貼上鏈接:計算機網路整理筆記


不知道題主是計算機專業還是通信專業的。

我通信工程專業,學計算機網之前的基礎知識和題主一樣:C語言,數據結構。

沒辦法,通信工程學計算機網的確是這樣的,對於頂層的東西接觸的太少了,比如:連基本的伺服器-客戶端、web、文件傳輸,這種最基本的東西都沒有感性的認知,你叫我去看計算機網能看懂就有個鬼了。

我們學校計算機網是大三的課,但是我在大二就自學了(當時我就準備轉碼農,脫通信坑),謝希仁和自頂向下都看過。

1、首先說書,謝希仁的書嚴謹,專業性強。自頂向下生動,易於理解。你要是自學的話建議以自頂向下為主,謝希仁為輔吧。

2、再說題主的主要問題。題主說「 裡面的東西太抽象 」。作為通信狗,從頭到尾一個字一個字看開始看,一大堆專有名詞,不知道在說些什麼東西,肯定會有這樣的感覺。

我的建議是:書的第一章要仔細看,而且得配合書後的習題去看,就是先看習題,然後看書去找答案。如果第一章裡面有沒有理解的東西就跳過,趕快跳過。不要讓第一章就消磨了你自己的耐心了。

然後第二章,第二章對於通信專業的學生其實是很陌生的,但是這一章對於自學的人最為重要!!!

因為這一章就是培養對這門課的興趣最重要的一章!!只要這一章認真實踐了,就會在實踐中產生問題,自己提出問題了,就有學下去的動力了!!同樣這一章能把很多抽象的東西和具體的軟體對應起來!!

因為這一章都是一些可以自己實踐的東西比如web、http,ftp都是可以在電腦上能看得見的東西,必須要自己在自己的電腦上倒騰倒騰。這一章就是培養對這門課的興趣最重要的一章,以後所有的章節基本都是圍繞怎麼實現這一章的這些功能在展開。所以必須要自己搭建一個web伺服器啊,或者寫一點HTML代碼,在做這些的過程中,你就會產生很多的問題,這些問題就是保持你繼續看下去這本書最重要的東西!!

然後後面幾章也一樣,對照課後題,先看題目,然後帶著具體的問題去看書。具體每章怎麼學,看以後有時間再寫一下吧..

3、最後題主說的「看完就忘了」,這個需要自己每看完一章自己去總結,把每一章的每一小節都總結出一句話出來。然後把這句話背下來,如果自己總結不出來,就直接背目錄吧。 如果理解不了,背下來是最好的,先背下來,這東西就在你腦袋裡面生了根,以後再實際生活中,看見相應的東西,這些東西就會湧現出來,你會感嘆的「原來是這樣的!


計算機網路的教學,應該從關注「協議」轉移到關注「系統」。

(1) 「Networking is about distributed state management, period.」 — Martin Casado

網路是一個分散式系統,協議是在這個分散式系統上實現功能的方式。設計協議是在解決一個分散式系統問題,就這樣。說明白點,每個網路節點/設備各有各的狀態,如何統籌兼顧這些狀態,是網路的核心問題。

(2) 「The best performance improvement is the transition from the nonworking state to the working state」 — John Ousterhout

互聯網/網路的發展是一個從無到有的過程。創造者們一開始的關注點,必然是其最基本的功能 – 把東西聯繫起來

互聯網/網路帶來了前所未有的成功,也給後來每一代的網路管理者和研究人員帶來在計算機其他領域前所未見的複雜度

複雜度是個磨人的妖精。它帶來不穩定性,不穩定性意味著運行時你不能保證它長時間不出現問題,出現問題以後因為複雜廢了老半天也找不到問題在哪。這就是網路在工業界長期以來的狀態。無論是它的客觀狀態,還是我們思考計算機網路問題的方式,都太複雜了

「我們在設計網路之初,沒有把管理複雜度放在一個更高的位置。我們只想把東西連起來,所以也別怪我們。」 — 某Internet Father。

這也是協議思維的源頭。以上幾十個答案,絕大部分透露的是協議思維。協議思維的極端,便是「我是這樣"巧妙"學習網路的,想像你是一個包,經過網路上的各種設備...」 可見一斑。

(3) 「Any user of a computer system is aware that current systems are unreliable because of errors in their software components. While system designers and implementers recognize the need for reliable software, they have been unable to produce it.」 — Barbara Liskov

計算機科學的一個核心問題是如何管理複雜度。

幸運的是,現在的程序員、工程師、計算機科學家大概沒人不理解了:"System modularization is the key" -- 模塊化地設計系統是管理複雜度的最有效方法。

同時,也是思考系統、理解系統、學習系統的最有效方法。

好,參考 (1) 網路本質為分散式系統;參考 (2) 我們理解了協議思維的源頭,以及它帶來的問題(我們也順便知道了不能過河拆橋去怪它);最後參考 (3) , 我的結論如下:

我提倡從「系統」和「系統功能」的角度學習計算機網路。

簡單舉個例子:(4) 「Ever since I became a networking student, I"ve been amazed by the network"s being self-organized.」 -- Amin Vahdat 計算機網路的一個迷人之處,就是你只要用線連上你的設備,你就連上了網路,你就連上互聯網,你就能與全世界溝通。多數時候,網路斷了,重啟路由,或重連設備,一切和沒事一樣。Well, 實現這一切的背後,是一個複雜的系統,是幾代人的努力。你雖一下子難以想像、掌握其中細節,我希望你知道其中的核心問題,核心原理 -- The principles:

  • 你肯定知道,網路是用來傳遞信息的。傳遞信息意味著設備在物理層面上是接觸的--設備們共享一個物理媒介(包括以太..開玩笑)。
  • 你肯定知道,一個設備把信息放在物理媒介上,分享物理媒介上的設備都看的見,他們怎麼知道是發給誰的?我們需要標籤,mark一下。
  • 我告訴你,一個新設備接上來,一窮二白;幸好,它的網卡自帶物理標籤。

好了,有了這個標籤,你可以收發信息了,

  • 可是你要想,它怎麼知道它想要傳遞信息對象的標籤?別人怎麼知道它的標籤?
  • 可是你要想,它只能和這些共享物理媒介的設備間傳遞信息。

怎麼辦?

  • 我告訴你,我們再加一個標籤,記為標籤II,由標籤管理者給每個新來的設備統一發放(通過之前標籤I識別)。
  • 這個標籤II,通過某種全球性的機制,能夠使得全球的其他設備發出的信息,持著這個標籤,按圖索驥,找到你的設備。

就這樣,兩個標籤,你的設備與全球設備聯繫起來了。事實上,大多是計算機學生理解到這樣就足夠了,其他細節按興趣分發。眼下實際情況是,學了老半天各種協議各種服務,學生也不理解我們要解決什麼問題,這些問題為什麼會出現,以及我們如何有效的解決它你又如何期待他們將來更好地思考、甚至解決這些問題呢?Disclaimer: I know many people, the networking experts per say, are trying to find "mistakes" in this example -- I"m telling you, there is no mistake, there is no mistake at the principle level, and you know it; this mechanism here, is the one and only mechanism that works, again, in principle.

我本身也在思考和探索如何在網路學習和教學中運用「系統觀」,希望結合大家意見來完善。從舉例子到從First Princple上來理解和使用。

結束前,我們來落實「網路學習上的若干重大問題」。

教科書問題。

不談過多的,從答案上來看,基本上大家有共識,自頂而下(Computer Networking A Top-Down Approach, by James Kurose)是最普遍的教材。

它是墜吼的嗎?按照我們的系統角度,它不是。它的產生年代,它的作者,都告訴了你它是一個協議思維的產物

我們為什麼選擇它?很簡單,因為我們過去實在沒有更好的了。其他像Stallings, 雖然操作系統的書寫得精妙絕倫,但again, 也逃不出協議思維,何況本身不是純網路學者。另外自頂而下配套的教學用具(如slides)是做的很好的,出版社、作者、和學界對它的推廣,幾十年來推了個大雪球。

你甚至可以blame它 -- 怎麼能自頂而下的學習網路。我讀這本書的感覺是,你說的很漂亮,咱自頂而下地學,但對咱的理解並沒什麼幫助, 對你自己知識體系的整理倒是幫助莫大。Again, 你或許可以自頂而下地理解協議(我甚至都不覺得你可以這樣做),但你沒法自頂而下地理解網路系統,因為哪裡來的自頂而下嘛,你非要牽強附會。導致學生概念混亂(加上很多老師自己對網路理解也差強人意)。你除非是像 @車小胖 那樣的實打實網路工程師,能把東西用自己的語言從頭解釋清楚,否則學生學個半吊子。我甚至覺得,@車小胖 的理解,就算他說的再清楚,沒有像他那樣多年經驗輔佐 -- 打個不恰當但十分形象的比喻:你就好像雖然練了真的辟邪劍譜,卻怎麼也使不出威力。

我提倡用這本書:

Computer Networks: A Systems Approach, by Larry L. Peterson

可以這麼說,核心網路圈子的教授教學指定教材。淺顯易懂。有時候真的感覺世界很奇怪,有些人在人為地添加、包裹無謂的複雜度,然後我們只好慶幸有些人幫忙剝開。唉。

輔助參考書(我隨自己興趣挑了幾本):

你還是想學協議吧:

TCP/IP illustrated volume 1 the protocols (1st edition),by W. Richard Stevens

唉,可惜先生英年早逝。很多答案提到計算機網路有個"核心體系結構的概念,就是那個osi層次" -- 我負責的告訴你,那個東西,它是它代表的那個思維方式的一個體系結構,僅此而已。我甚至認為你可以不用費心去理解它--因為它就是那樣,你換一撥人去弄,還是那樣。它好玩的地方並不在於它具體是什麼樣的。它好玩的地方在於它是一個"reference model," 這個fact導致了很多有趣的故事。

如何高效地處理網路數據:

Network Algorithmics:An Interdisciplinary Approach to Designing Fast Networked Devices - George Varghese

插一句,我曾嘗試報Varghese的研究生,無奈老祖縹緲無定,如今在UCLA, 也不知收不收徒,終究是錯過了。

實踐問題:

常用工具 -- 其他答案中很多了。 Make a mess, make fun -- better yet, keep a record: "The difference between doing science and messing around is whether or not you take records."

抓包理解協議 -- 你可以這樣做,多少取決於你的興趣。

Mininet -- 在機器上模擬個網路,理解下目前網路的研究方向吧。

待補充.

講實話,你不做這個方向,不需要太多實踐。大實話。

==

此文盡量避免了很多所謂計算機網路「術語」 -- 君不知它們帶來的認知上的、不必要的麻煩和複雜度,恐怕無出其右。尤其很多名詞是從英文轉義的,本身英文里概念就各種overloading, 翻譯過來就真是...任何學科都是這樣。

希望其他答題的朋友予以指教。希望網路的學習變得輕鬆和有趣,是為題中之意。

最後,與大家分享一句話: "Technologies come and go, but the principle tends to remain more constant." 來自另一位Internet Father (別和我糾正Father of Internet還是Internet Father的問題,thanks). 一代代技術來了又去了,一個個名詞出現了又消失了,留下的,不變的,是背後的原理,那些才是精華。不要捨本逐末,不要撿了芝麻掉了西瓜,不要授人以魚。掌握原理,才是學習的王道。傳承核心思想,才是傳道授業之道。

學任何東西都是這樣。然後我們再談創新。


Wireshark抓包,再用winpcap寫個小程序往你們寢室網關和室友電腦上發包,讓他們都上不了網,基本上你就懂網路是怎麼回事了


計算機網路這種東西,不對,應該說計算機這種東西,或者更多,都是用到了才能學好滴!我是信息安全的,當初聽說計算機網路很重要,中國大學Mooc上看各大高校的計網課程,安全牛的ccna,愛慕課的linux網路管理都看,最終我記住的也就是愛慕課里的那一兩小時學到的東西,懂得了什麼叫做ip,什麼是網關,dns是幹嘛的,原因是當時只會在虛擬機里用kali,最長遇到的就這麼幾個知識而已。

再後來,學習主動信息收集,流量操控,拒絕服務等,發現需要很多傳輸層網路層應用層知識,就又去看這方面的視頻。

最近,因為計網期末考試,又惡補了計網的基本概念,各種演算法~~~

說這麼多,就是想說不用一口氣學精,了解一個大概,使用時你知道需要哪方面知識再去學就好了,只有真正用到才可能學好的!

~~~~~~~~~~~~~~~~~~~~

好吧,要是上面是屁話,我推薦南郵的網路技術與應用,看視頻總是比看書輕鬆~


強烈推薦尹聖雨的 《TCP/IP網路編程》,我寒假的時候看的,看完後結合書中最後的例子用 c語言寫了一個簡易的web 伺服器。


多做實驗多抓包


計算機網路是一個知識體系。

好比一棟大樓,在你剛剛開始學習的時候只是一片空地,你需要慢慢添磚加瓦,但學習了一段時間之後發現大樓沒有成型,感覺只是一堆廢磚堆在那裡,毫無用處,這時也就會出現你現在的感覺。

如果抽象理解的能力好的話 可以直接讀書 在腦海里慢慢形成知識架構,知道應用層、傳輸層、網路層、鏈路層、物理層在兩個主機之間做簡單通信流程怎麼走,運用了哪些協議、分別對應什麼層、有什麼作用 etc. 。之後再細讀一遍,彌補自己在快速閱讀之中忽略掉的一些細節。不明白就反覆讀。

學習計算機網路也可以帶著工程實踐去學習。比如寫一個web網站啊 socket通信的應用啊之類能運用知識的地方,也會慢慢幫助你了解計算機網路的。我學習的時候就是和同學合作一個比賽順手寫了手機間藍牙通信的app來玩。每天學習完一定量知識可以找個小夥伴試著能不能以自己的語言把所學描述出來 檢驗自己有沒有真正理解。

計算機網路:自頂而下方法 這本書還是很不錯的。一開始講應用層 沒那麼枯燥無聊,但到了後面就要自己push了。對於知識體系的形成比較有幫助。初學計算機網路我看的就是這本書,書寫的很有意思。

計算機網路 第五版 特南鮑姆 韋瑟羅爾 寫的也不錯。

越到後面就會發現計算機網路的神奇,在一個不可靠環境下 通過人為的一系列協議實現了一個可靠的數據傳輸。願你能感受計算機網路之美。

深入研究的話就推薦 TCP/IP illustrated volume 1 及Cisco的專業類書籍。


1 先掌握基礎核心知識點(TCP/IP 四層模型,一些基本概念,如IP地址,埠,協議,TCP和UDP的區別),再去掌握細節

2 建議看《鳥哥的Linux私房菜 伺服器架設篇》(網上有電子版)前面有關網路的幾章,學習一些常見的網路相關的命令,實踐起來,體會更深。鳥哥的書雖厚,但很詳細,讀起來很有趣

3 《圖解TCP IP》那本書也挺好的


把計算機網路看成是數據結構的習題課即可。


推薦閱讀:

對於程序猿來說,代碼和妹子哪個重要?
程序員不想找有壓力的工作,心態是不是有問題了?
如何使 Windows XP 像 Windows 7 那樣自動換桌面背景?
如何看待美國IT行業領袖聯合發公開信反對特朗普當選總統,並指其是對創新是一場災難?

TAG:互聯網 | 信息技術IT | 信息安全 | 計算機網路 | IT行業 |