OSI網絡分層介紹
網絡結構的標准模型是OSI模型,由國際互聯網標准化組織定義的網絡分層模型。雖然目前沒有完全按照這種模型實現的網絡協議棧,但是學習這個模型對於我們理解網絡協議還是很有幫助的。
1.OSI網絡分層模型
7層,同一層是對等層,對等層之間規則是一致的。
什么是協議棧?一個網絡上運行的網絡規則。通過協議棧的不同層可以划分為不同層。
2.OSI的七層網絡結構
- 物理層:物理特性(機械特性,功能特性,電器特性),傳輸單位是比特,網卡在物理層
- 數據鏈路層:可靠數據傳輸,物理尋址,數據成幀,數據的檢測重發,流量控制以及鏈路控制
- 網絡層:一個主機到另一個主機,有流量控制,擁塞控制等。數據單位為包。
- 傳輸層:分段,用來保證上一層的會話層能夠傳輸到另一方的會話層。
- 會話層:建立,終止,會話過程。主要功能是提供請求者和提供者之間的通信。
- 表示層:對數據進行處理,包括壓縮,加密,以及格式的轉換
- 應用層:為應用程序提供訪問網絡服務的接口。或者為用戶提供常用的應用,比如電子郵件應用,網絡瀏覽器,QQ這些。。。。。
下三層(物理層,數據鏈路層,網絡層)是通信子網層,為上層提供通信服務。需要注意,OSI並不是一個網絡的結構,他只是告訴我們每一層應該做什么。ISO為每一層都定義了標准,每個標准都有自己的內部標准定義。
3.OSI參考模型中的數據傳輸
- 應用程序調用應用層接口然后進入應用層
- 應用層加上報頭形成對應的協議數據單元,然后傳遞給下一層
- 表示層不關系傳來的內容,對數據進行處理然后再加上表示層的報頭。傳給下一層
- 與上面類似,往下依次加上報頭。在數據鏈路層則不同,需要加上幀頭幀尾,打包成一個數據幀,然后再傳給物理層。尾部是數據的校驗和,用於判斷數據是不是正確發送。
- 物理層將上面傳輸過來的數據發送出去。
主機B和主機A相反,是一個解封的過程,一次經過物,數,網,傳,會,表,應,將主機B發送的數據接收和解包,最后傳遞給應用程序。
- 主機B物理層接收數據,送給數據鏈路層
- 數據鏈路層進行校驗,如果沒有出錯就發給上一層網絡層。
- 與上面類似,依次去掉頭部傳遞給上一層,最后到達B的應用程序中。
TCP/IP 協議棧
上一節對ISO/OSI7層模型做了簡單介紹,由於ISO指定的OSI參考模型過於龐大和復雜,在實現的時候造成了很大困難,所以招到了很多批評。在實際中,TCP/IP協議棧獲得了更加廣泛的應用。主流的操作系統基本上都采用TCP/IP協議棧。
1.TCP/IP協議棧參考模型
從上到下分4個層次:應用層,傳輸層,網絡互聯層,和主機到網絡層。
- 主機到網絡:TCP/IP並沒有給出具體實現,僅僅規定了給上一層的網絡互聯層提供的訪問接口,可以傳輸IP數據包,具體實現隨網絡類型的不同而不同。
- 網絡互聯層:是TCP/IP協議棧的核心。將數據進行分組並發到目的主機或者網絡。有時候為了盡快發送分組,一個數據包的分組可能要經過不同的路徑進行傳遞。這樣會造成分組到主機的順序不是原來發送的順序,這就需要在這一層對分組進行排序。這一層定義了數據包的分組格式和協議,采用的是IP協議,因此網絡互聯層經常被稱為IP層。這一層的功能主要由路由,網際互聯和擁塞控制等。
- 傳輸層:提供源主機和目標主機上的對等層之間可以進行對話的機制。定義了兩種協議,TCP和UDP。TCP是面向連接,可靠的協議。提供了窗口控制,超時重發等方法,將數據發送到互聯網上的其他主機。UDP是不可靠的,無連接的協議,使用與不怕數據丟失,不需要對報文進行排序,流量控制的場景。
- 應用層:將OSI的會話層和表示層取消,功能被合並到應用層,基於TCP協議的有(FTP文件傳輸協議,HTTP超文本傳輸協議),基於UDP的協議有簡化的FTP協議,網絡管理協議SNMP,域名服務DNS,網絡文件共享NFS和SAMBA等。還有兩種方式均有實現的協議,比如P2P協議。
TCP/IP參考模型的層次結構:
此圖的IP層中有網際控制報文協議(ICMP)和地址識別協議(ARP),並不是IP層的一部分,而是和IP層一起工作。ICMP是用來報告網絡上的某些出錯信息。ARP在IP和數據鏈路層之間,它是在32位IP地址和48位局域網地址之間執行翻譯的協議。
2.主機到網絡層協議
對應與OSI的數據鏈路層,有上圖可以看出本層主要為IP協議和ARP協議提供服務,發送和接收網絡數據報。
TCP/IP技術主要基於以太網標准。采用的是一種帶沖突檢測的載波偵聽多路接入的方法進行傳輸(CSMA/CD);
以太網的封包格式(在IP數據的基礎上增加了14個字節):
數據段的長度有一個最大值,以太網為1500,這個特性我MTU(最大傳輸單元),如果比這個值大,在IP層數據要進行分片,使得每個片都小於等於MTU.
CRC用於校驗,保證數據傳輸的正確性,通常由硬件實現,例如網卡設備實現網絡數據的CRC校驗。
3.IP協議
IP協議是TCP/IP協議中最為重要的協議。為TCP,UDP,ICMP提供傳輸的通路。IP層能夠提供子網的互聯,使不同子網之間能傳輸數據。IP層的作用:
- 發現正確的目的主機地址
- 把數據從一個主機傳輸到另一個主機
- 路由選擇:選擇數據在互聯網上的傳送路徑
- 數據報文分段,當大於MTU時,將數據進行分段發送
IP數據如圖所示,頭部長度最短為20個字節。
- 版本 ip協議的版本號,如果為IPV4此字段值為4,如果為IPV6此字段為6
- 首部長度 除去數據的整個頭部的數據長度,32位為單元進行計算,因為首部長度為20個字節,160位,160、/3=5,所以這個字段最小值是5。
- 服務類型 8位如圖所示
優先權現在已經忽略,剩下的分為為最小延遲(D),最大吞吐量(T),最高可靠性(R),最小費用(F).這4個位中最多只用一個位置1,如果全為0,表示為一般服務。
D值為1表示請求低時延
T值為1表示請求高吞吐量、
R值為1表示請求高可靠性
F值為1表示請求低費用
這個主要用在如果有兩個路由方式可以選擇的時候,路由器讀取這些字段,判斷用那種方式。
- 總長度 總長度為16位,表示以字節為單位的數據報文長度。包含IP的頭部和數據部分。以16為單位進行計算。理論上,本字段為16位,2^16-1最大可達到65535個字節的長度。
- 標識和片偏移 IP每發一份數據報文就會填寫一個標識表示此數據包。片偏移表示數據在原數據報文中的偏移地址。
- 生存時間TTL TTL字段的值表示數據報文最多可以經過的路由器數量。一般為32或者64,經過一個路由器TTL減1.
- 協議類型 8位,表示IP上承載的是什么高級協議。
- 校驗和 16位長度的數值,使用循環冗余校驗,作用是包裝IP幀的完整性。
- IP選項 IP選項字段是一個32位的字段,用來表示IP數據段使正常數據還是用作網絡控制的數據。
- 源地址和目的地址 源地址表示發送數據的主機或者設備的IP地址,目的地址為接收數據的主機IP地址。
4.網際控制報文協議(ICMP)
用於傳遞差錯信息,時間,回顯,網絡信息等報文控制數據
- ICMP協議格式
ICMP報文的數據格式
- 類型,表示不同類型的ICMP報文(分類)
- 代碼段用於對類型字段ICMP報文的詳細規定(更詳細划分)
- 校驗和用於校驗
舉例:目標不可達的報文格式
類型字段的值設為3,代碼字段根據實際情況進行設置。第4-7個字節作為保留字,全部設置為0.
5.傳輸控制協議(TCP)
在原有IP協議的基礎上,增加了確認重發,滑動窗口和復用/解復用等機制,提供可靠,面向連接的字節流服務。
優點:
- 有序
- 面向連接
- 可靠,如果有誤不發送確認應答,發送方超時后會自動重發
- 緩沖傳輸
- 全雙工
- 流量控制(滑動窗口)
TCP數據在IP報文中的位置
TCP報文的數據格式
- 源端口號和目的端口號:
表示發送端和接收端的端口,用於確認發送端和接收端的應用程序。
- 序列號:表示分配給TCP包的編號。依次加1
- 確認號:接收成功確認號加1,並返回回來,發送方再次發送的時候從確認號開始
- 頭部長度:TCP頭部的長度,以32位為單位
- 保留位:沒有使用
- 控制位:可以多個位一起設置
- 窗口尺寸:表示本機上TCP協議可以接受的以字節為單位的數目
- 校驗和:用於檢測傳輸數據的正誤
- 緊急指針:16b。只有設置了URG位才有效,它指出了緊接緊急數據的字節的順序編號。
- 選項:經常使用的最大分段長度MSS。指明當前主機所能接收的最大報文長度。
三次握手:
四次握手釋放連接
tcp的封裝和解封裝
如圖所示