個人計算機裡面包含網路7層協議的所有協議嗎,每一層分別對應哪個部分?
那叫 ISO-OSI 7層模型,不是協議。
所謂模型,是一種用來「展示」的東西,並不一定實際存在,也不一定和實物完全對應。
比如飛機模型、軍艦模型、樓盤模型等等。
ISO-OSI 7層模型也一樣。它只是給你展示了「一個完整的網路通信系統應該具備哪些層面」;但它並沒有實現任何東西——你看到的主炮只是幾根實心塑料棒而已。
並且,你也絕不能按照模型來設計實際系統——比如你不能像模型一樣,直接往炮塔里插幾根鋼管冒充大炮;模型可能是在一整塊材料上雕出來的,你去哪找軍艦那麼大一塊鋼、又怎麼把它雕成軍艦?
不管模型做的有多逼真,它都不是設計圖紙。
事實上,ISO-OSI 7層協議甚至都不是實物模型。它至多算是某種設計原型的模型。
真正照著實物拓制模型的話,應該是TCP/IP協議的四層模型。
反正不管7層還是4層都是模型,學到後面都得換實物。
只不過,7層模型淺顯直白的列出了網路系統需要注意的各大要點,更適合用於教學。所以絕大部分講網路的書籍都喜歡就著7層模型開講。
協議則是有法律效力的文書規範。裡面每句話、每個字甚至每個標點,都是要不折不扣落到實處的。
別說像模型那樣弄實心塑料棒冒充大炮了;造出的大炮,無論射程、射速、壽命、火控系統等等諸多參數哪怕只是差了一丁點,都不能算實現了「協議」。
——————————————————————————————
弄清了這個關係,我們才可以談論現有計算機系統諸組件和ISO-OSI 7層模型之間的對應關係。
現有的PC主板,至少都會給你集成一塊網卡、並對外提供一個RJ-45介面。
想上網,你得弄根網線,兩頭按規定線序裝上水晶頭,然後插入這個RJ-45口。
如果水晶頭尺寸過大或過小、網線不是符合標準的雙絞線、另一端隨便擰到個插銷上插進了220v插座……你覺得自己可以上網嗎?
另一端接USB線上呢?或者,直接用入戶光纖照到水晶頭上,能上網嗎?
想正常通信,你就必須遵守協議。
比如說,你的主板製造商就要求,你必須找到符合RJ-45標準的水晶頭、並按照標準規定的某類線序將其和3類或5類或超5類雙絞線可靠連接,然後把一端的水晶頭插進主板RJ-45插口、另一端插進路由器/交換機/數據機的RJ-45插口,這才可能正確通信。
實際上,為了正確通信,還必須規定雙絞線里每根線的作用、信號電壓/調製/傳輸/糾錯等等細節(比如乙太網用的「CSMA-CD」協議)。
這些,都屬於物理層。
物理層協議有很多很多種。這裡僅僅提到了乙太網用的雙絞線+RJ45介面+CSMA-CD。
其它還有很多,如過去流行過的同軸電纜、衛星通信用的微波信號、現在流行的入戶光纖的光信號、無線路由器wifi信號等等,都有各自不同的物理層協議。
其它各層也都和物理層類似。都必須有一個雙方都能接受和理解的共同前提,才可能有效通信。
只是各層的設計目標不同,所以物理層關心信號類型、幅度、介面性狀等等細節,而且其它層就不用關心這些了(它們有自己的問題要解決)。
你看,從模型到實現,細節一下子就多了很多,是吧?
不僅如此。模型分為7層,但按照7層來設計卻未必最佳。
事實上,這個模型的分層過細、過於複雜,實現代價很高,所以招致不少批評。真實的協議設計並不一定要按這個模型來(事實上是「從不按照這個模型來」)。
不過,雖然大家都不按7層模型給網路分層;但一個實用系統還是會自下而上實現7層模型裡面提到的各要素的。
比如說,乙太網協議,它實際上就同時實現了第一和第二兩層;而IP協議則實現了第三層(IP協議不關心第一、二層,也沒有定義它們,只是提了一些很容易滿足的基本要求);TCP和UDP實現了第四層,同時TCP協議還(部分?)實現了第五層;然後,FTP/SNMP等應用層協議直接整合了會話層和表示層——這個TCP/IP協議的四層模型,才是真實被使用的網路模型。
網路模型分層的最大好處是,各層之間相互獨立,可以「抽換」成不同的協議但不影響上層實現。
舉例來說,乙太網、WIFI、光纖網等等,它們都實現了一二層;而IP協議是第三層,所以就可以用它們來承載IP協議。
不僅如此,既然下層協議只要能完成一些基本要求就可以用來承載IP協議;那麼更上層協議當然也可以承載IP協議。
比如說,我們可以用TCP/UDP協議來傳輸我們自己構造的TCP/IP包(甚至乙太網的MAC包),這就弄出了一個「網路中的網路」;我們甚至還可以通過虛擬硬體,把這個「網路中的網路」接入主機所在網路—— 一些網路代理軟體(比如OpenVPN等)就是依靠這個原理工作的。
那麼對open vpn來說,4層的TCP/UDP網路被它當作2層網路來承載IP協議,於是就弄出了兩份的第3、第4層——你說這個網路模型應該是什麼樣子的?
總之,ISO-OSI7層模型只是個模型;計算機系統實現了該模型提出的、實現網路應用所必需的全部要素,但未必按它的模型分層。
通常使用的互聯網並沒有直接使用OSI的7層模型來構造網路協議,而是使用了TCP/IP協議棧,但是它們之間有如下的對應關係:
也就是說,我們通常使用的網路是基於TCP/IP4層模型構造的協議系統。
再說計算機,計算機和網路相關的有網卡和操作系統。
網卡工作在物理層和數據鏈路層,根據上面的表,在TCP/IP協議棧中工作在網路介面層。它直接負責數據幀的(解)封裝,再以對應鏈路的網路電氣特性規範將數據發送到傳輸介質上,或者接受數據幀並對其進行解封裝,並交付給上層來處理。
到了操作系統這個層級上,一般的上層協議基本都支持,這包括從網路層到應用層之間,但是需要明確的是,具體到某個協議,還應該看是否安裝了該協議或者相關服務。
舉個栗子叭
在Windows下,現在的版本默認並沒有開啟Telnet服務,需要在控制面板里打開,且Windows Server還額外提供「Telnet伺服器」的選項
那是不是說操作系統這個層次上就不支持底層協議呢?應該也並非是這樣,比如ARP,但是其本質功能是由網卡實現的,操作系統提供了介面,用戶可以查看獲取的結果或者執行相應的命令。
還有如果把個人計算機安裝多塊網卡,當成路由器使用,那麼還應該額外配置各種路由協議,所以,上層的具體支持的協議應該服務於總體的需求。另外可以參考:
計算機里的各種「協議」是怎麼被設置進去的啊?是安裝軟體么?還是裝機的時候就被設置進去了? - Windroid 的回答
中職狗表示剛翻書翻到這一頁休息一下居然刷出了題主的問題
推薦閱讀:
※交換機mac表的獲取?
※rip,ospf屬於應用層協議,但是路由器只是工作在下三層啊,網路層,數據鏈路層,以及物理層,這怎麼解釋啊?
※關於IP分組的分段是什麼原理?
※ipconfig下的IPv4地址是什麼意思?
※IP層接收到比MTU大的數據包會先分片再重組,隨後在傳遞給上層協議(比如UDP)處理嗎?