1. 程式人生 > >計算機網路的五層協議體系

計算機網路的五層協議體系

寫這篇部落格,主要是看了謝希仁的計算機網路那本書,計算機專業的朋友在大學期間都學過那本教材,近日重讀特寫這篇部落格。

五層模型主要是結合了osi的七層和tcp/ip的四層得出,主要是物理層、資料鏈路層、網路層、傳輸層、應用層五層,下層向上層提供服務,上層向下層提供介面。作為一個iOS開發者接觸比較多的就是上面兩層,所以本文也主要介紹上面兩層。

傳輸單位

先講一講各層的傳輸單位,應用層是報文(message),報文在傳送之前一般會劃分成為等長的資料段,在每段前面加上一些必要的控制資訊組成的首部後,就構成了一個分組(packet),也叫做包,首部也可叫包頭。無論在哪一層傳送的資料單元,習慣上都可以籠統地用分組來表示。

傳輸層主要使用TCP和UDP,如果使用TCP的話,單位是報文段(segment),UDP的單位是使用者資料報。在傳送資料時,網路層把傳輸層產生的報文段或者使用者資料報封裝成分組或包進行傳送,由於網路層使用IP協議,分組也叫做IP資料報,簡稱資料報。 資料鏈路層將網路層交下來的IP資料報組裝成幀(framing),物理層單位是位元,就是0和1。

中間裝置

從一般的概念講,講網路互聯起來要使用一些中間裝置,物理層使用的中間裝置叫做轉發器(repeater),資料鏈路層使用的中間裝置叫做網橋或橋接器(bridge),網路層使用的中間裝置叫做路由器(router),網路層以上使用的中間裝置叫做閘道器(gateway)。

物理層

接下來簡單介紹一下物理層,首先需要明白的是物理層不是指具體的物理裝置或者訊號傳輸的物理媒體,而是指在物理媒體之上為上一層(鏈路層)提供一個傳輸原始位元流的物理連線。這一層實現的硬體是集線器(hub),它對接收到的訊號進行再生整形放大,以擴大網路的傳輸距離,同時把所有節點集中在以它為中心的節點上。

資料鏈路層

資料鏈路層協議有許多種,但是有三個基本問題則是共同的,這三個問題就是:封裝成幀、透明傳輸、差錯檢測。關於差錯控制,位元在傳輸過程中可能0變1,1變0,這叫做位元差錯,資料鏈路層廣泛使用了迴圈冗餘檢驗CRC(Cyclic Redundancy Check)。資料鏈路層使用兩種通道:點對點通道和廣播通道,點對點協議PPP(point-to-point protocol)則是點對點通道常用的協議,也是該層最廣泛的協議,工作在該層的硬體是網橋。

網路層

第三層是網路層,網路層向上層提供的是無連線的資料報服務,資料報服務的可靠通訊應該由使用者主機來保證、連線的建立可以不需要、每個分組都有終點的完整地址、分組獨立選擇路由進行轉發,當結點出故障時,故障結點可能會丟失分組,一些路由可能會發生改變,到達終點不一定按傳送順序,端到端的差錯控制和流量控制由使用者主機負責。網路層不提供服務質量的承諾,IP資料報首部中的檢驗和欄位,只檢驗首部是否出現差錯而不檢查資料部分。如果主機中的程序之間的通訊需要是可靠的,那麼就由網路的主機中的運輸層負責(包括差錯處理、流量控制等),IP協議是該層的核心協議,IP協議的主要功能就是無連線的資料報傳輸、資料報路由選擇和差錯控制。

傳輸層

第四層是傳輸層,它屬於面向通訊的最高層,同時也是使用者功能中的最底層。當網路的邊緣部分中的兩個主機使用網路的核心部分的功能進行端到端的通訊時,只有主機的協議棧才有傳輸層,而網路核心部分中的路由器在轉發分組時都只用到下三層的功能。網路層是為主機之間提供邏輯通訊,而傳輸層為應用程序之間提供端到端的邏輯通訊。埠是應用層各協議程序與運輸實體進行層間互動的一種地址,傳輸層的埠號分為兩大類,一是伺服器使用的埠號,這裡又分兩類,熟知埠號,也叫系統埠號,數值為0~1023,例如FTP(21)、HTTP(80)、SMTP(25)等,另一種是登記埠號,數值在1024~49151;另一類是客戶端使用的埠號,數值在49152~65535之間。

傳輸層有一個重要的功能是複用和分用,複用是指傳送方不同的應用程序可以使用同一個傳輸層協議傳送資料,而分用是指接收方的傳輸層在剝去報文的首部後能夠把這些資料正確交付到目的程序。 傳輸層有兩個協議,面向連線的TCP和無連線的UDP。UDP是無連線的,使用盡最大努力交付,即不可靠交付,UDP是面向報文的,UDP沒有擁塞控制,因此網路出現的擁塞不會使源主機發送速率降低,UDP支援一對一、一對多、多對一、多對多的互動通訊,UDP的首部開銷小。TCP是面向連線的傳輸層協議,TCP連線只能是一對一的,它提供可靠的交付服務,也就是說,通過TCP連線傳送的資料,無差錯、不丟失、不重複、並且按序到達,TCP提供全雙工通訊,TCP是面向位元組流的,TCP把應用程式交下來的資料塊看成無結構的位元組流,TCP不保證接收方應用程式收到的資料塊和傳送方應用程式所發出的資料塊具有對應的大小關係(例如,傳送方應用程式交給傳送方TCP共10個數據塊,但接收方的TCP可能只用4個數據塊就把收到的位元組流交付給了上層的應用程式,但接收方應用程式收到的位元組流必須和傳送方應用程式發出的位元組流完全一樣)。

TCP連線的端點叫做套接字(socket)或插口,即(IP地址:埠號),每一條TCP連線唯一地被通訊兩端的兩個端點(即兩個套接字)所確定。

TCP的運輸連線有三個階段,即連線建立、資料傳送、連線釋放。TCP連線建立的過程要使每一方能夠確定對方的存在,主動發起連線建立的應用進行叫做客戶(client),被動等待連線建立的應用程序叫做伺服器(server),連線建立的過程叫做三次握手,假設A為客戶,B為伺服器,A傳送一個報文給B,B發回確認,然後A再加以確認,來回共三次。

tcp3

連線的釋放需要傳送四個包,因此成為四次揮手。客戶端或伺服器都可以主動發起揮手動作。

tcp4

應用層

第五層是應用層,FTP(對應應用,檔案傳送)、HTTP(對應應用全球資訊網)、TELNET(遠端終端接入)、SMTP(電子郵件)使用的傳輸層協議都是TCP,DNS(名字轉換)、TFTP(檔案傳送)、專用協議(IP電話、流式媒體通訊)等使用的傳輸層協議都是UDP。 以上就是計算機網路的五層協議。