計算機網路 傳輸層

2021-10-25 10:44:36 字數 3486 閱讀 6696

2 udp協議

3 tcp協議

3.4 tcp可靠傳輸

3.5 tcp 流量控制

3.6 tcp 擁塞控制

參考網路層只把分組傳送到目的主機,但是真正通訊的並不是主機而是主機中的程序。運輸層提供了程序間的邏輯通訊,運輸層向高層使用者遮蔽了下面網路層的核心細節,使應用程式看起來像是在兩個運輸層實體之間有一條端到端的邏輯通訊通道。

常見的應用程式埠號

傳輸層的復用分用功能與網路層的復用分用功能不同。

網路層的復用是指傳送方不同協議的資料都可以封裝成ip資料報傳送出去,

網路層的分用是指接收方的網路層在剝去首部後把資料交付給相應的協議。

首部字段只有 8 個位元組,包括源埠、目的埠、長度、檢驗和。12 位元組的偽首部是為了計算檢驗和臨時新增的。

如果接收方udp發現收到的報文中的目的埠號不正確(即不存在對應於埠號的應用程序),那麼就丟棄該報文,並由icmp傳送「埠不可達」差錯報文給傳送方

偽首部和全0位元組是不傳送的,僅供校驗使用。

tcp必須要建立連線之後才可以進行資料交換,所以tcp是面向連線的。

假設 a 為客戶端,b 為伺服器端。

三次握手的原因

第三次握手是為了防止泛洪攻擊,防止失效的連線請求到達伺服器,讓伺服器錯誤開啟連線。

客戶端傳送的連線請求如果在網路中滯留,那麼就會隔很長一段時間才能收到伺服器端發回的連線確認。客戶端等待乙個超時重傳時間之後,就會重新請求連線。但是這個滯留的連線請求最後還是會到達伺服器,如果不進行三次握手,那麼伺服器就會開啟兩個連線。如果有第三次握手,客戶端會忽略伺服器之後傳送的對滯留連線請求的連線確認,不進行第三次握手,因此就不會再次開啟連線。

ack 在連線建立之後都為 1。

四次揮手的原因客戶端傳送了 fin 連線釋放報文之後,伺服器收到了這個報文,就進入了 close-wait 狀態。這個狀態是為了讓伺服器端傳送還未傳送完畢的資料,傳送完畢之後,伺服器會傳送 fin 連線釋放報文。

time_wait

客戶端接收到伺服器端的 fin 報文後進入此狀態,此時並不是直接進入 closed 狀態,還需要等待乙個時間計時器設定的時間 2msl。這麼做有兩個理由:

tcp保證可靠傳輸主要有4種方式:

校驗:與udp校驗一樣,增加偽首部

序號確認 :傳送方每一次傳送資料之後都需要接收方進行確認。

重傳:確認重傳不分家,tcp傳送方在規定時間內沒有收到確認就要重傳已傳送的報文段——即超時重傳

乙個報文段從傳送再到接收到確認所經過的時間稱為往返時間 rtt,加權平均往返時間 rtts 計算如下:

其中,0 ≤ a < 1,rtts 隨著 a 的增加更容易受到 rtt 的影響。

超時時間 rto 應該略大於 rtts,tcp 使用的超時時間計算如下:

其中 rttd 為偏差的加權平均值。

在通訊過程中,接收方根據自己接收快取的大小,動態地調整傳送方的傳送視窗大小,這稱為接收視窗rwnd, 即調整tcp報文段首部中的「視窗」字段值,來限制傳送方向網路注入報文的速率。

同時,傳送方根據其對當前網路擁塞程式的估計而確定的視窗值,這稱為擁塞視窗cwnd,其大小與網路的頻寬和時延密切相關。

將視窗字段設定為 0,則傳送方不能傳送資料。

如果網路出現擁塞,分組將會丟失,此時傳送方會繼續重傳,從而導致網路擁塞程度更高。因此當出現擁塞時,應當控制傳送方的速率。這一點和流量控制很像,但是出發點不同。流量控制是為了讓接收方能來得及接收,而擁塞控制是為了降低整個網路的擁塞程度

tcp 主要通過四個演算法來進行擁塞控制:慢開始、擁塞避免、快重傳、快恢復。

傳送方需要維護乙個叫做擁塞視窗(cwnd)的狀態變數,注意擁塞視窗與傳送方視窗的區別:擁塞視窗只是乙個狀態變數,實際決定傳送方能傳送多少資料的是傳送方視窗。

傳送的最初執行慢開始,令 cwnd = 1,傳送方只能傳送 1 個報文段;當收到確認後,將 cwnd 加倍,因此之後傳送方能夠傳送的報文段數量為:2、4、8 …

注意到慢開始每個輪次都將 cwnd 加倍,這樣會讓 cwnd 增長速度非常快,從而使得傳送方傳送的速度增長速度過快,網路擁塞的可能性也就更高。設定乙個慢開始門限 ssthresh,當 cwnd >= ssthresh 時,進入擁塞避免,每個輪次只將 cwnd 加 1。

如果出現了超時,則令 ssthresh = cwnd / 2,然後重新執行慢開始。

在接收方,要求每次接收到報文段都應該對最後乙個已收到的有序報文段進行確認。例如已經接收到 m1 和 m2,此時收到 m4,應當傳送對 m2 的確認。

在傳送方,如果收到三個重複確認,那麼可以知道下乙個報文段丟失,此時執行快重傳,立即重傳下乙個報文段。例如收到三個 m2,則 m3 丟失,立即重傳 m3。

在這種情況下,只是丟失個別報文段,而不是網路擁塞。因此執行快恢復,令 ssthresh = cwnd / 2 ,cwnd = ssthresh,注意到此時直接進入擁塞避免。

慢開始和快恢復的快慢指的是 cwnd 的設定值,而不是 cwnd 的增長速率。慢開始 cwnd 設定為 1,而快恢復 cwnd 設定為 ssthresh。

計算機網路 傳輸層

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

計算機網路(傳輸層)

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

計算機網路 傳輸層

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