3 運輸層(一)

運輸層

運輸層第一個關鍵功能:將網絡層的在兩個端系統之間的交付服務擴展到運行在兩個不同端系統上的應用層進程之間的交付服務。

網絡應用程序可以使用多種運輸層協議:例如,因特網有兩種協議,即TCP和UDP。

上面讀起來確實很拗口,可以看看下面:

This sets the stage for examining the first critical function of the transport layer—extending the network layer’s delivery service between two end systems to a delivery service between two application-layer processes running on the end systems.

計算機網絡中最爲基礎性的兩個問題:

1)可靠數據連接:兩個實體怎樣才能在一種會丟失或損壞數據的媒體上可靠地通信。

2)擁塞控制:控制運輸層實體的傳輸速度以避免網絡中的擁塞,或從擁塞中恢復過來。

1 概述和運輸層服務

A transport-layer protocol provides for logical communication between application processes running on different hosts.

從應用程序的角度看,通過邏輯通信,運行在不同進程之間的主機好像直接相連一樣。

運輸層協議是在端系統中而不是路由器中實現的,應用進程使用運輸層提供的邏輯通信功能彼此之間發送報文,而無需考慮承載這些報文的物理基礎設施。

在發送端,運輸層將從發送應用程序進程接收到的報文轉換成運輸層分組(因特網術語:運輸層報文段)。可能實現的方式是:將應用報文劃分爲較小的塊,併爲每塊加上一個運輸層首部一生成運輸層報文段。

注意:網絡路由器僅作用於該數據報的網絡層字段,即它們不檢查封裝在該數據報的運輸層報文段的字段。

1.1 運輸層和網絡層的關係

網絡層提供了主機之間的邏輯通信,而運輸層爲運行在不同主機上的進程之間提供了邏輯通信。

類比一個家庭分發郵件:

application messages = letters in envelopes
processes = cousins
hosts (also called end systems) = houses
transport-layer protocol = Ann and Bill
network-layer protocol = postal service (including mail carriers)

注意:

1)即使底層網絡協議是不可靠的,也就是說網絡層協議會使分組丟失,篡改和冗餘,運輸協議也能爲應用程序提供可靠的數據傳輸服務。

2)即使網絡層不能保證運輸層報文段的機密性,運輸協議也能使用加密來確保應用程序報文不被入侵者讀取。

1.2 因特網運輸層概述

因特網(更一般地將是一個TCP/IP網絡)爲應用層提供了兩種截然不同的可用運輸層協議:

1)UDP(用戶數據報協議):爲調用它的應用程序提供一種不可靠,無連接的服務。

2)TCP(傳輸控制協議):爲調用它的應用程序提供一種可靠的,面向連接的服務。

注意:在因特網有關環境中,運輸層分組稱爲報文段。接下來我們將TCP和UDP分組統稱爲報文段,而將網絡層分組稱爲數據報

因特網的網絡層協議IP(網際協議):IP爲主機之間提供邏輯通信,IP的服務模型是盡力而爲交付服務,但它不做任何確保。因此,IP被稱爲不可靠服務。每臺主機至少有一個網絡層地址,即所謂IP地址。

UDP和TCP服務模型:UDP和TCP最基本的責任是,將兩個端系統間IP的交付服務擴展爲運行在端系統上的兩個進程之間的交付服務。將主機間交付擴展到進程間交付被稱爲運輸層的多路複用與多路分解

UDP提供的服務:進程到進程之間數據交付和差錯檢查。

TCP提供的服務:

1)可靠數據傳輸:通過使用流量控制,序號,確認和定時器,TCP確保正確地,按序第將數據從發送進程交付到接收進程。

2)擁塞控制:防止任何一條TCP連接用過多流量來淹沒通信主機之間的鏈路和交換設備。

2 多路複用和多路分解

運輸層的多路複用與多路分解:指的就是將由網絡層提供的主機到主機交付服務延伸到爲運行在主機上的應用程序提供進程到進程的交付服務。

注意,下面將在因特網環境中討論這種基本的運輸層服務。多路複用和多路分解服務是所有計算機網絡都需要的。

多路分解:將運輸層報文段中的數據交付到正確的套接字的工作稱爲多路分解。

實現多路分解:在主機上的每個套接字能夠分配一個端口號,當報文段到達主機時,運輸層檢查報文段中的目的端口號,並將其定向到相應套接字。然後報文段中的數據通過套接字進入其所連接的進程。

多路複用:在源主機從不同套接字中收集數據塊,併爲每個數據塊封裝上首部信息從而生成報文段,然後將報文段傳遞到網絡層,所有這些工作稱爲多路複用。

運輸層多路複用要求:

1)套接字有唯一標識符。

2)每個報文段有特殊字段來指示該報文段所要交付到的套接字。

2.1 無連接的多路複用與多路分解

通常,應用程序的客戶端讓運輸層自動地分配端口號,而服務器端則分配一個特定的端口號。

當從網絡達到UDP報文段時,主機B通過檢查該報文段中的目的端口號,將每個報文定向(分解)到相應的套接字。

一個UDP套接字是由一個二元組來全面標識的,該二元組包含一個目的IP地址和一個目的端口號。因此,如果兩個UDP報文段有不同的源IP地址或源端口號,但具有相同的目的地址和目的端口號。那麼,這兩個報文段將通過相同的目的套接字被定向到相同的目的進程。

源端口號的作用在於,服務器可以使用recvform()方法從其客戶接收到的報文段中提取客戶端(源)端口號,然後將所提取的源端口號作爲目的端口號,向客戶發送一個新的報文段。

2.2 面向連接的多路複用與多路分解

TCP套接字是由一個四元組(源IP地址,源端口號,目的IP地址,目的端口號)來標識。

當一個TCP報文從網絡中到達一個主機時,該主機使用全部4個值來將報文段定向(分解)到相應的套接字。

特別與UDP不同的是,兩個具有不同源IP地址或源端口號的到達TCP報文段被定向到兩個不同的套接字,除非TCP報文段攜帶了初始創建連接的請求。

TCP客戶-服務器的例子中:

1)TCP服務器首先有一個”welcoming socket”,在某一個端口上等待來自TCP客戶的連接建立請求。

2)TCP客戶創建一個套接字併發送一個連接建立請求報文段(一個連接請求包含:一個目的端口號;TCP首部特定“連接建立位”置位的TCP報文段)。

3)定位到服務器進程後,該服務器進程則創建一個新的套接字”connection Socket”。

4)新的套接字”connection Socket”通過4個值來標識:①請求連接報文段中的源端口號;②源主機IP地址;③該報文段中的目的端口號;④自身的IP地址。

5)後續到達的報文段,如果他們的源端口號,源主機IP地址,目的端口號,目的IP地址與上述4個值匹配,則被分解到這個套接字。

2.3 Web服務器與TCP

事實上。連接套接字與進程之間並非總有着一一對應的關係,當今高性能Web服務器通常只使用一個進程,但爲每個新的客戶連接創建一個具有新連接套接字的新線程。

3 無連接運輸:UDP

運輸層最低限度必須提供一種複用分解服務,以便在網絡層與正確的應用級進程之間傳遞數據。

1)UDP從應用進程得到數據,附加上用於多路複用/分解服務的源和目的端口號字段,以及兩個其他小字段,然後將形成的報文段交給網絡層。

2)網絡層將該運輸層報文段封裝到一個IP數據報中,然後盡力而爲地嘗試將此報文段交付給接收主機。

3)如果該報文段到達接收主機,UDP使用目的端口號將報文段交付給正確的應用程序。

適用UDP的場合:

1)關於何時、發送什麼數據的應用層控制更爲精細。(無擁塞機制)

2)無需建立連接。(不會引入建立連接的延遲)

3)無連接狀態。(連接狀態包括接收和發送緩存、擁塞控制參數以及序號與確認號的參數。)

4)分組首部開銷小。(每個TCP報文段都有20個字節的首部開銷,而UDP僅有8字節的開銷。)

下圖表示了使用TCP/UDP的一些常見應用:

有兩點簡記:

1)UDP中缺乏擁塞控制能夠導致UDP發送方和接收方之間的高丟包率,並擠垮了TCP會話,這是一個潛在的嚴重問題。

2)使用UDP的應用是可以實現可靠數據傳輸的,這可通過在應用程序自身中建立可靠性機制來完成。

3.1 UDP報文段結構

UDP首部只有4個字段,每個字段由兩個字節組成,通過端口號可以使目的主機將應用數據交給運行在目的端系統中的相應進程(即執行分解功能)。長度字段指示了UDP報文段中的字節數(首部+數據)。An
explicit length value is needed since the size of the data field may differ from one UDP segment to the next.

3.2 UDP校驗和

雖然UDP提供差錯檢測,但它對差錯恢復無能爲力.UDP的某種實現只是丟棄受損的報文段;其他實現是將受損的報文段交給應用程序並給出警告。

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