如何形象地理解計算機網路中的物理層/數據鏈路層/網路層?

和另外四個層,各個層分別在電腦主機中是哪些硬體的表示?


簡單地說,為了實現跨越互聯網的,主機 A 的進程 P1,和主機 B 的進程 P2 之間的通信,我們逐層把這個任務交給 TCP/IP 協議棧。

運輸層:「如果有人能幫我把數據從某個網路中的機器 A 搬到另一個網路中的機器 B,我就可以搞定這個任務,因為我知道不同的數據應該交給機器上的哪個進程。」

網路層:「如果有人能幫我把數據從區域網中直接相連的一台機器搬到另一台機器,我就可以把數據從一個網路搬到另一個網路,因為我知道路線怎麼走,要經過哪些節點。」

鏈路層:「我知道怎樣在區域網中搬數據,還能用 CSMA/CD 協議協調工作,還能用 CRC32 校驗發送的數據和接收的數據是一致的,blabla... But,我只是說說,我不幹苦力活。」

物理層:「樓上的大爺們發話了,兄弟們上。」


上下層間是「服務」關係,對等層間是「對應關係」。理解了這兩個概念,再去理解這些層次關係。

類比與交通系統。

物理層不管內容,只管送給下一站。相對於公交車。

鏈路層只管局域,不管長途。鏈路層有乘車起點和終點。鏈路層還有一個要求,就是發件人到端局只能用同一個公司的服務。鏈路層管公交換乘,但必須是同一區域內換乘。根據起點終點決定換乘路線。

網路層管跨區域交通,區域間的交通同樣有鏈路層和物理層。


網路層:郵局辦公室,對外宣傳稱用戶所有的信件我們都可以直接送達,無論天涯海角。

傳輸層:一個用戶真的信了,寫了封信給自己的朋友,信封註明了目的地,給了郵局。

網路層:郵局辦公室拿到這封信,看到目的地是美國的一個小鎮,這顯然是無法直達的,這個用戶連自己的地址都沒寫,郵局幫他補上了,郵局工作人員查了一下,決定將這個信先郵到北京,並確認了北京某一個國際郵局的地址。

鏈路層:辦公室工作人員將信件交給真正負責郵遞的師傅,並告訴他,寫封信送到北京某某地點,師傅顯然不能將寫封信的目的地刪掉改成北京,而是又封裝了一層信封,寫明目的地是北京。

物理層:出發,出市區這段真堵,過一會兒上了高速,順暢多了。兩個小時,到了北京。

鏈路層:經北京郵局師傅確認,沒錯,就是我們這裡,然後師傅把後來又加的那層信封拆掉了,交給了他的郵局辦公室。

網路層:工作人員查了一下,這個顯然還是無法直達,得先郵寄到洛杉磯,查明地址之後,交給了真正郵遞的師傅。

重複上面的步驟,直到真的可以直達了。,信就到了。

注意,郵局對用戶做出的承諾,是希望用戶別操心這個信怎麼郵的,肯定到。並且直接告訴了運輸的師傅,只管郵遞到北京就行了,以後就是北京郵局的事兒了,我們不用操心。


不知道題主是怎麼界定『理解』這個詞的

如果僅僅是淺層次的理解,那麼類似『郵寄信件』這樣的比喻就可以很好的解釋網路分層。

但如果探索更深一點的解釋呢?比如分層映射到現實中是些什麼?你查了番資料,大概了解了應該對應的是應用程序、操作系統、網卡以及介面。

不過這時候你又有了新的疑問,這個分層是如何實現的呢?於是你去看了協議,知道大概是一層一層的封包或者解包來傳輸數據。

協議只是抽象層次的概念,變換到計算機內部還是指令與數據,所以你開始想從軟硬體結合的層次理解問題,比如操作系統是如何把IP數據包發給網卡的呢?這時候這個問題就大了,你也許要看linux的網路實現,然後再去理解操作系統與外設的通信,中間可能要寫個驅動模塊加深印象,接著也許對『發』這個字的理解不夠,於是去看數字電路,拚命去搞清楚觸發器和時序電路。

到這裡大小問題好像有點清楚了,但是顯然有些細節沒那麼明白,不系統,於是乾脆為linux寫個簡單的網路部分實現,如果允許搞個最簡單的門電路網卡,然後寫個驅動模擬下。

終於,這個世界清凈了,一切都懂了,額,等一下,晶體管是如何起到開關的作用的呢?還是去學學物理吧…


飛機,在天上飛的;

飛行員,聽航空公司的來駕駛飛機;

航空公司,你買票,別的我來管。


先從網路層說起,網路將上層的報文分解為更小的分組。可以說用戶的請求與命令消息隊列在網路模型中一層一層的劃分為更小的規模。

傳輸層---&>網路層:報文---&>分組

網路層---&>數據鏈路層:分組---&>數據幀

數據鏈路層---&>物理層:數據幀---&>比特流

網路層形象來說就是確定走的路線,如何將分組傳遞更加有效的傳遞。(關於檢驗方面暫且不提)

數據鏈路層確定物理地址,源地址目的地址等問題。

物理層傳輸比特流0和1,因為計算機只能識別1與0兩種電路的變化。所以我們將信息轉變成0和1的序列,消息隊列就是這一大串0和1的排列。這也是最底層的東西。

打個比方,就像運輸大量貨物(超大型包裹)一樣,比如說北京到上海。網路層:選擇走哪條線,走京滬高鐵線,還是先轉去武漢,再從武漢轉到上海。要是京滬線修路沒法走(網路線路負載大),那就先轉到武漢,再從武漢到上海。

數據鏈路層:貨物要去哪,北京到上海。然後在設個檢查站,檢查貨物對不對,數量足不足,不足就拒收啦。貨物太大了,就一件一件的送過去,以一個單位一個單位「中包裹」打包發過去。

物理層:可是發送站接收站不發收中型包裹啊,我們只收小包裹,所以就只好把中包裹拆成小包裹發,也是最小的包裹了,(再小你就把貨全拆爛了好吧!!!)


常見的對照關係

物理層 網線 水晶頭

數據鏈路層 交換機

網路層 路由器

傳輸層以上基本都是軟體實現了

對了

計算機中的網卡基本工作在整個協議棧。


物理層:路基、橋樑

鏈路層:鐵軌,道岔,信號系統

網路層:火車、調度系統

傳輸層:鐵路運輸公司

應用層:物流公司、快遞公司


推薦閱讀:

1/3+1/6=計算機是如何得出0.5的?
為什麼201X年還有很多學計算機的不知道C99規範起可以在調用函數時用&傳引用?
適用於個人用戶的最佳數據備份方案有哪些?
學習知識的時候系統學習的利弊?
二進位是如何將加減乘除變換為加法實現的?加法是如何由邏輯運算與、或、異或來實現的?

TAG:計算機 | 計算機網路 |