計算機網路 傳輸層 傳輸服務的要素

2022-06-30 10:45:10 字數 3294 閱讀 6625

通過建立連線的兩個傳輸實體之間所用的傳輸協議來實現的

必須解決差錯控制、分組順序、流量控制等問題(指面向連線傳輸服務)

傳輸層需要顯式地給出目的端的位址

傳輸層初始連線複雜

傳輸層源端和目的端之間的子網具有儲存能力

傳輸層管理大量動態變化的連線,和資料鏈路層的資料緩衝和流量控制具有不同的處理方法

補充:關鍵問題

即使包可能丟失,損壞,延遲或重複,也要確保可靠性

不要將舊的或重複的資料報視為新資料報

使用arq和校驗和進行丟失/損壞

方法:不需要連線的時候,傳輸層的實體必須將它釋放

釋放連線的方式

任何一方都可以關閉雙向連線,一方釋放連線,整個連線斷開,存在丟失資料的危險,當鏈結建立之後,主機1傳送一段,它正確的到達了主機2,然後主機1傳送了另外了一段,不幸的是,主機2在第二段到達之前發出了disconnect端,結果這個連線被釋放了,這樣的話資料丟失了。

每個方向的連線單獨關閉,雙方都執行disconnect才能關閉整條連線。

比如主機1對說我已經完成任務了,你也完成任務了嗎?主機2說我也完成了,再見,咱們倆可以正常釋放連線了。

每個方向單獨釋放,互不影響,但是對稱式連線釋放的方法有時不能正確地工作,這個情況的例子就是兩軍對壘問題。

兩軍對壘,兩隻藍軍圍困白軍於峽谷之中。

任何乙隻藍軍單獨向白軍發起進攻都會導致戰役失敗,唯有藍軍同時進攻才可以打敗白軍。

這個時候兩隻軍隊同時發起進攻就很重要。

如何確保兩隻軍隊同時發起進攻?

藍軍a派 乙個通訊員去通知藍軍b在晚上10.發起攻擊,這個時候藍軍b收到了通知。然後讓通訊員去告訴藍軍a,我收到通知了。

這個時候通訊員在回去的途中可能會被老虎吃了,然後藍軍a就無法知道藍軍b是否收到了資訊。藍軍a斷然不敢發動攻擊。

退一步講,藍軍a收到了收到了藍軍b的回覆。但這個時候藍軍b並不知道藍軍a有沒有收到它的回覆。他可能就會在心裡尋思,a到底有沒有收到我的資訊啊,我該不該發起攻擊啊。以此類推,並沒有乙個方式能夠完全確定雙方都收到了資訊。

如何解決的?在實際的通訊過程中,使用三次握手 + 定時器的方法釋放連線在絕大多數情況下是成功的

1.正常三次握手的情況

釋放連線代表什麼?

傳輸實體將該傳輸實體有關該連線的資訊從它的內部表中刪除,並且通知該連線的所有者,這個動作與傳輸原語發出乙個disconnect原語有所不同。

2.最後乙個ack丟失的情況

該情況是通過乙個計時器來進行補救,如果計時器超時,無論如何連線都要被釋放

3.響應dr丟失的情況

傳送釋放連線的使用者接受不到期望的相應,所以它將超時,於是會嘗試再次嘗試釋放連線,重新傳送dr,請求接受方相應。

4.響應和隨後的dr都丟失

最後乙個場景和c中相同,但是由於丟失段的原因,所有的重傳dr都嘗試失敗了,經過n次重試之後,傳送方放棄了並釋放連線,於是接受方由於超時最後放棄了

差錯檢測

傳輸層採用端到端的校驗機制

流量控制

傳輸層利用可變滑動視窗協議來實現流控

快取如果網路層服務是不可靠的,傳送方的傳輸層實體必須快取所有連線發出的tpdu,而且為每個連線單獨做快取,以便用於錯誤情況下的重傳

接收方的傳輸層實體既可以做也可以不做快取

理論上是乙個滑動視窗(來自資料鏈路層),帶有校驗和以及重傳,傳輸層採用端到端的校驗機制

傳輸層利用可變滑動視窗協議來實現流控

傳送方/接收方的緩衝區管理

問題:資料在不同時間進出網路和應用程式

視窗告訴傳送方在接收方的可用緩衝區製作可變大小的滑動視窗

如果網路層服務是不可靠的,傳送方的傳輸層實體必須快取所有連線發出的tpdu,而且為每個連線單獨做快取,以便用於錯誤情況下的重傳接收方的傳輸層實體既可以做也可以不做快取。

不同的緩衝策略:交易效率和複雜性

傳輸層中的流控制問題和資料鏈路層中的情形相似與不同

相似:相似都需要在每個連線上使用滑動視窗或者其他的方案來避免快速傳送方淹沒掉乙個慢速的接收方

不同:一台路由器通常僅僅對應少量的線路,而一台主機可能的大量連線,這個差異決定了在傳輸層上實現資料鏈路層的緩衝策略是不切實際的

緩衝資料鏈路層中國傳送方必須將往外傳送的幀緩衝起來,因為以後可能將來要重傳這些幀,同理,傳輸層中傳輸實體也要緩衝tpdu,理由相同

三種緩衝策略

a.固定緩衝區策略:如果大多數的tpdu長度都差不多的話,那麼很自然的做法是將緩衝區組織成乙個大小相等大小緩衝區的池,每個緩衝區容納乙個tpdu。

但是這樣會出現問題,比如浪費空間

b.可變化緩衝區:可變緩衝區,代價是緩衝區管理複雜

c.每個連線使用乙個大的迴圈緩衝區

將幾個會話復用到少數的連線,在傳輸層上,對多路復用的需求來自多個方面,比如如果一台主機上只有乙個網路位址可以使用,那麼這台機器所有的傳輸必須使用同乙個位址,當乙個tpdu進來的時候,傳輸實體需要某一種方法來指明應該交給哪乙個程序,這種情形被稱為向上多路復用

4個不同傳輸連線全部使用同樣的網路連線ip位址

如果乙個使用者所需要的頻寬超過了一條虛電路所能夠提供的頻寬,那麼,一種辦法是開啟多個網路連線,並且採用輪循的方法將流量分布到這些網路連線上,這種操作方式叫做多路復用

計算機網路 傳輸層

為什麼要劃分傳輸層?既然網路層已經能把源主機上發出的資料傳送給目的主機,那麼為什麼還需要加上乙個傳輸層呢?這就需要我們理解主機使用者應用層通訊的主體,位於兩台網路主機中真正的資料通訊主體並不是這兩台主機,而是兩台主機中的各種網路應用程序.同一時間一台主機上可能有多個程序同時執行,這時候就需要為應用程...

計算機網路(傳輸層)

網路層提供了主機之間的邏輯通訊,運輸層為運輸在不同主機上的程序之間提供了邏輯通訊。運輸層協議是在端系統中而不是在路由器中實現的。運輸協議能夠提供的服務常常受制於底層網路層協議的服務模型。底層無法提供時延或頻寬保證,運輸層協議也無法提供。但是即使底層網路協議不可靠,運輸協議也可以提供可靠的資料傳輸服務...

計算機網路 傳輸層

運輸層最重要的兩種協議 tcp協議,udp協議 真正的通訊 兩個主機之間應用程序的通訊 運輸層的重要功能 1 復用 傳送方的不同應用程序使用同乙個運輸層協議傳輸資料 應用層 運輸層 2 分用 接收方的運輸層在剝去報文首部後把資料真正交付到目的應用程序 運輸層 應用層 網路層和運輸層的區別 網路層說明...