一、傳輸層提供的服務(wù)
1、傳輸層的功能
????????從通信和信息處理的角度看,傳輸層向它上面的應(yīng)用層提供通信服務(wù),它屬于面向通信部分的最高層,同時也是用戶功能中的最底層。傳輸層位于網(wǎng)絡(luò)層之上,它為運行在不同主機上的進程之間提供了邏輯通信,而網(wǎng)絡(luò)層提供主機之間的邏輯通信。顯然,即使網(wǎng)絡(luò)層協(xié)議不可靠(網(wǎng)絡(luò)層協(xié)議使分組丟失、混亂或重復(fù)),傳輸層同樣能為應(yīng)用程序提供可靠的服務(wù)。傳輸層的功能如下:
????????1)傳輸層提供應(yīng)用進程之間的邏輯通信(即端到端的通信)。與網(wǎng)絡(luò)層的區(qū)別是網(wǎng)絡(luò)層提供的是主機之間的邏輯通信;
????????2)復(fù)用和分用。復(fù)用是指發(fā)送方不同的應(yīng)用進程都可以使用同一個傳輸層協(xié)議傳送數(shù)據(jù);分用是指接收方的傳輸層在剝?nèi)笪牡氖撞亢竽軌虬堰@些數(shù)據(jù)正確交付到目的應(yīng)用進程。
????????3)傳輸層還要對收到的報文進行差錯檢驗(首部和數(shù)據(jù)部分)。而網(wǎng)絡(luò)層只檢查IP數(shù)據(jù)報的首部,不檢驗數(shù)據(jù)部分是否出錯;
????????4)提供兩種不同的傳輸協(xié)議,即面向連接的TCP和無連接的UDP。而網(wǎng)絡(luò)層無法同時實現(xiàn)兩種協(xié)議(即在網(wǎng)絡(luò)層要么只提供面向連接的服務(wù),如虛電路;要么只提供無連接服務(wù),如數(shù)據(jù)報,而不可能在網(wǎng)絡(luò)層同時存在這兩種方式)。
2、傳輸層的尋址與端口
1、端口的作用
? ? ? ? 端口能夠讓應(yīng)用層的各種應(yīng)用進程將其數(shù)據(jù)通過端口向下交付給傳輸層,以及讓傳輸層知道應(yīng)當(dāng)將其報文段中的數(shù)據(jù)向上通過端口交付給應(yīng)用層相應(yīng)的進程。端口是傳輸層服務(wù)訪問點(TSAP),它在傳輸層的作用類似于IP地址在網(wǎng)絡(luò)層的作用或MAC地址在數(shù)據(jù)鏈路層的作用,只不過IP地址和MAC地址標(biāo)識的是主機,而端口標(biāo)識的是主機中的應(yīng)用進程。
? ? ? ? 數(shù)據(jù)鏈路層的SAP是MAC地址;網(wǎng)絡(luò)層的SAP是IP地址;傳輸層的SAP是端口;
? ? ? ? 在協(xié)議棧層間的抽象的協(xié)議端口是軟件端口,它與路由器或交換機上的硬件端口是完全不同的概念。硬件端口是不同硬件設(shè)備進行交互的接口,而軟件端口是應(yīng)用層的各種協(xié)議進程與傳輸實體進行層間交互的一種地址。傳輸層使用的是軟件端口。
2、端口號
? ? ? ? 應(yīng)用進程通過端口號進行標(biāo)識,端口號長度為16bit,能夠表示65536(2^16)個不同的端口號。端口號只具有本地意義,即端口號只標(biāo)識本計算機應(yīng)用層中的各進程,在因特網(wǎng)中不同計算機的相同端口號是沒有聯(lián)系的。根據(jù)端口號范圍可將端口分為兩類:
? ? ? ? 1)服務(wù)端使用端口號:這里又分為兩類,最重要的一類是熟知端口號,數(shù)值為0~1023,IANA(互聯(lián)網(wǎng)地址指派機構(gòu))把這些端口號指派給了TCP/IP最重要的一些應(yīng)用程序,讓所有的用戶都知道。另一類稱為登記端口號,數(shù)值為1024~49151。它是供沒有熟知端口號的應(yīng)用程序使用的,使用這類端口號必須在IANA登記,以防止重復(fù)。

? ? ? ? 2)客戶端使用的端口號:數(shù)值為49152~65535。由于這類端口號僅在客戶進程運行時才動態(tài)地選擇,因此又稱短暫端口號(也稱臨時端口)。通信結(jié)束后,剛用過的客戶端口號就不復(fù)存在,從而這個端口號就可供其他客戶進程使用;
3、套接字
? ? ? ? 在網(wǎng)絡(luò)中通過IP地址來標(biāo)識和區(qū)別不同的主機,通過端口號來標(biāo)識和區(qū)分一臺主機中的不同應(yīng)用進程。在網(wǎng)絡(luò)中采用發(fā)送方和接收方的套接字(socket)組合來識別端點。所謂套接字,實際上是一個通信端點,即:套接字 = (主機IP地址 + 端口號);它唯一標(biāo)識網(wǎng)絡(luò)中的一臺主機和其上的一個應(yīng)用(進程)。
3、無連接服務(wù) 與 面向連接服務(wù)
? ? ? ? 面向服務(wù)就是在通信雙方進行通信之前,必須先建立連接,在通信過程中,整個連接的情況一直被實時地監(jiān)控和管理。通信結(jié)束后,應(yīng)該釋放這個連接。
? ? ? ? 無連接服務(wù)是指兩個實體之間的通信不需要先建立好連接,需要通信時,直接將信息發(fā)送到“網(wǎng)絡(luò)”中,讓該信息的傳遞在網(wǎng)上盡力而為地往目的地傳送。
? ? ? ? TCP/IP協(xié)議族在IP層之上使用了兩個傳輸協(xié)議:一個是面向連接的傳輸控制協(xié)議(TCP),采用TCP時,傳輸層向上提供的是一條全雙工的可靠邏輯信道;另一個是無連接的用戶數(shù)據(jù)報協(xié)議(UDP),采用UDP時,傳輸層向上提供的是一條不可靠的邏輯信道。
? ? ? ? TCP提供面向連接的服務(wù),在傳送數(shù)據(jù)前必須先建立連接,數(shù)據(jù)傳送結(jié)束后要釋放連接。TCP步提供廣播或組播服務(wù)。由于TCP提供面向連接的可靠傳輸服務(wù),因此不可避免地增加了許多開銷,如確認、流量控制、計時器及連接管理等。這不僅使協(xié)議數(shù)據(jù)單元的頭部增大很多,還要占用許多的處理機資源。因此TCP主要適用于可靠性更重要的場合,如文件傳輸協(xié)議(FTP)、超文本傳輸協(xié)議(HTTP)、遠程登錄(TELNET)等;
? ? ? ? UDP是一個無連接的非可靠傳輸層協(xié)議。它在IP之上僅提供兩個附加服務(wù):多路復(fù)用 和 對數(shù)據(jù)的錯誤檢查。IP知道怎樣把分組投遞給一臺主機,但不知道怎么把它們投遞給主機上具體應(yīng)用。UDP在傳送數(shù)據(jù)之前不需要先建立連接,遠程主機的傳輸層收到UDP報文后,不需要給出任何確認。由于UDP比較簡單,因此執(zhí)行速度比較快、實時性好。使用UDP的應(yīng)用主要包括:小文件傳送協(xié)議(TFTP)、DNS、SNMP 和 實時傳輸協(xié)議(RTP);
? ? ? ? IP數(shù)據(jù)報 和 UDP數(shù)據(jù)報 的區(qū)別:IP數(shù)據(jù)報在網(wǎng)絡(luò)層要經(jīng)過路由的存儲轉(zhuǎn)發(fā);而UDP數(shù)據(jù)報在傳輸層的端到端的邏輯信道中傳輸,封裝成IP數(shù)據(jù)報在網(wǎng)絡(luò)層傳輸時,UDP數(shù)據(jù)報的信息對路由是不可見的。
? ? ? ? TCP 和 網(wǎng)絡(luò)層虛電路 的區(qū)別:TCP報文段在傳輸層抽象的邏輯信道中傳輸,對路由器不可見;虛電路所經(jīng)過的交換點都必須保存虛電路狀態(tài)信息。在網(wǎng)絡(luò)層若采用虛電路方式,則無法提供無連接服務(wù);而傳輸層采用TCP不影響網(wǎng)絡(luò)層提供無連接服務(wù);