在上一次課程裡我們介紹了子網的概念和子網的劃分。現在該談到OSI(開放系統互連)參考模型了。網絡協議棧具有重要的意義。但是,還沒有重要到你應該首先學習的程度。許多所謂的網絡課程都是從教你記住OSI模型中的每一個層的名字和這個模型中包含的每一個協議開始的。這樣做是不必要的。甚至第5層和第6層是完全可以忽略的。
國際標准組織(ISO)制定了OSI模型。這個模型把網絡通信的工作分為7層。1至4層被認為是低層,這些層與數據移動密切相關。5至7層是高層,包含應用程序級的數據。每一層負責一項具體的工作,然後把數據傳送到下一層。
物理層(也即OSI模型中的第一層)在課堂上經常是被忽略的。它看起來似乎很簡單。但是,這一層的某些方面有時需要特別留意。物理層實際上就是布線、光纖、網卡和其它用來把兩台網絡通信設備連接在一起的東西。甚至一個信鴿也可以被認為是一個1層設備(參見RFC 1149)。網絡故障的排除經常涉及到1層問題。我們不能忘記用五類線在整個一層樓進行連接的傳奇故事。由於辦公室的椅子經常從電纜線上壓過,導致網絡連接出現斷斷續續的情況。遺憾的是,這種故障是很常見的,而且排除這種故障需要耗費很長時間。
第2層是以太網等協議。請記住,我們要使這個問題簡單一些。第2層中最重要的是你應該理解網橋是什麼。交換機可以看成網橋,人們現在都這樣稱呼它。網橋都在2層工作,僅關注以太網上的MAC地址。如果你在談論有關MAC地址、交換機或者網卡和驅動程序,你就是在第2層的范疇。集線器屬於第1層的領域,因為它們只是電子設備,沒有2層的知識。第2層的相關問題在本網絡講座中有自己的一部分,因此現在先不詳細討論這個問題的細節。現在只需要知道第2層把數據幀轉換成二進制位供1層處理就可以了。
在往下講之間,你應該回過頭來重新閱讀一下上面的內容,因為經驗不足的網絡管理員經常混淆2層和3層的區別。
如果你在談論一個IP地址,那麼你是在處理第3層的問題,這是“數據包”問題,而不是第2層的“幀”。IP是第3層問題的一部分,此外還有一些路由協議和地址解析協議(ARP)。有關路由的一切事情都在第3層處理。地址解析和路由是3層的重要目的。
第4層是處理信息的傳輸層。第4層的數據單元也稱作數據包(packets)。但是,當你談論TCP等具體的協議時又有特殊的叫法,TCP的數據單元稱為段(segments)而UDP協議的數據單元稱為“數據報(datagrams)”。這個層負責獲取全部信息,因此,它必須跟蹤數據單元碎片、亂序到達的數據包和其它在傳輸過程中可能發生的危險。理解第4層的另一種方法是,第4層提供端對端的通信管理。像TCP等一些協議非常善於保證通信的可靠性。有些協議並不在乎一些數據包是否丟失,UDP協議就是一個主要例子。
現在快要到7層了,我們很想知道第5層和第6層有些什麼功能。可以說,它們都是沒有用的。
有一些應用程序和協議在5層和6層。但是,對於理解網絡問題來說,談論這些問題沒有任何益處。請大家注意,第7層是“一切”。7層也稱作“應用層”,是專門用於應用程序的。如果你的程序需要一種具體格式的數據,你可以發明一些你希望能夠把數據發送到目的地的格式,並且創建一個第7層協議。SMTP、DNS和FTP都是7層協議。
學習OSI模型中最重要的事情是它實際代表什麼意思。
假如你是一個網絡上的操作系統。在1層和2層工作的網卡將通知你什麼時候有數據到達。驅動程序處理2層幀的出口,通過它你可以得到一個發亮和閃光的3層數據包(希望是如此)。作為操作系統,你將調用一些常用的應用程序處理3層數據。如果這個數據是從下面發上來的,你知道那是發給你的數據包,或者那是一個廣播數據包(除非你同時也是一個路由器,不過,暫時不用擔心這個問題)。如果你決定保留這個數據包,你將打開它,並且取出4層數據包。如果它是TCP協議,這個TCP子系統將被調用並打開這個數據包,然後把這個7層數據發送給在目標端口等待的應用程序。這個過程就結束了。
當要對網絡上的其它計算機做出回應的時候,每一件事情都以相反的順序發生。7層應用程序將把數據發送給TCP協議的執行者。然後,TCP協議在這些數據中加入額外的文件頭。在這個方向上,數據每前進一步體積都要大一些。TCP協議在IP協議中加入一個合法的TCP字段。然後,IP協議把這個數據包交給以太網。以太網再把這個數據作為一個以太網幀發送給驅動程序。然後,這個數據通過了這個網絡。這條線路中的路由器將部分地分解這個數據包以獲得3層文件頭,以便確定這個數據包應該發送到哪裡。如果這個數據包的目的地是本地以太網子網,這個操作系統將代替路由器為計算機進行地址解析,並且把數據直接發送給主機。
這個過程確實簡化了。但是,如果你能夠按照這個進程來做,並且理解數據包在每一個階段都會發生什麼事情,你就征服了理解網絡的相當大的一部分問題。當你開始討論每一個協議實際上做什麼的時候,一切都會變得非常復雜。如果你剛剛開始學習,在你理解復雜的事情在設法完成什麼任務之前,請你先忽略這些復雜的事情。這樣會提高你的學習熱情。
在以後的文章裡,我們將沿著網絡棧向上旅行,通過討論常用的協議和這些協議的工作原理來詳細研究每一層。
小結
•與其苦鑽OSI模型中的各協議不如好好理解路由器和主機如何利用網絡棧傳輸數據
•2層數據稱作幀,不包含IP地址。IP地址和數據包在3層,MAC地址在2層。
•除非你是一台路由器,通過網絡棧向上發來的數據是給你的,通過網絡棧向下發送的數據是你發送的。