傳輸層 —— 讀書筆記《王道考研資料》

傳輸層

傳輸層的功能:

傳輸層是向它上面的應用層提供通信服務,它屬於面向通信部分的最高層,同時也是用戶功能中的最低層。

傳輸層位於網絡層之上,爲運行在不同主機上的應用程序提供邏輯通信,而網絡層提供了主機之間的邏輯通信。即使網絡層的協議是不可靠的,但傳輸層還是能爲應用程序提供可靠的服務。

只有主機的協議棧纔會有傳輸層和網絡層,而路由器再轉發分組的時候都只用到了下三層的功能。(即在通信子網中沒有傳輸層,傳輸層只存在於通信子網以外的主機中)

傳輸層的功能:

1、傳輸層提供應用進程之間的邏輯通信(即端到端的通信)。與網絡層的區別是,網絡層提供的是機之間的邏輯通信。

2、複用和分用。複用是指發送方不同的應用進程都可以使用同一個傳輸層協議傳送數據;分用是指接收方的傳輸層在剝去報文的首部後能夠把這些數據正確交付到目的應用進程。

注意:傳輸層的複用分用功能與網絡層的複用分用功能不同。
網絡層的複用是指發送方不同協議的數據都可以封裝成IP數據報發送出去,分用是指接收方的網絡層在剝去首部後把數據交付給相應的協議。

3、傳輸層還要對收到的報文進行差錯檢測(首部和數據部分)。而網絡層只檢查IP數據報的首部,不檢驗數據部分是否出錯。

4、提供兩種不同的傳輸協議,即面向連接的TCP和無連接的UDP。而網絡層無法同時實現兩種協議(即在網絡層要麼只提供面向連接的服務,如虛電路,要麼只提供無連接服務,如數據報,而不可能在網絡層同時存在這兩種方式)。

端口和端口號:

一、端口的作用:

端口能夠讓應用層的各種應用進程將其數據通過端口號向下交付給傳輸層,以及讓傳輸層知道應當將其報文段中的數據向上通過通端口交付給應用層相應的進程。

端口就是傳輸層服務訪問點TSAP,它在傳輸層的作用類似於IP地址在網絡層的作用或MAC地址在數據鏈路層的作用,只不過IP地址和MAC地址標識的是主機,而端口標識的是主機中的應用進程。

端口號只具有本地意義,即端口號只是爲了標誌本計算機應用層中的各進程。在因特網中不同計算機的相同端口號是沒有聯繫的。

二、端口號:

應用進程通過端口號進行標識,端口號長度爲16bit,能夠表示6536(2^6)個不同的端口號。

端口號只具有本地意義,即端口號只是爲了標誌本計算機應用層中的各進程,不同計算機的相同的端口號是沒有聯繫的。根據端口號範圍可將端口分爲兩類:

1、服務端使用的端口號。

這裏又分爲兩類,最重要的一類是熟知端口號,數值爲0~1023,IANA(互聯網地址指派機構)把這些端口號指派給了TCP/IP最重要的一些應用程序,讓所有的用戶都知道。

另一類叫做登記端口號,數值爲1024~49151。它是爲沒有熟知端口號的應用程序使用的,使用這類端口號必須在IANA登記,以防止重複。

一些常用的熟知端口號如下:

2、客戶端使用的端口號:

數值爲:49152 ~ 65535,由於這類端口號僅在客戶進程運行時才動態選擇,因此又叫短暫端口號。通信結束後,剛纔使用過的客戶端口號就不復存在,這個端口號就可以供其他客戶進程使用。

三、套接字

網絡中通過 IP 地址來表示一臺主機,通過端口號來區分一臺主機中的不同應用程序。在網絡中採用發送方和接收方的套接字組合來識別端點,所謂的套接字實際上就是一個通信端點,即:

套接字=(主機 IP 地址 , 端口號)

它唯一的標識了網絡中的一個主機和其上的一個應用(進程)

無連接服務和面向連接服務:

面向連接的服務就是在通信雙方進行通信之前,必須先建立連接,在通信過程中,整個連接的情況一直被實時地監控和管理。當通信結束後,則應該釋放這個連接。

而無連接的服務,兩個實體之間的通信不需要先建立好連接,需要通信的時候,直接將信息發送到“網絡”中,讓該信息的傳遞在網上盡力而爲地往且的地傳送。

TCP 是一種面向連接的服務,提供可靠的傳輸服務。從而不可避免增加了許多開銷,如:確認、流量控制、計時器以及連接管理。這不僅使協議數據單元的頭部增大很多還要佔用許多的處理機資源。

因此TCP主要適用於可靠性更重要的場合,如文件傳輸協議FTP、超文本傳輸協議HTTP、遠程登錄TELNET等。

UDP 是一種無連接的非可靠傳輸層協議,它在IP之上僅提供兩個附加服務:多路複用和對數據的錯誤檢查。

UDP在傳送數據之前不需要先建立連接,遠程主機的傳輸層收到UDP報文後,不需要給出任何確認。

由於UDP比較簡單,其執行速度就比較快、實時性好。使用UDP的應用主要包括小文件傳送協議(TFTP)、DNS、SNMP和實時協議(RTP)。

注意:

1、IP數據報和UDP數據報的區別:

IP數據報在網絡層要經過路由的存儲轉發;

而UDP數據報是在傳輸層的端到端的邏輯信道中傳輸,而封裝成IP數據報在網絡層傳輸時,UDP數據報的信息對路由是不可見的。

2、TCP 和網絡層虛電路的區別:

TCP報文段是在傳輸層抽象的邏輯信道中傳輸,對路由器不可見。

虛電路所經過的交換結點都必須保存虛電路狀態信息。

在網絡層若採用虛電路方式,則無法提供無連接服務;而傳輸層採用TCP協議不影響網絡層提供無連接服務。

UDP

UDP只是做了傳輸協議能夠做的最少工作,只在IP的數據報服務之上增加了兩個最基本的服務: 複用和分用 以及 差錯控制

一、UDP 的優點:

1、UDP無需建立連接。因此UDP不會引入建立連接的時延。

2、無連接狀態。

TCP需要在端系統中維護連接狀態。此連接狀態包括接收和發送緩存、擁塞控制參數和序號與確認號的參數。

而UDP不維護連接狀態,也不跟蹤這些參數。因此,某些專用應用服務器使用UDP時,一般都能支持更多的活動客戶機。

3、分組首部開銷小。TCP 20字節的首部開銷,而UDP僅有8字的開銷。

4、應用層能更好地控制要發送的數據和發送時間。

UDP沒有擁塞控制,因此網絡中的擁塞也不會影響主機的發送效率。某些實時應用要求以穩定的速度發送,能容忍一些數據的丟失,但不允許有較大的時延,而UDP正好滿足這些應用的需求。

UDP 常用於一次性傳輸比較少量數掘的網絡應用,如DNS、SNMP等, UDP也常用於多媒體應用(如IP電話、實時視頻會議、流媒體等)

UDP 提供盡最大努力的交付,即不保證可靠交付,但這並不意味着應用對數據的要求是不可靠的,因此所有維護傳輸可靠性的工作需要用戶在應用層來完成。應用實體可以根據應用的需求來靈活設計自己的可靠性機制。

UDP是面向報文的。發送方UDP對應用層交下來的報文,在添加首部後就向下交付給IP層,既不合並,也不拆分,而是保留這些報文的邊界;

接收方UDP對IP層交上來UDP用戶數據報,去除首部後就原封不動地交付給上層應用進程,一次交付一個完整的報文。

因此報文不可分割,是UDP數據報處理的最小單位。

二、UDP的首部格式

UDP數據報包含兩個部分: UDP首部和用戶數據,整個UDP數據報作爲IP數據報的數據部分封裝在IP數據報中,如圖所示。

校驗和:檢測UDP數據報在傳輸中是否有錯。有錯就丟。當源主機不想計算校驗和,則直接令該字段爲全0。

如果接收方UDP發現收到的報文中的目的端口號不正確(即不存在對應於端口號的應用進程),就丟棄該報文,並由ICMP發送“端口不可達”差錯報文給發送方。

三、UDP 校驗:

在計算校驗和之前要在 UDP 數據報之前增加 12 個字節的僞首部。僞首部既不向下傳送也不向上遞交,而僅僅是爲了計算校驗和。

有了僞首部不僅校驗了 UDP 數據報,同時也校驗了 IP 數據報的源 IP 地址和目的 IP 地址。

校驗的過程:

首先發送方把是全零放入校驗和字段並且添加僞首部。

然後,把UDP數據報看成是由許多16位的字串連接起來。

若UDP數據報的數據部分不是偶數個字節,則要在數據部分增加一個全零字節(此字節不發送)。

接下來就按二進制反碼計算出這些16位空的和。將此和的二進制反碼寫入校驗和中。

在接收方,把收到的UDP數據報加上僞首部(如果不爲偶數個字節,則需要補上全零字節)後,按二進制反碼計算出這些16位字的和。

當無差錯時其結果應全爲1。否則就表明有差錯出現,並丟棄這個 UDP 數據報。


注意:

1、校驗時,若UDP數據報部分的長度不是偶數個字節,則需要填入一個全0字節,但是此字節和僞首部一樣,是不發送的。

2、如果UDP校驗和校驗出UDP數據報是錯誤的,可以丟棄,也可以交付給上層,但是需要附上錯誤報告,即告訴上層這是錯誤的數據報。

3、相比於 IP 數據報的校驗只校驗 IP 數據報的首部而言,UDP 的校驗是把首部和數據部分一起進行校驗。

這種簡單的差錯檢驗方法的檢錯能力並不強,但它的好處是簡單,處理速度快。

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