計算機網路 運輸層

2021-09-01 10:47:53 字數 4606 閱讀 3916

運輸層協議為執行在不同主機上的應用程序之間提供了邏輯通訊(logic communication) 功能。

運輸層協議是在端系統中而不是在路由器中實現的 。 在傳送端,運輸層將從傳送應用程式程序接收到的報文轉換成運輸層分組(運輸層報文段,segment)。

實現的方法(可能)是將應用報文劃分為較小的塊,並為每塊 加上乙個運輸層首部以生成運輸層報文段。 然後,在傳送端系統中,運輸層將這些報文段 傳遞給網路層,網路層將其封裝成網路層分組(即資料報)並向目的地傳送。**網路路由器僅作用於該資料報的網路層字段,即它們不檢查封裝在該資料報的運輸層報文段的字段。**在接收端,網路層從資料報中提取運輸層報文段,並將該報文段向上交給運輸層。運輸層則處理接收到的報文段,使該報文段中的資料為接收應用程序使用。

網路應用程式可以使用多種的運輸層協議 。例如,網際網路有兩種協議,即 tcp 和 udp。每種協議都能為呼叫的應用程式提供一組不同的運輸層服務。

網際網路網路層協議有乙個名字叫 ip ,即網際協議。ip 為主機之間提供了邏輯通訊。 ip 的服務模型是盡力而為交付服務( best-effort delivery service)。這意味著 ip 盡它「最大的努力」在通訊的主機之間交付報文段,但它並不做任何確保。特別是:

將主機間交付擴充套件到程序間交付被稱為運輸層的多路復用(transport-layer multiplexing)與多路分解(demultiplexing)。

tcp還為應用程式提供了幾種附加服務:

多路復用與多路分解,也就是將由網路層提供的主機到主機交付服務延伸到為執行在主機上的應用程式提供程序到程序的交付服務。

乙個程序(作為網路應用的一部分)有乙個或多個套接字(socket),它相當於從網路向程序傳遞資料和從程序向網路傳遞資料的門戶。因此,在接收主機中的運輸層實際上並沒有直接將資料交付給程序,而是將資料交付給了乙個中間的套接字 。由於在任一時刻,在接收主機上可能有不止乙個套接字,所以每個套接字都有唯一的識別符號。識別符號的格式取決於它是 udp 還是 tcp 套接字。

將運輸層報文段中的資料交付到正確的套接字的工 作稱為多路分解(demultiplexing)。在源主機從不同套接字中收集資料塊,並為每個資料塊封裝上首部資訊(這將在以後用於分解)從而生成報文段,然後將報文段傳遞到網路層,所有這些工作稱為多路復用(multiplexing)。

udp 只是做了運輸協議能夠做的最少工作。除了復用/分解功能及少量的差錯檢測外,它幾乎沒有對 ip 增加別的東西。

有許多應用更適合用 udp:

源埠號

目的埠號

長度檢驗和單位8

888位元

傳送方的 udp 對報文段中的所有 16 位元字的和進行反碼運算,求和時遇到的任何溢位都被回卷(加 1 )。得到的結果被放在 udp 報文段中的檢驗和字段。

實現這種服務抽象是可靠資料傳輸協議(reliable data transfer protocol)的責任。

這種報文協議使用了肯定確認(positive acknowledg- ment)與否定確認(negativeacknowledgment)。這些控制報文使得接收方可以讓傳送方知道哪些內容被正確接收,哪些內容接收有誤並因此需要重複。在計算機網路環境中,基於這樣重傳機制的可靠資料傳輸協議稱為自動重傳請求(automatic repeat request, arq)協議。

rdl2.1:考慮到 ack 或 nack 丟失或損壞的情況,在資料分組中新增一新字段,讓傳送方對其資料分組編號,即將傳送資料分組的序號(sequencenumber)放在該欄位。於是,接收方只需要檢查序號即可確定收到的分組是否是一次重傳。

對於停等協議這種簡單情況,1 位元序號就足夠了,因為它可讓接收方知道傳送方是杏正在重傳前乙個傳送分組(接收到的分組序號與最近收到的分組序號相同),或是乙個新分組(序號變化了,用模 2 運算「前向」移動)。

為了實現基於時間的重傳機制,需要乙個倒計數定時器(countdown timer),在乙個給定的時間量過期後,可中斷傳送方。

回退 n 步(gbn)協議中,允許傳送方傳送多個分組(當有多個分組可用時)而不需等待確認,但它也受限於在流水線中未確認的分組數不能超過某個最大允許數 n。

隨著協議的執行,該視窗在序號空間向前滑動。因此,n 常被稱為視窗長度(window size), gbn 協議也常被稱為滑動視窗協議(sliding-window protocol)。

使用累積確認是 gbn 乙個自然的選擇。

在 gbn 協議中,接收方丟棄所有失序分組。

選擇重傳(sr)協議通過讓傳送方僅重傳那些它懷疑在接收方出錯(即丟失或受損)的分組而避免了不必要的重傳。

sr 接收方將確認乙個正確接收的分組而不管其是否按序。失序的分組將被快取直到所有丟失分組(即序號更小的分組)皆被收到為止,這時才可以將一批分組按序交付給上層。

三次握手初期設定的傳送快取( send buff er ),tcp 可從快取中取出並放人報文段中的資料數量受限於最大報文段長度( maximum segmenl size, mss), mss 通常根據最初確定的由本地傳送主機傳送的最大鏈路層幀長度(即所謂的最大傳輸單元( maximum transmission unit, mtu ))來設定。

tcp 的首部一般是 20 位元組(比 udp 首部多 12 位元組)。

源埠號

目的埠號

序號確認號首部長度保留未用

urgack

pshrst

synfin

接收視窗網際網路檢驗和

緊急資料指標

選項單位

1616

323246

1111

11161616~

bit估計往返時間

大多數 tcp 的實現僅在某個時刻做 samplertt 測量,而不是為每個傳送的報文段測量乙個 samplertt。

tcp 維持乙個 samplertt 均值(稱為 estimatedrtt) 一旦獲得乙個新 samplertt 時, tcp 就會根據下列公式來更新 estimaledrtt:

estimatedrtt = (1 - α)· estimatedrtt + α·samplertt(α=0.125)
rtt 偏差 devrtt,用於估算 samplertt一般會偏離 estimatedrtt 的程度:

devrtt = (1-β)· devrtt + β·|samplerti - estimatedrtt|(β=0.25)
設定和管理重傳超時間隔

timeoutinterval = estimatedrtt + 4·devrtt
推薦的初始 timeoutinterval 值為 1 秒,當出現超時後,timeoutinterval 的值將加倍,以免即將被確認的後繼報文段過早出現超時。且一旦報文段收到並更新 estimatedrtt 後,需要使用上述公式重新計算timeoutinterval。

在 tcp 傳送方有3個與傳送和重傳有關的主要事件:從上層應用程式接收資料;定時器超時和收到 ack。

tcp 的差錯恢復機制為 gbn 協議與 sr 協議的混合體。

tcp 通過讓傳送方維護乙個稱為接收視窗( receive window ,rwnd)的變數來提供流量控制。通俗地說,接收視窗用於給傳送方乙個指示一一該接收方還有多少可用的快取空間:

syn->synack->fin->ack

擁塞資訊從網路反饋到傳送方的兩種方式:

執行在傳送方的 tcp 擁塞控制機制跟蹤乙個額外的變數,即擁塞視窗( congestion window,cwnd )。

lastbytesent - lastbyteacked ≤ min
乙個 tcp 傳送方的「丟包事件」定義為: 要麼出現超時,要麼收到來自接收方的 3 個冗餘 ack

慢啟動

cwnd 的值以 1 mss開始並且每當傳輸的報文段被確認就倍增。

擁塞避免

每當傳輸的報文段被確認就增加乙個mss。

快速恢復

在快速恢復中,對於引起 tcp 進入快速恢復狀態的缺失報文段,對收到的每個冗餘的ack, cwnd 的值增加乙個 mss。

吞吐量

當擁塞發生時,視窗長度為w位元組。

一條連線的平均吞吐量 = 0.75 ✘ w / rtt

l表示丟包率。

一條連線的平均吞吐量 = 1.22 ✘ mss / rtt ✔l

公平性

擁塞控制機制是多個 tcp 連線最終收斂到共享頻寬的狀態。

影響公平性:

計算機網路 運輸層

問題 一 運輸層為相互通訊的的應用程序提供邏輯通訊 問題二 埠和套接字的意義 問題三 理解udp和tcp協議 問題四 在不可靠的網路上實現可靠傳輸的工作原理 問題五 tcp的滑動視窗 流量控制 擁塞控制和連線管理 1 埠 應用層所有的應用程序都可以通過運輸層傳送到ip層,這就是復用 運輸層從ip層收...

計算機網路 運輸層

運輸層協議作用於端系統,為執行在不同主機上的程序提供了邏輯通訊,將主機間的交付擴充套件到程序間交付。該層的分組稱為segment 報文段 多路復用 主機把不同套接字 每生成乙個套接字同時分配乙個埠號 收集的資料封裝後生成報文段,傳送給網路層 多路分解 將運輸層報文段的不同資料 通過套接字的埠號 交付...

計算機網路 運輸層

運輸層提供的是程序與程序間的邏輯通訊,網路層為主機之間提供邏輯通訊。程序間的通訊引入了埠的概念,為了標記各個程序在和運輸層互動時的層間介面。tcp用主機的ip位址加上埠號作為tcp連線的端點 套接字socket 運輸層主要有兩個協議 tcp和udp,都有復用和分用 檢錯功能。當採用tcp協議時,雖然...