《計算機網路》這門課為何如此之難?

又到了期末考試複習階段,我發現這一個學期我就基本沒聽懂過,
反而覺得《編譯原理》和它比簡單多了。
類似的還有上學期的《操作系統》,我覺得這兩門課格外的難,又無聊,又晦澀,
大家當時學的怎麼樣?怎樣快速複習這門課呢?

補充:
謝謝各位前輩們的指點,
現在最後悔的就是沒有學期初就來知問問這個問題
(如果學期初我就搞到了邀請碼的話)。
我們用的教材是William Stallings 的《數據與計算機通信》,第八版。
感覺這本大部頭的書講的東西特別多特別零碎,真的有種被搞暈了無從下手的感覺。
現在我在考試周,下周考《計算機網路》錢我還有3個整天的時間複習,
採取的策略還是通讀全書+總結架構嗎?


瘦腰啼。

操作系統和計算機網路的共同點,在於它們都是相當複雜的體系結構,如果覺得難,也許是因為自己沒能產生足夠的求知慾。你也說了,「無聊,晦澀」——而無聊感其實是沒治的。對課程的熱情和對女生的愛慕感其實差不多,不能一見鍾情的,可以試著培養,培養之後還是覺得無聊的,那就不是真情了。

以下討論如何培養自己對計算機網路的真情。

首先,計算機網路這門課,我不知道你們用哪本教材,不過任何足夠好的教材,都要教給你各種五花八門協議的來龍去脈,也就是歷史。學歷史,要有——借用一個文科生的 buzzword——「大歷史觀」。自一九六九年 ARPANET 以降,計算機網路是個頗有些年頭的玩意。那些協議啦縮寫啦什麼的,大都在你出生之前就存在了。去翻翻舊的 RFC,英文的寫作風格都不太一樣——那時候的 nerd 們,西裝革履,坐在窄小的單色 CRT 顯示器前面,敲下一個個字元——許多人如今都已經作古,但他們苦心定製下來的各種規約(Protocol),讓你今天能在知乎上面問我這個問題。這難道不是很神奇的事情嗎?所以你要有感恩的心。有了感恩的心,妖就不再……呃,我的意思是,研究歷史就會有朝聖感。

而計算機網路的一切技術細節,也就是那些枯燥的部分,都是歷史遺留問題。可以說,如果將現有一切推倒重來,重新考慮「多台計算機之間如何互相通信」這個計算機網路所解決的根本問題,再發明出來的互聯網將會是完全另一番樣子,而且肯定會簡單很多——一個原因是技術進步了,另一個原因是人們從歷史中吸取了教訓 [1]。所以,當你面對枯燥的技術細節的時候,可以試著考慮這樣一個問題:如此設計的理性因素何在?它有什麼改進的餘地?比如,TCP 建立會話為什麼要三次握手?為什麼 OSI 要有七層?進而思考一下,這樣的設計合理嗎?不合理的設計會被取代嗎?比如,OSI 為什麼沒能成功?以及,為什麼人們會擁抱 REST,嫌鄙 SOAP?

再就是,計算機網路這門課,與現實世界結合得相當緊密。編譯原理本質上是語言學和數理邏輯學,一切都發生在完美世界裡,語法樹想多長就多長,不用考慮澆水施肥的問題。但是計算機網路不一樣,物理層就是赤裸裸的銅線光纖紅外線,要考慮到現實世界可能發生的各種問題,要有容錯能力。這些其實都是工科的東西,更接近機電,而非數學。所以你要培養自己對現實世界的熱愛,接受現實世界的不完美,不能痴迷於符號邏輯和二次元軟妹子里。

總結來說,計算機網路教授的是知識,也是經驗和文化,不能為了學而學它…… 就像不能僅僅為了繁衍後代而把妹子。

[1] http://www.faqs.org/rfcs/rfc1606.html ,見 Conclusions 一節。


看到此問題心裡一驚。。。。一直覺得計算機網路是專業課裡面最簡單的。誰問我最喜歡哪門課我都說是它。
難,那是因為你沒用這本教材。

本人大學所有專業課均為考前看課本自學,唯有這本讓我覺得可以完全勝任「自學」的功能。深入淺出,幽默生動。沒有數學書上那種一句一句的定義和公式,更多的時候是大段大段的講解,各種形象,看小說似的,很快就看完了一本,看完後內牛滿面,從沒想到自己也能讀完一本。

考前5天,每天一到兩章通讀(中文版就可以了),再把章節後的習題一做,看懂百分之多少就能得多少分。

如1樓所說,計算機網路是和現實世界結合最緊密的一門,如果有誰覺得計算機網路最難,編譯原理反而簡單,我覺得這樣的人可能更適合搞數學或者物理。

順便一問,我這樣只對和現實世界聯繫緊密的部分感興趣的人,適合哪方面的工作呢。(還是計算機行業)


因為你把它當政治課來學,只想背下來所有的技術細節,卻不去研究為什麼。

站在21世紀往前看,看看這些協議,一步一步跟隨前輩的腳步,看這個互聯網是怎麼被設計出來的。從最底層的物理層協議,到上面的IP、TCP、HTTP。

想想為什麼TCP握手要3次,斷開要4次:想想為什麼網線里只需要4條線用於通訊,但是包含了8條線,難道另外4條都是備用線嗎?想想為什麼網線要按照橙白、橙、綠白、藍、藍白、綠、棕白、棕的順序連接,而不是僅僅把它們背下來:想想為啥我們有了RARP協議,還需要另外弄一個DHCP協議:想想為啥要分A/B/C/D類地址:想想為啥私有IP段是192.168.0.0、172.16.0..~172.32.0.0、10.0.0.0:想想為啥FTP一個服務要佔用20和21兩個埠?

所以我很討厭Cisco的教材,裡面全是教你怎麼配置他生產的路由器,至於為什麼要這麼配置,這些包具體是怎麼樣的,什麼都不告訴你,很多學生甚至連埠是什麼都搞不清楚,只是背下來一堆命令。


好巧,又是半夜複習計網,看到很多小哥哥們指出的錯誤,敲開心喲
做了一些修改,在最後又做了一些補充~

=============================

半夜複習計網,順路回答縷縷思路...

首先計網不是難= =,是知識點太多!!!畢竟那是一大坨歷史啊喂

然後,計網很有趣啊
你就不想知道,你們翻牆看的小電影,是怎麼傳輸過來的么???

其次,網路的構成就像一個社會,
它的每一次迭代,都是為了解決一個具體的問題
編程是邏輯,計網也是邏輯啊喂
(有答案說計網不像編譯這些,沒邏輯,寶寶不服

你要是非說他難,估計是,自頂向下的厚度嚇到你了,或者密密麻麻的字催你睡著了吧
(斜眼笑

#===================================================
以下個人速成計網後的理解,如果說錯了...
...那你快告訴我讓我考試別丟分啊!!!
#===================================================

計網的目的是通信,是為了連接端到端
所以我們首先要考慮——網怎麼設計

我們有兩種網:1.分組交換 ;2.電路交換(電話)

在很久很久以前,你記不記著,有個「撥號連接」,有個叫做「貓」的東西???
沒錯,就是那個,一上網就打不了座機的時代
此時,我們還是電路交換

這樣太蠢了!!!
如果我只是想上網看下小電影的簡介,那我打開介紹小電影的網站,就暫時不會再通信了
所以,沒必要一直給我連接著啊!

於是,我們用起了分組交換
分組交換還有兩種方式:
1.虛電路,如ATM(模擬電話線路);2.數據報,如網際網路

&>為啥網際網路不用虛電路?
肯定是因為,大多數時候,虛電路沒必要啊,而且麻煩不好用啊

&>為啥虛電路沒必要不好用?
因為大多數時候,互聯網沒有實時要求啊,他的面向連接浪費資源啊

好嘞,現在我們知道了,網際網路使用的是,數據報
我們先不管數據報是什麼,我們先考慮下如何傳輸數據報

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

我們的網際網路,肯定是基於物理電路的,
因此,我們需要一個,將數據轉化為物理信號的層,
於是,物理層誕生啦

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

有了處理物理信號的物理層,可我們還得知道,信號發給誰啊
你肯定知道,每個主機都有一個,全球唯一的MAC地址吧
所以,我們可以用MAC地址來定址啊
恭喜你,鏈路層誕生啦

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

別急,你知道MAC地址,是扁平化的吧
也就是說,MAC地址的空間分布,是無規律的!!!
如果你有十萬台主機,要通過MAC地址來定址
無F**K可說
不管你設計什麼樣的演算法,數據量都太大了!!!
所以,我們需要IP地址啊
&
有了IP地址,恭喜你,網路層誕生啦

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

然而,一台主機不能只和一台伺服器通信啊,
畢竟下小電影,也要同時貨比三家啊
那如何實現並行通信呢?
嘿嘿,我們有埠號啊

再基於不同需求:
有人想要連得快,不介意數據丟失,比如你的小電影
有人必須要數據可靠,比如發一個電子郵件
於是產生了UDPTCP
恭喜你,運輸層誕生啦

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

別急,你知道的吧,不同應用,有不同的傳輸需求
比如,請求網頁,發送郵件,P2P...
而且,還有DHCP伺服器啊
為了方便開發者,我們就對這些常用需求,進行了封裝
恭喜你,應用層誕生啦

至此,自底向上,講述了計網。
待我考完試,我可以寫一部,計算機網路·從下向頂方法
(斜眼笑

====================

&<細節補充&>
&>來我們思考先一個問題:如果有四台電腦,要互相能通信,咋辦?

&>每一台電腦都和另外三台連起來?
那我要是再來十台電腦,你在電腦上給我再加十個介面?

&>那,把他們連接到一個小盒子上,讓小盒子幫著通信?
哎這個可以有啊,那如果我有一萬台電腦,一個小盒子能夠用?

&>嘿嘿,那讓每一個小盒子連一百台,然後把一百台小盒子再連給一個小盒子

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

我們可以用「電話線,寬頻,和光纖」,把電腦接給小盒子,它們被稱作「接入網
ISP就像小盒子,幫你在網路里做通信
而ISP的分層,無非就是,終端太多了,沒辦法不分層

好了,現在你已經明白了網路的層次化

你肯定是知道,
為了在辣么多計算機里,找到目標,我們採用了,有規律的IP地址
而路由器,又叫分組交換機,就是幫我們在公網裡,做IP定址的

最初,IP地址是IPv4
首先,IP地址是分成了五類(ABCDE)

奈何不夠用啊,於是,我們是使用了子網劃分
然鵝,手動分配子網IP,會死人的!
於是,DHCP來了(斜眼笑

md還是不好用啊,於是,誕生了無分類編址(CIDR
奈何,還是不夠用啊
於是,NAT出現啦,於是專用網的IP不再佔用公網IP

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

&>首先,啥是專用網
1.區域網,比如,公用一個路由器的宿舍啊,家啊
2.部分廣域網,比如軍隊、鐵路、交通、電力等部門,擁有自己專用的通信網和計算機網。然鵝,這些網路不對內部外的用戶開放。這些網路覆蓋的地理範圍很廣,因此,這些專用網都是廣域網。

保密性質的廣域網,通信要扯到VPN,寶寶沒學到這裡,先埋個坑

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

來我們先談談區域網內的通信
如果哈,我們是一個大區域網,比如我們公司有一百台電腦,
首先,路由器沒一百個介面讓我插!
其次,如果我不想和公網通信,那我就沒必要用路由器!
所以,鏈路交換機來了!!!

鏈路交換機是基於MAC定址的,因為區域網沒大到必須用IP定址的地步啊
但更準確的說話,鏈路交換機採用了,跨越鏈路層和網路層邊界的協議——ARP
畢竟,ARP要做一個IP到MAC的映射,

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

&>你問我,為啥ARP要做IP到MAC的映射
因為,你在應用層和運輸層里,目的地址都寫得是IP,
不把IP轉化為MAC,咋定址啊?

&>你問我,區域網為啥不用路由器,為啥要用鏈路交換機
交換機功能少,介面多,比路由器划算啊

&>那,區域網和公網怎麼通信呢?
所以,NAT來了啊!!!

分組交換機,也就是路由器,用自己的公網IP,幫你們區域網里的人們,給公網發信息
然後把接受到的信息,再轉發給,那個找他幫忙的人
這就是NAT技術啊混蛋!!!

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

這時一群人說,NAT bulabula不好,我們要拒絕NAT,使用IPv6
那麼就牽扯到了IPv4和IPv6間的通信(雙棧||隧道)

還有啊,IP地址太丑啦,用戶根本記不住 http://xxx.xxx.xxx.xxx
於是乎,域名千呼萬喚始出來
順便帶出來了DNS伺服器

================

哎,好多有趣的還沒講完,像什麼路由演算法啊,校驗方式啊,尋找DNS伺服器和網關地址啊
網路的網路,因吹斯汀~

繼續複習計網了
求好運


你說的「難」,其實更多表現在『不容易記『上。

我教過CS里幾乎所有的課程,覺得計算機網路這門課是CS里一門比較特別的課。特別在於,它有點像政治課,需要記憶的點非常非常的多,而且互相之間關係不緊密。這和CS大部分課的特點相反:編譯原理、數據結構,編程,這些課都有個基本邏輯貫穿始終,一通百通。計算機網路課程不一樣,知識點繁多、鬆散,別說學生記不住,連我教這門課,都需要保證時時查閱課本。

所以這個並不是你的錯,學計算機網路的目的是,當你真的需要用的時候,知道去哪裡查就好了。


樓主跟我們這的教學計劃很像,我們這學期 是 計算機網路和編譯原理,上學期是操作系統。操作系統課敗在一個自娛自樂的老師身上,雖然拿了良,但是沒有學到什麼真正的深奧原理。
至於計算機原理,如果單純看課本聽課會比較枯燥乏味,因為中間的章節都是講協議,但是我們學校有安排實驗課,實驗課時可以模擬各種協議的通信過程,還可以抓取通信時的報文,分析報文的組成(跟課本講的報文格式作對比)。這些實驗課對於理解各個協議很有幫助的,而且,實驗還增添了不少樂趣。
而且,我們還配合了TCP/IP協議選修課,選修課讓我們自己用winsock編寫聊天程序,這個過程其實也有助於理解運輸層和應用層。
如果你們學校沒安排實驗課,恐怕是你們的損失。

我們學校用的是謝希仁編著的課本,藍皮的。如果LZ要複習的話,建議從頭到尾認真把書本看一遍,特別是第三章開始,鏈路層、網路層、運輸層、應用層是重點,要看各種協議的報文格式,看看那些欄位的作用,不用背,理解就行,除了報文格式,還要理解通信過程,比如TCP的三次握手,TCP的可靠傳輸實現方法。
總之,我覺的理解 比較重要,理解了之後自然而然就記住了。

幫人幫到底吧,以下是我們平時布置的課後作業,基本上都是考點,讓你參考下,如果你們教材跟我們的不一樣就算了。
3-09、15、20、22、28、32,
4-05、18、19、20、22、37
5-14、21、23、34
6-10、14、20、30

再啰嗦下,雖然大學教的很多課程對於工作沒有實質性的幫助,但我覺得那些課程都是IT從業者必須要了解的基礎知識,LZ提到的三個課程算是計算機基礎,可惜在我們學校很多學生都不當回事,實在可惜。


沒有真正用路由器交換機搭建過一個區域網,學那些抽象的純理論確實不太容易理解。一定要多做實驗!一定要多做實驗!一定要多做實驗!實踐與理論相結合才是王道。


因為十一五規劃教材太垃圾了。用這個


因為計算機網路和操作系統都是重理論輕實踐。我一直說學操作系統看 Linux kernel 就好。偏偏很多人去看甚麼 Minix —— 可這還算好的,你看大學的操作系統教材有實際的 kernel 代碼嗎?計算機網路看 BSD TCP/IP + Ethernet 就好,可是大多數教材把 ISO OSI 七層講一遍,還搞甚麼八輩子不用的令牌環和 X.25。


因為這門課,把計算機專業,從最底層的數學與電路、到最高層的編程都搞了一遍,還把理科生當文科生用---需要背誦大量知識,因此這門課能否學好,其實非常考驗人的綜合素養。

因此,程序員之間撕逼,拿這門課來開撕,能直接撕掉90%的低端逼與裝逼犯。


感覺編譯比網路和操作系統難得多呢、。。網路一層一層學就好了。。。先學UDP和TCP,再學IP,再學鏈路協議,再學基本的器件,關鍵要做好各層的隔離,就是一層一層的學,學上層的時候把下層當作一個邏輯功能抽象,而不去了解他的具體細節,這樣可以隔離很多不必要的瑣碎,等到各個層都了解,再綜合起來看。操作系統也一樣,不過就是CPU管理(進程、線程)內存管理(包括虛擬內存)硬碟管理(文件系統)以及設備管理(介面)等,每種管理又有不同的演算法和調度策略,從高層抓住脈絡,其他就好辦多了


我是一個在校的大三的學生,知乎里都是專家,我只是說說我的觀點。

我也是前天剛考完計算機網路,我們的老師對這門課也沒有一個系統的掌握,只是按著課本的章節來講課。很無趣。所以上課的時候,大家幾乎都是不聽課的。

最近幾周為了考試,突擊了兩個星期,我認認真真的把計算機網路課本反覆看了大約有兩三遍吧。別的同學都在猜題,我只是踏踏實實把課本從頭到尾看了幾遍(當然後面幾章沒看),當然有些地方看的次數多點。當我感覺對計算機網路有一定的認識的時候,我自己把每一章節的內容歸了一下類,每層的作用,包含的協議,協議的作用。然後就發現其實計算機網路一點都不難,只是比較零碎,計算機網路沒有難題,只是一些很瑣碎的東西,自己歸類整理了以後,認清各種協議的特點和作用,就對計算機網路有了一個認識。考試的時候,考了5個問答題,我一個都沒有背,我只是按照自己的感覺和理解,寫的滿滿的,結果今天老師就把成績公布了,我考試95分,雖說大學的分數不值錢,但是證明我的學習方法是正確的。

學習計算機網路和操作系統這種課程,就是要靠自己的分類整理,自己在全局有了一個認識後,然後再認真做一些成題,應付考試是不成問題的。

當然了,如果在實際的開發中的話,這種方法是遠遠不夠的。配合計算機網路的學習,好好學習一下VC網路編程,做一些實際的項目,比如利用區域網的廣播做一個區域網聊天軟體。考完試了好輕鬆,接下來的幾天我就想做個聊天軟體玩玩。因為之前我也做過不少小東西,只是還沒涉及過網路編程,但我想應該會比較有意思吧。


好吧,作為IT培訓教育專業戶,CCIE專職講師和廣東工業大學客串老師一枚怒答!下面是我上次寫的240頁的計算機網路入門導論課程,是給廣工的師弟和師妹使用的講義,那出來分享給知乎上各位。原文發布在個人微信公眾平台【pinginglab】和51CTO技術博客上,需要詳細內容的話,自己去扒下來吧。內附初級到高階的所有書籍以及個人的一些教學視頻。(知乎的沒法批量上圖片!!!非常不方便!!!微信後台都能32張圖片批量上!!!吐槽完畢!!!200多頁圖片沒法一一上傳,大家需要可以點開下面鏈接自己看具體和詳細的內容)
微信鏈接:慎入!超強240頁PPT!史上最強大的計算機網路導論-by拼客科技CEO·陳鑫傑
51CTO博客:慎入!超詳細240頁PPT!史上最強大的計算機網路導論!
微博鏈接:Sina Visitor System

【最底部有資料下載鏈接!多圖,建議在WIFI下觀看!】

1、課前-一個緣由

離高校開學前還不到一星期的時候,王sir(廣東工業大學計算機網路的王教授)過來公司這邊溝通書籍編製的問題,中午吃飯的時候,他來了一句:「鑫傑,有件事拜託你,9月10號我女兒上武漢大學,一個女生自己去不放心,我到時9號要帶她過去,順便在那邊待一周,要不,你幫我帶一周課程吧。」給一兩百號人上課的場景我經歷的太多了,但是給自己學弟學妹上課,卻讓我突然有點猶豫。一方面,因為我對授課環節這塊太熟悉了,所有學生都有「學習慣性」,所以我怕我這個外來的「客串教授」的授課風格會影響到後續王sir原有的授課風格,就會出現「這個老師講的好,這個老師講的不好XXX」的情況,有時候這種思維和情緒甚至會貫穿學生的整個學習周期;另一方面,時間上不好安排,一周的課程加起來就幾個鍾,根本沒法講到技術的玩意,即便將這個課程整個學期給我講,也最多學個入門級別,另外,學校沒有環境來演示實驗。例如課程PPT裡面的無線破解和流量控制,如果有個環境來演示,那現場的效果肯定要好的多。(但是後面還有更讓我吃驚的,學校用的系統居然還是是windows xp,還有非常難用的鍵盤,這真還得跪了。)還有最重要的一點,因為這塊課程跟自己公司其中的IT培訓業務剛好是重疊的,所以有點忌諱!我不希望學生覺得好像為了做推廣而給他們上課,這是我最不希望看到的結果,所以為了避開這點,在課堂講義上面連自己的名字都挪開了。我可以有很多理由來推掉這個事情,例如最近官網在開發、公司要裝修、市場要推廣……但是因為「廣工」「網路」這兩個對我意義重大的詞,最終我還是接下了這個事情。回來之後,我給自己定了一些要求,例如,過去學校那邊就是發福利的,例如各種書籍啊各種工具啊各種入門視頻啊等等。例如,一定不能出現公司任何營銷和推廣的內容!所以,周三周五只有在課堂快結束進入問答階段的時候,學生提出要我的聯繫方式,我才將個人的基本信息放上去。即便是課下溝通,有學員跟我說有點想往網路安全這個方向走,我也回答這個自己要慎重考慮,方向實際上很多,再看看是否適合自己。好吧,按照這些基本的原則和要求,然後中秋節花了幾天時間,準備了大概240頁的PPT內容。當然,我的另外一個要求是盡量不要出現太密集的文字,最好是圖片然後結合自己的闡述來帶動大家,不然底下學生會直接暈倒。


2、課中-一些感慨

9月10號開始上課,周三和周五是在教學5號樓203給大三上計算機網路(A級),上3和4節的課,大概10點半左右。周末是在教五105給大四上計算機網路(B級),是5到8節的課。10號這天我早早過來這邊,雖然自己的公司離母校很近,但是因為各種雜事,並不經常過來。還是這個霸氣側漏的圖書館,以及監獄式設計的教學樓,儘管我大二休學之後便不再這裡,但這裡還是帶給我太多美好的回憶。有些感慨,有些事情我們永遠沒法預料到。例如,幾年前,我可以大概預想到通過自己的規劃和自身不斷的能力,在IT技能上能夠大概到什麼樣的Level,因為技能學習是線性可控的,只要按照一定的流程和方法來走,肯定是可以達到的;但是我萬萬沒法想到,幾年後我休學、工作、創業之後,我回到母校的時候,這個時候已經不再是坐在下面聽老師講課的「復讀生」,而是站到上面給學生講課的「客串教授」。回到正題,大概離上課還有10來分鐘的時候,我開始準備開投影,本來以為可以用自己的電腦,後面發現要自己帶投影線!這樣的話,我就悲劇的從win8年代回到windows xp年代,還好備了幾手,帶了U盤,將用office 2013版本做的課程講義轉成了office 2003和2007,甚至還有PDF和圖片版本!總有一個版本學校的老式電腦能打開的吧。可以預想的到,這個時候底下有點躁動,「真的是這個老師嗎?」「這麼年輕?!」「應該是研究生吧」「是不是走錯教室了?!」儘管我鬍鬚不刮,手帶腕錶,腳穿皮鞋,也遮擋不住我逆生長的樣貌。按照原有計劃,我就是王Sir偏偏樣貌還是讓自己穿幫了。所以做了簡單介紹,說明代課的情況,然後就進入正式進入課程。課程內容在後面會公布,這裡就不細講,比較讓我出乎意料的是,廣工的師弟師妹還是給足的面子。按照王Sir給我的場景描述,第一堂課因為學生還不認識你,課堂問問題不怎麼回答,課堂搞搞小動作也很正常。還好,這些都沒發生,而且課堂上還挺活躍。例如課堂上我問一些問題,學生能夠及時反饋;課堂上好的一些建議學生會做記錄,然後看到好的PPT,他們用手機和PAD拍下來(突然發現學校好多小土豪...),課間休息階段,有學生過來溝通更具體的知識點;整節課完了之後,有學生過來溝通專業選擇,技術問題等等。這些場景要是在企業培訓課堂裡面,這是平常的不能再平常的事情,但是在目前的本科高校裡面,我覺得已經算達到我預期的要求了。因為想起自己以前在學校,要麼逃課,要麼上課折騰自己的玩意,整個學期連老師是誰都不知道……


3、課後-一些思考

課後有很多師弟師妹主動加我QQ和微信,大部分跟我溝通的問題無非是:不知道自己要走什麼方向?讀了2 3年大學感覺很迷茫怎麼辦?往XXX方向覺得發展前景如何?所以我也在感慨,大學給我們提供了一個自由的平台,但卻沒有給每個人指明一條道路;大學給我們提供了這麼多的書本,但卻沒有讓大家真真正正掌握一門技能!這讓我重新思考了自己在公司的定位和價值。我今年總跟我身邊的同事和朋友講,自己想退出「相聲界」,老老實實做自己的項目,然後寫一本真正意義上的書籍(儘管現在跟王Sir和人民郵電出版社即將出版一本書籍)之後將公司的業務往線上那塊抓一抓,現在看來估計也得推遲一陣子了。例如,今晚還跟廣工網路中心的師弟(已經在工作了)在聊,他跟我說明,廣工網路中心每年招新接近100人左右,用來給校園網路打打雜,但是大部分學生實際上連網線都不會搞,設備都沒有接觸過,有問題還是要上報老師。又如,很多計算機相關的協會和技術興趣小組雖然設立了,但是每年基本除了聚餐就沒有太多實在的活動,沒法學到具體的東西。能否將公司基礎IT課程業務(例如網路、安全和Linux方向)放開,作為公益課走入高校,然後作為試點,再走到其他高校等等。我在想,好是好,但是,這意味著我自己又要拋頭露面了……好吧,最後給大家一些圖片,大家自己感受下,還有,不準笑……(最下面附帶授課PPT)


8號和9號我去上課之前,公司內部某女漢子的截圖:

13號我上完課之後,廣工某漂亮小師妹的截圖:

以下附上部分240頁的授課PPT(有兩堂課,每堂課大概120頁PPT內容)

點擊下面的「閱讀原文」可以通過百度網盤下載此課程導論所涉及的工具、書籍、視頻等內容。(總下載鏈接:百度雲 請輸入提取密碼 密碼:l6im)


謝邀→_→邀請我的那個人分數比我高。

我感覺計網像是偏文科的理科,注重理解,概念比較多,計算量小。這是我最喜歡計網的一點,有時候看課本就像在看小說。

如果只是想通過考試,耐心看一下課本應該能懂。但是如果真要學好計網,除了知道是什麼,還應該思考為什麼。


但是too young啊沒想到課件這麼多。


但是就算這樣,學計網還是比嵌入式輕鬆多了,嵌入式出一個yds的online演算法,起碼就要算上半個鐘,還是帶小數呢。


計算機網路難學嗎?首先下個結論,初中級階段的計算機網路相對來說還不算難學。操作系統也是這樣的。
在初中級階段,它大約要比編譯原理要容易得多。
覺得編譯原理比計算機網路容易的原因大致如下:
1、編譯器的研究和實踐,主要是圍繞CPU和存儲器,只有少數幾個學校和公司玩得轉。而計算機網路的研究和實踐,範圍非常廣泛,參與的學校和公司也非常得多。
2、因此,相對來說,本科教程中的編譯原理的內容容易凝練,而且圍繞著馮.諾依曼結構進行了相當的凝練。因此,編譯原理的目標很明確。在本科教材中,編譯原理開篇就指明了編譯原理的目標,內容,步驟和過程。而且,多半不會講更深入更前沿更複雜的問題(計算機體系結構),估計只能講了最機械的基本部分。這些機械的基本部分,一般直接套用就可以了,即使沒有理解。所以,編譯原理雖然枯燥,但是在初中級階段,並不難「掌握」。
2、然而,計算機網路的背景和內容非常龐雜,散得很開(包括題主所說的操作系統)。特別是由於計算機網路的發展非常混亂,不象CPU掌握在極少數的幾個實體手上,而且各方面理論和技術的發展時而並進、時而交錯,快慢不一。因此,計算機網路的教材要比編譯原理難得多。在現有的教材中,背景、理論、實現交雜在一起,並沒有進行有效地凝練。尤其是很多作者,在思想上受到極大的約束,不敢進行合適的取材和組織。雖然計算機網路是有一個模型OSI/RM模型,雖然這個模型沒有成為現實,但是其價值非常大。但是,教材的作者極其輕視之。
3、國內的教學極其不重視背景介紹,國內的大學極其不重視思想的熏陶,當前教育理論「專家」,根據就跟不上最新科學和技術的發展,抱殘守缺,在理論發展極其迅猛的今天,輕視理論,仇視理論。尤其是當下,大搞所謂的實踐,這樣搞,是要吃大虧的,美國歐洲日本已經吃了大虧。美國自己沒有多少優秀學生,他可以依靠霸主地位,從全世界收割最優秀的學生,中國呢?
4、操作系統跟計算機網路一樣,其誕生和發展的背景、環境也是非常混亂的。

要真正搞懂計算機網路,就要放下所謂的狗屁的實踐這種理念,真正地從源頭上去理解計算機網路,採用最正統的方法學習。
1、要搞懂計算機網路,就必須對計算機網路的誕生和發展的背景有相當程度的了解,這並不容易,尤其是中國這種環境下。計算機網路的誕生一開始就顯得柔性而複雜,千變萬化。此時,計算機的各個方面已經有了很大程度的發展,包括片上匯流排、板級匯流排、串列通信介面、並行通信介面、通道的局部通信等等。另一方面,電信網路也處於一個相當的成熟,並且仍然在不斷發展的階段。要說明一點的是,計算機網路的誕生和發展背景,非常的錯綜複雜,不是一時半會就能夠搞得清楚,需要時時關注。
2、在這種錯綜複雜的局面下,為了能夠入門,首先就要進行「還原」,將計算機網路「還原」到最簡單的模型/情況。附註一下,從中世紀中後期開始,就開始有一種科學研究的方法論,叫做還原論(還原論是20世紀提出的名詞)。還原論一直到現在,都是一個非常不錯的科學研究的方法論,我們國家在這上面錯誤走了一大段彎路,錯誤地將辯證法和還原論對立起來,尤其是中國古代的某些思想火花強行拔高,例如強行將老子和還原論掛上鉤。

(慢慢補充吧。)
而且,計算機網路的使用目的和使用環境使得計算機網路具有了的柔性和複雜性。計算機網路的目的是能夠將信息可靠地從一端經過複雜多變化的環境傳送到另一端。由於計算機網路的誕生的時候,它就面對了各種各樣的複雜的千變萬化的使用環境,使得計算機網路要解決很多複雜的問題,而且這些問題的因素多變,模式不定,無法迴避。

要搞懂計算機網路,就要先搞懂計算機網路的兩個基本功能:傳送信息和共享資源。
共享資源又是在傳送信息的基礎上實現的。
再就是搞清楚一件事:信號在電纜上傳輸時,會有損耗和錯誤、網路設備會壞掉,即物理環境會出各種問題。
現在,科學家就想,如何在這樣的環境下,把信息從一端可靠地傳送到另一端?怎麼實現這個功能,更省事,更簡單,更靈活,更健壯,性能更好?
這是一個很複雜、也很大的問題。
學計算機的同學應該立刻會想到,把一個大問題分解為若干個小問題。分解方法是最常見的按功能劃分。
的確,專家們就是這麼乾的。經過多年的實踐,多年的討論,專家們總結出多層架構,每一層完成和實現信息傳送所需要的一個功能集合,達到一個目的集合。
專家們的思想不同,對信息傳送的所需功能的實現的層次的看法也不同。在計算機網路發展的過程中,出現了不同的多層架構。
最典型的兩種思想是,是在中間的層次中實現更多的功能,還是在層次的底層和高層實現更多的功能?
最終,後一種思想被實踐證明是更好的方法。


關於計算機網路,簡單說幾點。
鄙人從事相關工作時間不長,大概也就三四年的樣子,但基本上可以預見未來幾年還是在這個行業里摸爬。

計算機網路,難不難?對這個問題,我的回答是,入門易,精通難。

這實際上是一個很龐大的學科,從這個學科里衍生出來的職業有專門研究協議制定標準的(IETF那幫人),底層軟硬體開發的(各個廠商里最累的那幫人),系統架構設計的(學的最雜的人),專門負責某個分支領域的設計和實施的(也就是我這個層面的……不好意思除了路由交換其他的我也都是一知半解),以及專門被指揮幹活的(通常是應屆畢業生)

所以,我說他入門易,精通難。說的再直白一點,如果你不去深入研究數據包是怎麼在網路中走的,網路設備中的那些各種稀奇古怪的表項、協議的性能、交換機的架構的話……沒錯,這些都通通不去考慮你也能把網路做起來,事實上,絕大部分中小型的網路工程就是去配個VLAN、規劃IP段、靜態路由,能用上一次OSPF都算是不小的網路項目了(以鄙人從事售前工作所見,一個能用上動態路由協議的網路工程項目造價也得到100w以上了)

所謂入門易,也就是表現在這種地方,所以網路技術給人一種只要你會配個VLAN,會配個靜態路由,再牛逼一點懂個堆疊,懂個鏈路聚合啥的,什麼樣的阿貓阿狗都能來搞一把……

講個小故事,前幾天有個做監控的過來詢價,大意是所有的攝像機都要接在8口交換機上然後全部光纖上行,我粗略估算了下,僅光模塊的成本就要十幾萬,這廝愣了愣,然後說,那什麼,我們再考慮下,重新設計下方案……

電話這一端掛了之後我笑了好久,好多時候非這行的人在我們看來總是這麼萌,總是能提出很多異想天開的方案。

這就是精通難了,我上面提的那些能否精通先不說,即使是一個園區VLAN組網的設計,一旦網路夠大,也會有很多需要去推敲的地方。

所以題主如果覺得計算機網路這門課難,這個基本印象是沒錯的(可能也跟你們所選擇的教材有關,實際上大學裡選擇的計算機網路的教材通常寫的比較雜亂,讓人摸不著頭腦)。但是也不需要太慌,只要循序漸進即可,相對於計算機學科里更複雜的那些編程語言之類的,計算機網路確實是算簡單的了(這幾乎也是我們這個行業里很多人的共識),但是不知道為什麼,好多對網路一知半解的人也是這麼想的,所以我們就經常看到一些主機啊、系統工程師各種花樣賣萌……

畢竟,這是一門劃在工科,但是我這種文科生都能搞定的學科啊!畢竟,他不需要很複雜的數學邏輯啊!(有也是搞開發的人去操心……)

==========================================================================

補充一些學網路的經典書籍

L3,或者說路由部分,《TCP/IP路由技術》,總共有兩卷,網路行業的入門經典,葵花寶典一樣的存在,幾乎不過時的工具書。
L2,或者說交換部分,由羅洋老師翻譯的《CCNP Switch 認證考試指南》,較之我開始學習的時候看過的CCNP書,質量上好了不是一點半點,以至於它現在就躺在我的辦公桌上,忘記什麼了就拿出來翻翻……(題外話,翻譯這本書的羅老師翻譯完了就去轉行幹個體戶了,網路行業對他來說已經是戀無可戀了吧……)

其他值得一看的書:
《數據中心虛擬化技術權威指南》
《IP路由協議疑難解析》
《MPLS 技術構架》

別問我為什麼都是C記的(Cisco),因為我是思科腦殘粉……- -


計算機網路不就是OSI模型的七個層么

你搞明白為什麼是這麼分七層 每一層分別是什麼區別 那就差不多了

剩下的都是細節 背吧


計算機網路是一門應用學科,需要理論與實踐緊密結合,不需要特別的記憶。

記得以前上顧冠群院士《區域網》課程時,課程言語幽默、生動活潑,一堂課下來注意力一直不會分散,所以至今依然印象深刻。但是如果一定要提一些建議,有兩點:

1) 教材編寫不太符合人類學習的規律

先是介紹OSI參考模型,再介紹各層的各實現哪些功能,看著看著就會睡著,因為這些都是非常抽象的概念,童鞋們沒有感性的認識,無法在腦海里建立一個活生生的模型,所以會略顯枯燥,看完會很快忘記。

計算機網路不應該從底層往上層學,而應該從上層往下層學習,為何?因為底層都是為上層服務的,上層的需求才是用戶的需求,知道了需求才會期望底層應該提供那些服務,誠然,底層有很多奇淫絕技,但說到底還是為上層服務的。只有先了解用戶流量所期望底層應該提供的技術保證,然後才會在以後學習底層時,帶著問題去學習,注意力才會更集中。

而如果先上來一個小例子:比如一個區域網兩台電腦如何ping對方,讓童鞋們做做實驗,用網路分析軟體將ping過程中的包全部捕獲下來,然後觀察一下具體有哪些包,各自所實現的功能,可以對 Ethernet / ARP / MAC / IP / ICMP 有一個感性認識,然後再去學習OSI 參考模型,並把那些協議映射到OSI具體的層級,有了動手實驗,再學習抽象模型就不會枯燥了,童鞋們不覺得嗎?

2) 缺少動手實驗

沒有實驗一切全靠記憶,這不是一個好辦法!如果學完一個章節,把這一章節的知識點全部用實驗覆蓋,一次不行,多做幾次,肯定會掌握,不需要記,記也記不住。即使童鞋們不動手實驗,教材里也要充滿著很多實驗可以覆蓋知識點。

對題主的建議是:選擇一本好教材很重要,符合人類學習規律的,剛開始很簡單,能引起你濃厚的興趣,有了這些好的開始,有了開始的背景知識,然後作者慢慢提高難度,這時你也不會覺得難。慢慢地你就會順著作者的思路進入細節的了解。能把一本書寫的深入淺出,本身也是間接反映作者對技術理解的透徹程度。越是能夠寫的淺顯易懂,作者理解的越深刻。


我補個刀。
關鍵是學完之後出來發現,有用的或者說跟自己相關的,真的就只有1/7。

七層分的真漂亮啊!


這個問題問的很好。
但是,《計算機網路》真沒什麼難的。
就這幾十年的歷史,發展脈絡還是很清晰的。
有了兩台電腦在一個工作組,如何連接起來,讓它們通信?在已經有了輸入控制器輸出控制器匯流排結構的基礎上,想到網卡,想到兩台電腦連接的匯流排模式,很難嗎?多台電腦呢?
一個地方的多台電腦聯成了區域網,另一個地方的多台電腦也聯成了區域網,兩個區域網之間如何連接起來?多個區域網呢?
無論是兩台電腦,多台電腦,還是兩個區域網,多個區域網,它們連接起來通信之後,自然會有一些問題,如何解決這些問題呢?
這些問題解決了,保障通信了。那麼,《計算機網路》這門課也學好了。
就這些內容,去學就是了。投入時間就是了。不懂的,就找基礎,把基礎補齊。不管是《自頂向下:top-down》,還是《a system approach》,能搭起《計算機網路》這門課的,也就那些內容而已。去學就是了,我真不知道有什麼難的。


推薦閱讀:

你有哪些用計算機技能解決生活問題的經歷?
為什麼十年前512M內存的電腦用得飛快,而現在4G的還不夠用?
有哪些程序員特有的技能?
筆記本電腦按住電源鍵強行關機,對電腦有傷害嗎?
現在演算法工程師都有哪些分類?

TAG:程序員 | 計算機 | 計算機網路 | 計算機科學 | 計算機專業 |