如何快速學習網絡,思科微軟等
lab的很大一部分是讓你自己從零開始去寫一個真實能用的tcp。寫一遍之後,對tcp工作的原理以及設計思想就會有深得多的理解。我以前對tcp等網絡原理的認識也是一團漿糊,但自從自己寫了一遍之後,腰也不酸了,腿也不疼了,搬磚也更有力氣了。畢竟研究表明,能自己實現一個tcp的人,很少有理解不了tcp原理的。
《計算機網絡:自頂向下方法》
最喜歡看交換機閃爍的燈,閃一下就意味着有一個包從此端口經過…記得N年前,我看到燈閃爍一下,想到的是心跳,在心跳示波器上就是一串脈衝信號,這是計算機網絡傳輸的一個單元,姑且稱為IP包。計算機網絡的數據傳輸,是由N個離散的數據單元(IP包)組成的,再去回憶關於TCP連接的概念,TCP的面向連接,而數據單元IP包卻是離散的,而TCP也是由IP包來承載的,那意味着TCP報文也是離散的,既然是離散的,又談何連接呢?TCP連接是一種邏輯概念,通信雙方通過離散的IP包交互,分享了彼此的序列號、緩存大小等參數,彼此就可以認為和對方是連接的。而在這個邏輯連接上傳輸數據,自然需要對方確認,否則如何知道離散的IP包是否到達對方?而如果遲遲收不到對方的確認,也不能傻傻地等不是嗎?需要將數據再重傳,可以重傳多次,一直到收到對方的確認,這樣即使網絡有短暫的故障,可以通過多次重傳予以克服。而如果重傳了多次還是沒有收到對方的確認,那只有放棄了,告訴用戶發生的一切。這是我看完TCP/IP協議的一點總結,這塊是計算機網絡的核心,比路由協議更重要,所以要花很多時間研究這些最核心的技術。而在研究這些基礎內容時,需要用抓包工具將網絡上離散的數據單元捕獲下來,研究數據單元的時序、數據單元的格式、研究數據單元是由誰觸發產生的,是TCP/IP系統進程、還是用戶進程,對這些細節的越深入,腦海里就會勾勒出一個分層的場景:用戶進程(高層)、TCP/IP系統進程(中層)、硬件網卡(底層),有了分層的概念,就會自然地去想象,數據單元從高層--> 中層-->底層 下沉的過程,以及數據單元從底層 ---> 中層 --->高層上浮的過程,下沉、上浮的過程牽扯到很多細節,這需要看TCP/IP協議。說了一堆,核心思想是,想學好計算機網絡,首先要有熱情,研究TCP/IP協議,做實驗,抓包解析,然後再去看書,再實驗,抓包分析…這個過程是一個周期性的迭代過程,需要時間的積累。