(十八)運輸層--概述

運輸層概述

從本文開始,我們將學習運輸層。

進程之間的通信

從通信和信息處理的角度看,運輸層向它上面的應用層提供通信服務,它屬於面向通信部分的最高層,同時也是用戶功能的最底層。當網絡的邊緣部分中的兩臺主機使用網絡的核心部分的功能進行端到端的通信時,只有主機的協議棧纔有運輸層,而網絡核心部分中的路由器在轉發分組時都只用到下三層的功能。

從IP層來說,通信的兩端是兩臺主機。IP數據報的首部明確的標誌了這兩臺主機的IP地址。但“兩臺主機之間的通信”這種說法還不夠清楚,因爲真正進行通信的實體是在主機中的進程,是這臺主機中的一個進程和另一臺主機中的一個進程在交換數據(通信)。因此嚴格的講,兩臺主機進行通信就是兩臺主機中的應用進程互相通信。IP協議雖然能把分組送到目的主機,但是這個分組還停留在主機的網絡層而沒有交付主機中的應用進程。從運輸層的角度看,端到端的通信是應用進程之間的通信。例如,某用戶在使用瀏覽器查找網站的信息時,其主機的應用層運行瀏覽器客戶進程,此時用戶若要發送郵件,那麼主機的應用層就還要運行電子郵件的客戶進程。如下圖所示:

主機A的應用進程AP1和主機B的應用進程AP3通信,而與此同時,應用進程AP2也和對方的應用進程AP4通信。這表明運輸層有一個很重要的功能——複用(multiplexing)和分用(demultiplexing)。這裏的複用是指在發送方不同的應用進程都可以使用同一個運輸層協議傳送數據,而分用是指接收方的運輸層在剝去報文的首部後能夠把這些數據正確交付目的應用進程。

網絡層爲主機之間提供邏輯通信,運輸層爲應用進程之間提供端到端的邏輯通信。根據應用程序的不同需求,運輸層需要有兩種不同的運輸協議,即面向連接的TCP和無連接的UDP。

運輸層的兩個主要協議

TCP/IP運輸層的兩個主要協議都是互聯網的正式標準,即:
(1)用戶數據報協議UDP(User Datagram Protocol)
(2)傳輸控制協議TCP(Transmission Control Protocol)

按照OSI的術語,兩個對等運輸實體在通信時傳送的數據單位叫做運輸協議數據單元TPDU(Transport Protocol Data Unit)。但在TCP/IP體系中,則根據所使用的協議是TCP或UDP,分別稱之爲TCP報文段或UDP用戶數據報。

UDP在傳送數據之前不需要先建立連接。遠地主機的運輸層在收到UDP報文後,不需要給出任何確認。雖然UDP不提供可靠交付,但在某些情況下UDP卻是一種最有效的工作方式。

TCP則提供面向連接的服務。在傳送數據之前必須先建立連接,數據傳送結束後要釋放連接。TCP不提供廣播或單播服務。由於TCP要提供可靠的、面向連接的運輸服務,因此不可避免的增加了許多的開銷,如確認、流量控制、計時器、連接管理等。下表給出了一些應用和應用層協議主要使用的運輸層協議:

運輸層的端口

應用層的所有應用進程都可以通過運輸層再傳送到網絡層,這就是複用。運輸層從網絡層收到發送給各應用進程的數據後,必須分別交付指明的各應用進程,這就是分用。顯然,給應用層的每個應用進程賦予一個非常明確的標誌是至關重要的。解決這個問題的方法就是在運輸層使用協議端口號。雖然通信的終點是應用進程,但只要把所傳送的報文交付目的主機的某個合適的端口,剩下的工作就由TCP和UDP來完成。

請注意,這種在協議棧層間的抽象的協議端口是軟件端口,和路由器或交換機上的硬件端口是完全不同的概念。硬件端口是不同硬件設備進行交互的接口,而軟件端口是應用層的各種協議進程與運輸實體進行層間交互的一種地址。

TCP/IP的運輸層用一個16位端口號來標誌一個端口。但請注意,端口號只具有本地意義,它只是爲了標誌本計算機應用層中的各個進程在和運輸層交互時的層間接口。在互聯網不同計算機中,相同的端口號是沒有關聯的。16位的端口號可允許有65535個不同的端口號,這個數目對一個計算機來說是足夠用的。

由此可見,兩個計算機中的進程要互相通信,不僅必須知道對方的IP地址,而且要知道對方的端口號。運輸層的端口號分爲下面的兩大類:
(1)服務器端使用的端口號
這裏又分爲兩類:

  • 熟知端口號或系統端口號
    數值爲0~1023。IANA把這些端口號指派給了TCP/IP最重要的一些應用程序,讓所有的用戶都知道。當一種新的應用程序出現後,IANA必須爲它指派一個熟知端口,否則互聯網上的其它應用進程就無法和它進行通信。下表給出了一些常用的熟知端口號:

  • 登記端口號
    數值爲1024~49151。這類端口號是爲沒有熟知端口號的應用程序使用的。使用這類端口號必須在IANA按照規定的手續登記,以防止重複。
    (2)客戶端使用的端口號
    數值爲49152~65535。由於這類端口號僅在客戶進程運行才動態選擇,因此又叫做短暫端口號。這類進程留給客戶進程選擇暫時使用。當服務器進程收到客戶進程的報文時,就知道了客戶進程所使用的端口號,因而可以把數據發送給客戶進程。通信結束後,剛纔已使用過的客戶端口號就不復存在,這個端口號就可以供其它客戶進程使用。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章