操作系統網絡__網絡基礎

OSI七層模型

     OSI:開放系統互聯模型,是一套較爲完整的網絡體系結構。

     自底向上共有七層,依次是 物理層數據鏈路層網絡層傳輸層會話層表示層應用層。其中前四層是涉及到操作系統層面涉及到數據傳遞服務的,後三層是用來對用戶提供服務的。

wKioL1i6rw7jXKX3AABk42WlTT0591.png

 物理層:物理層最底層的,屬於硬件層面,設計到的主要是電信號的傳遞、物理接口、電氣特性等

     數據鏈路層:數據鏈路層主要是負責在傳輸數據的過程中,向數據包添加MAC【1】包頭等信息;同時數據鏈路層還兼具錯誤檢測和修正的功能(載波監聽多路訪問),一旦數據傳輸錯誤,可以要求重新傳輸數據包,來進行數據修正。

     網絡層:網絡層負責在數據包中添加IP【2】包頭,收發的IP都需要添加,用來選擇通路,即數據發送的路徑。因爲數據的發送可能跨多個網段,中間要經過多個路由器的中轉。

     傳輸層:傳輸層要做的是確定傳輸協議的可靠性,常見的傳輸協議有 TCPUDP 【3】 。同時還要確定端口號 ,每種傳輸協議都有自己特定的端口號,Linux下有65525個端口

     會話層:確定網絡服務是否要經過會話層

     表示層:數據進行數據化,轉變爲計算機可以是被的信息,同時實現加密、壓縮等功能

     應用層:提供用戶接口

【1】:MAC地址是用來確定局域網內的某一臺主機的,局域網之間的通信由交換機實現,交換機只能識別MAC地址。

【2】:IP地址是網絡上主機的唯一標識,網絡上的通信由路由器實現,通過對IP的判斷實現。

【3】:TCP(傳輸控制協議)和UDP(用戶數據報協議)都屬於傳輸協議。UDP的傳輸速度要更快,但不面向連接,也不保證可靠性,會導致數據丟失。使用UDP協議的應用程序需要自己完成丟包重發、消息排序等過程;TCP是一種面向連接的,可靠的協議,傳輸更加的安全可靠。這就好比QQ上發送消息,通常採用的是UDP協議,因爲它不在乎是否發送成功,不進行檢測,沒有網絡之後信息發送失敗;而像大型網絡遊戲,數據的傳輸採用的是TCP協議!

     儘管OSI模型相當的完善,但由於OSI協議實現起來太過複雜,而且效率很低,而且層析劃分不太合理,有些功能在多個層次中重複出現,導致了OSI模型最終也僅僅是一個理論模型,並沒有付諸時間。當然還有一些其他的商業管理方面的原因。

     與此同時,TCP/IP協議隨着因特網在全世界的覆蓋,慢慢成了實際上的國際標準,TCP/IP協議是四層的,但也有一種五層模型,將物理層也劃入該模型,這裏我們是基於協議棧的討論,不和硬件相關,所以這裏以四層模型爲準。(我們可以簡單的認爲這裏的協議棧是純軟件的概念,只涉及了邏輯和數據)



TCP/IP四層模型


wKioL1i6r0bAVHJVAABM557zqV4072.png


     OSI模型到TCP/IP四層模型的對應關係如上。每一層都呼叫它的下一層所提供的網絡來完成自己的需求,每一層的功能如下:

     應用層:應用層是面向用戶的,屬於應用程序之間溝通的層,它要求數據通信必須符合某種邏輯 。常見的服務或協議有 http與httpstalnetDNSSMTPFTP 、代理服務器 等;

     傳輸層:傳輸層與OSI模型中對應的傳輸層功能基本一致,用來確保數據傳輸方式,TCP或UDP,並且確定數據已經被送達並接收,保證了數據包的順序傳送及數據的完整性;

     網際層:提供基本的數據封包,對包頭進行封裝,實現數據包可以發送到目標主機(實現跨網段,但不保證是否被正確接收),有三個重要的協議:IP、IGMP、ICMP【1】


     網絡接口層/鏈路層:網絡接口層是實際發送數據的,對數據封裝了MAC地址包頭,該層是對實際的網路媒體的管理,解決了局域網 之間的數據傳輸。(實際上,TCP/IP並未定義該層的協議,由參與互聯的各網絡使用自己的物理層和數據鏈路層協議,然後與TCP/IP的網絡接口層進行連接)

地址解析協議 ARP 工作在該層

【1】:IGMP-->互聯網組管理協議; ICMP-->互聯網控制報文協議; IP-->網際協議

     ICMP:通常我們使用的ping命令,向某一IP地址發送一個數據包,通過接收回應,判斷本地與該IP二者是否相通。


局域網

     局域網內的所有主機共享同一根主線,所有信息都會發送到線上,這些信息可以被所有主機收到,當主機分析數據包不是給自己的,直接丟棄,丟棄過程對上層不可見

     局域網有以太網令牌環網之分。

     以太網:所有主機都可以向共享線上發送數據;數據發生衝突通過算法調度發送順序;

     令牌環網:誰有令牌誰可以向線上發送數據,類似於線程通信中的鎖

     

     每個局域網都可以叫做一個碰撞域,交換機可以將局域網一分爲n,每個小局域網之間任然可以通信,但可以減小碰撞。

     兩個局域網之間的通信通過路由器實現。


TCP/IP協議棧與數據包的封裝

1、局域網內部的通信

     TCP/IP協議棧分爲四部分,應用層、傳輸層、網際層、鏈路層。

     每一層都有着自己的協議,上面已經說過。這裏以FTP文件傳輸協議爲例,剖析局域網內基於TCP/IP協議的通訊過程。

wKioL1i6r3_RuUVqAAEbchXQX40278.png


數據發送的過程:

     對於四層模型而言,傳輸層以下機制都是有內核提供,應用層由用戶進程提供。由於兩臺主機之間的通信必須依靠到最底層的bit流,因此在應用層的信息,需要從最上層依次傳遞到最下層,期間的每一次協議都會對應用層要發送的信息進程封裝(在數據前加上各自的包頭).

     任何一層都認爲上層交給自己的內容都是數據,我們把上一層交給自己的所有數據叫做該層的有效載荷

wKiom1i6r5qCaHnIAADnf4bjnT8687.png

Appl包頭與用戶數據類型相關,如果用戶使用的是FTP文件傳輸協議的話,Appl就是FTP頭。

     不同的協議層對數據包有不同的稱謂,

                    在傳輸層叫做 段(segment)

                    在網絡層叫做 數據報(datagram)

                    在鏈路層/網絡接口層叫做 幀(frame)

     當數據被封裝成幀之後,會發送到傳輸介質上,至此,數據發送過程結束;到達目的主機之後,每層協議再剝離相應的首部,最後將應用層用戶數據交給應用程序處理,這個過程叫做數據接收

數據接收的過程

     數據的發送過程,由於是自上而下進行封裝,因此當應用程序確定好發送數據之後,封裝流程是唯一,採用的協議也是確定的。

     數據接收的過程中,從下向上,可能是一對多的關係,這是因爲當下層獲得數據之後,不知道該給交給上層的哪個協議來進行解包,所以下層解包之後,向上傳傳輸有效載荷時,必須判斷該有效載荷對應的協議

    當網絡接口層接收到數據之後,首先根據以太幀頭首部中“上層協議”字段,確定該數據幀的有效載荷,然後交給相應的協議去處理。之後的解包過程都是如此,換句話說,以太幀包頭,IP包頭,都包含了“上層協議 ”字段。當解包到TCP包頭之後,根據TCP包頭收首部的“端口號”字段確定該該將數據交給哪個進程,也就是說,用戶層的每個協議都對應着一個端口號,端口號是同一臺主機上標識不同進程的地址

注意:

     1、相同的協議層,都認爲和彼此直接溝通,上層不知道下層做了哪些事。

     2、應用層屬於用戶層,由用戶提供;下三層屬於Kernel層,即內核層。下三層接口之間屬於系統調用。下三層是真正用來處理通信的過程。

2、跨網段之間的通信

     爲了完整性,這裏還是以FTP文件傳輸協議爲例,這裏的跨網段使用的是以太網和令牌環網之間。

     首先我們要知道的是,如果需要跨網段進行通信,需要路由器來實現。以太網和令牌環網之間除了在向共享線上發消息時防止衝突的機制不同,其他的並沒有太大的區別。

鏈路層

     鏈路層 有着以太網和令牌環網等標準。交換機是工作在鏈路層的設備,可以在不同的鏈路層網路之間轉發數據幀,但不同標準下的幀格式不同,因此交換機要將進來的數據包拆掉鏈路層,並重新封裝新的鏈路層之後再發出。

     鏈路層 的主要任務:負責網卡設備的驅動,幀同步(網線上檢測什麼信號算作新幀的開始),衝突檢測(如果檢測到衝突,數據自動重發),數據差錯校驗

網絡層

     網絡層的IP協議是構成Internet的基礎,在Internet上有着大量的路由器,負責根據IP地址選擇合適的路徑轉發數據包。路由器兼具交換機的功能。需要解掉鏈路層和網絡層的包頭,並重新封包

     IP協議不保證傳輸的可靠性,數據包在傳輸過程中可能丟失,可靠性可以在上層協議或應用程序中提供支持。(傳輸層的TCP,或應用程序)可靠性是綜合的,安全到達,順序到達,完整到達,不可重複。

     IP:能夠提供主機到主機的服務,提供了軟件層面上的虛擬化,站在用戶的角度,任然覺得是在直接和同一層通信。類似的虛擬化功能還有(虛擬內存,Linux下一起皆文件)IP可以通過網路路由跨網段通信。對於使用者而言,感覺不到底層的網絡差異。

     網絡層負責點到點的通信,即在主機和路由器,路由器和路由器之間進行通信,而再向上的傳輸層負責的是端到端之間的通信,即主機和主機之間的通信。傳輸層通過TCP協議可以實現IP層傳輸的可靠性,如果在傳輸層使用UDP,則需要應用程序需要自己完成丟包重發、消息排序等工作。




--------muhuizz整理


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章