❶ 計算機網路(5)| 運輸層
從通信和處理信息的角度看,運輸層是向它上面的應用層提供通信服務的,它屬於面向通信部分的最高層,同時也是用戶功能中的最低層。當網路的邊緣部分中的兩台主機使用網路的核心部分的功能進行端到端的通信時,只有主機的協議棧才有運輸層,而網路核心部分中的路由器在轉發分組時都只用到下三層的功能。
運輸層的兩個主要協議 TCP/IP 都是互聯網的正式標准,即:
(1)用戶數據報協議UDP
(2)傳輸控制協議TCP
TCP則是面向連接的服務。在傳送數據之前必須先建立連接,數據傳送結束後要釋放連接。TCP不提供廣播或者多播服務。由於TCP要提供可靠的面向連接的運輸服務,因此需要增加很多的開銷。
TCP/IP的運輸層用一個16位埠號來標志一個埠。埠號只有本地意義。它是為了標志本計算機應用層中的各個進程在和運輸層交互時的層間介面。
運輸層的埠號分為以下兩類:
(1)伺服器端使用的埠號: 它主要分為系統埠號0~1023和登記埠號1024~49151。
(2)客戶端使用的埠號: 49152~65535,這類埠號僅在客戶端進程運行時才動態選擇。當伺服器收到客戶端進程的報文時,就知道客戶端進程的埠號。因而可以把數據發送給客戶進程。
用戶數據報協議相比於IP的數據報服務就是只增加了復用、分用和差錯檢測功能。UDP的主要特點是:
(1)UDP是無連接的, 發送數據之前不需要建立連接,因此減少開銷和發送數據之前的時延。
(2)UDP使用盡最大努力交付, 即不保證可靠交付,因此主機不需要維持復雜的連接狀態表。
(3)UDP是面向報文的。 發送方的UDP對應用交下來的報文,添加首部後就向下交付給IP層。不對報文做任何處理,因此當報文過長時,IP層可能需要進行分片處理。
(4)UDP沒有擁塞控制, 網路出現的擁塞不會使源主機的發送速率減低。
(5)UDP支持一對一、一對多、多對一和多對多的交互通信。
(6)UDP的首部開銷小, 只有8個位元組。
UDP有兩個欄位:數據欄位和首部欄位。先介紹首部欄位,它是由4個欄位組成的,每個欄位只有2個位元組,總共有8個位元組。各個欄位的意義如下:
(1)源埠: 源埠號。在需要對方回信時選用。不需要時可用全0。
(2)目的埠: 目的埠號。在這終點交付報文時必須使用。
(3)長度: UDP用戶數據報的長度,其最小值是8(只有首部)。
(4)檢驗和: 檢測UDP用戶數據報在傳輸中是否有錯,有錯則丟棄。
當在傳送用戶數據報時,如果接收方UDP發現收到的報文中目的埠號不正確(即不存在對應於該埠號的應用進程),就丟棄該報文,並由網際控制報文協議ICMP發送「埠不可達」差錯報文給發送方。
TCP的主要特點如下:
(1)TCP是面向連接的運輸層協議。 應用程序在使用TCP協議之前,必須先建立TCP連接。傳送數據完畢後,必須釋放TCP連接。
(2)每一條TCP連接只能有兩個端點。 每一條TCP連接只能是點對點的。
(3)TCP提供可靠交付的服務。 通過TCP連接傳送的數據,無差錯、不丟失、不重復,並且按序到達。
(4)TCP提供全雙工通信。 TCP允許通信雙方的應用進程在任何時候都能發送數據。
(5)面向位元組流。 TCP中的流指的是流入到進程或進程流出的位元組序列。雖然應用程序和TCP的交互是一次一個數據塊,但TCP把應用程序交下來的數據看成一連串的無結構的位元組流。TCP不保證發送方發送的數據塊和接收方接收的數據塊一致,但保證程序接收到的位元組流和程序發送的位元組流一致。
TCP連接的端點叫做套接字或者插口。套接字是指將埠號拼接到IP地址之後,即:
每一條TCP連接唯一的被通信兩端的兩個端點所確定。即:
如圖所示,A發送分組M1,發送完畢就暫停發送,等待B的確認,B收到了M1就向A發死你確認。A在收到了對M1的確認之後,就再發送下一個分組M2,以此類推。
如圖所示,當B接收M1時檢測出了差錯,就丟棄M1,其他什麼也不做。而A只要超過了一段時間沒有收到確認,就會認為剛才發送的分組丟失了,因而重傳前面發送過的分組,這就叫做超時重傳,而實現超時重傳則需要A為每一個已發送的分組都設置一個超時計時器。
需要注意以下三點:
(1)A在發送完一個分組後,必須暫時保留已發送的分組的副本。
(2)分組和確認分組必須編號,這樣才能明確哪一個發出的分組收到了確認。
(3)超時計時器設置的重傳時間應當比數據在分組傳輸的平均往返時間更長。
如圖所示,B所發送的對M1確認丟失了,A在設定的超時重傳時間內沒有收到確認,所以無法知道自己發送的分組是怎樣出錯的,所以會重傳M1,而當B又收到了重傳的分組M1,這時應該採取兩個行動:
(1)丟棄這個重復分組M1。
(2)向A發送確認。
還有一種情況就是在傳輸過程中沒有出現差錯,但B對分組M1的確認遲到了,而A會收到重復的確認,A收下後就會丟棄,B仍然會收到重復的M1,並且同樣要丟棄重復的M1,並且重傳確認分組。
停止等待協議的優點是簡單,缺點則是信道的利用率太低。我們用TD表示A發送分組需要的時間,TA表示B發送確認分組需要的時間,RTT為往返時間,則:
為了提高傳輸的效率,發送方可以不使用低效率的停止等待協議,而是採用流水線傳輸的方式。即不必每發完一個分組就停下來等待對方的確認,這樣就可以使信道上一直有數據在不間斷的傳送。
如圖表示的是發送方維持的發送窗口,它指的是位於發送窗口內的5個分組都可以連續發送出去而不需要等待對方的確認。同時連續ARP協議規定,發送方每收到一個確認,就把發送窗口向前滑動一個分組的位置。
對於接收方採用的則是累計確認的方式,即接收方不必對收到的分組逐個發送確認。而是在收到幾個分組後,對按序到達的最後一個分組發送確認,這就表示:到這個分組為止的所有分組都已正確收到了。這種方式的優點是:容易實現,即使確認丟失也不必重傳(意思是發送方不必重傳)。但缺點是不能向發送方反映出接收方已經正確收到的所有分組信息。
TCP雖然是面向位元組流的,但傳送TCP的數據單元卻是報文段。一個TCP報文段可以分為首部和數據兩部分。
為了後面講述的方便,我們假設數據傳輸只在一個方向進行,即A發送數據,B給出確認。
TCP的滑動窗口是以位元組為單位的。如圖所示,現在假定A收到了B發來的確認報文段,其中的窗口是20位元組,而確認號是31,根據這2個數據,A就構造出自己的發送窗口。
發送窗口表示:在沒有收到B的確認的情況下,A可以連續把窗口內的數據都發送出去。凡是已經發送過的數據,在未收到確認之前都必須暫時保留,以便在超時重傳時使用。發送窗口後面的部分表示已發送且已經收到了確認。而發送窗口前沿的部分表示不允許發送的。
現在假定A發送了序號為31~41的數據。這時發送窗口位置並未改變但是發送窗口內靠後面有11個位元組表示已發送但是未收到確認。而發送窗口內靠前面的9個位元組時允許發送但未發送的。如圖所示:
而對於B,它的接收窗口大小是20,在接收窗口外面到30號位置的數據是接收並確認的,因此可以丟棄。在下圖中,B收到了32和33的數據,但它們不是按序到達的,因為並沒有收到31號數據。B只能對按序達收到的數據中的最高序號給出確認,因此B發送的確認報文欄位的確認號依然是31號。
現在假定B收到了序號為31的數據,並把31~33的數據交付主機,然後B刪除這些數據。接著把窗口向前移動3個序號,同時給a發送確認,其中的窗口值仍為20,但確認號變為34。表明B已經收到序號33為止的數據。
因為TCP的發送方在規定的時間內沒有收到確認就要重傳已經發送的報文段,但是重傳時間的選擇卻TCP最復雜的問題之一。為此TCP採用了一種自適應演算法,它記錄了一個報文段發出的時間以及收到相應的確認的時間。這兩個時間之差就是報文段的往返時間RTT,同時TCP保留了RTT的加權平均往返時間RTTs。而RTTD是RTT的偏差加權平均值,它與RTTs和新的RTT樣本之差有關。
超時重傳時間的演算法如下:
第一次測量時,加權平均往返時間取往返時間RTT,以後每次測量到一個新的RTT,按以下公式計算:
第一次測量時,RTT偏差的加權平均等於RTT的一半,以後的測里中,按以下公式計算:
綜上超時重傳時間RTO計算如下:
若收到的報文無差錯,只是未按序號,使用選擇確認SACK可是讓發送方發送那些未收到的數據,而不重復發送已經收到的那些數據。如果要使用選擇確認SACK,那麼在建立TCP連接時,就要在TCP首部的選項中加上「允許SACK」的選項,並且雙方必須都事先商量好。
流量控制就是指讓發送方的發送速率不要太快,要讓接收方來得及接收。而利用滑動窗口機制就可以很方便的在TCP連接上實現對發送方的流量控制。
如上圖所示,接收方B進行了三次流量控制。第一次把窗口減小到rwnd=300,第二次又減到rwnd=100,最後是rwnd=0,即不允許發送方再發送數據了。
但是我們應該考慮一種情況,就是當接收方B的存儲已滿時,會向發送方發送零窗口的報文段,接著B的存儲又有了一些空間,B再向A發送一個不為零的窗口值,但這個報文丟失了,結果就是雙方一直等待下去。所以為了解決這個問題,TCP為每一個連接設有一個持續計時器。只要TCP連接的一方收到對方的零窗口通知,就啟動持續計時器,當計時器到期後,就發送一個探測段文段,而對方就在確認這個探測段時給出了現在的窗口值。如果窗口仍然是0,那麼收到這個報文段的一方就重新設置持續計時器,反之則死鎖的僵局就可以打破了。
應用程序把數據傳送到TCP的發送緩存後,TCP在何時發送這些數據?,在TCP的實現中廣泛使用了Nagle演算法。具體演算法如下:
(1)若發送應用進程要把數據逐個位元組地送到TCP的發送緩存,則發送方就把第一個數據位元組先發出去,把後面到達的數據位元組都緩存起來。
(2)方發送方收到對第一個數據位元組的確認後,再把發送緩存中的所有數據組裝成一個報文發送出去,同時繼續對後續到來的數據進行緩存。
(3)只有收到對前一個報文段的確認後才繼續發送下一個報文段。
當數據到達快而網路速度慢時,這種方法可以明顯減少網路帶寬。Nagle還規定:當到達的數據達到窗口的一半或最大報文長度時就立即發送一個報文。
但還還需要考慮一個叫做糊塗綜合征的問題,具體內容是若接收方的緩存已滿,應用進程每次只從緩存中取1個位元組,然後向發送方確認,並把窗口設為1個位元組(緩存只空了1個位元組的空間),接著發送方發來1個位元組,接收方發回確認,仍然將窗口設為1,這樣進行下去,網路的利用率很低。
為了解決這個問題,可以讓接收方等待一段時間,使得或者緩存已有足夠的空間或者等到接收緩存已有一半的空閑空間。此時,接收方就發出確認報文,並向發送方通知當前窗口的大小。
擁塞 是指在某一段時間內,若對網路中某一資源的需求超過了該資源所能提供的可用部分,網路的性能就會變壞的情況。而所謂的 擁塞控制 就是防止過多的數據注入到網路當中,這樣可以使網路中的路由器或者鏈路不致過載,它是一個全局性的過程,涉及到所有的主機和路由器,而流量控制往往是指點對點通信量的控制。擁塞控制所要做的都有一個前提,就是網路能夠承受現有的網路負荷。
TCP進行擁塞控制的演算法有4種:慢開始、擁塞避免、快重傳和快恢復。下面在討論這些演算法時我們假定:
(1)數據是單方向傳送的,對方只傳送確認報文。
(2)接收方總是有足夠大的緩存空間。
發送方維持一個擁塞窗口的狀態變數,其大小取決於擁塞程度,並且動態變化。發送方讓自己的發送窗口小於擁塞窗口(如果考慮接收方的接收能力的話,發送窗口可能小於擁塞窗口)。發送方控制擁塞窗口的原則是:只要網路沒有擁塞,擁塞窗口就再增大一點,以便把更多的分組發送出去,只要出現擁塞,就減小擁塞窗口,以減少注入到網路的分組數。
下面會從「慢開始演算法」講起來討論擁塞窗口的大小如何變化的。
慢開始的演算法思路是:當主機開始發送數據時,由於並不清楚網路的負荷情況,所以如果立即把大量數據位元組注入到網路中,就有可能引起網路擁塞。因此會採用由小逐漸增大發送窗口。即在通常開始發送報文時,先將擁塞窗口cwnd的值設為一個最大報文段MSS的數值,而在每收到一個新的報文段確認後,把擁塞窗口增加至多一個MSS的數值。
如上圖所示,開始時cwnd=1,發送方發送一個M1,接收方收到M1發送確認,發送方收到一個確認後將cwnd加1,此時cwnd=2,因此發送方發送M2和M3兩個報文段,接收方收到後返回兩個確認,因此cwnd增加兩次,此時cwnd=4,接著發送方發送M4~M7四個報文段。依次類推。因此使用慢開始演算法後,每經過一個傳輸輪次,擁塞窗口就加倍。
但是為了防止擁塞窗口cwnd增加過大導致網路擁塞,需要設置一個慢開始門限ssthresh,慢開始門限用法如下:
當cwnd<ssthresh時,使用上述的慢開始演算法。
當cwnd>ssthresh時,停止使用慢開始演算法,使用擁塞避免演算法。
當cwnd=ssthresh時,既可以使用慢開始演算法,也可以使用擁塞避免演算法。
這里的擁塞避免演算法是指讓擁塞窗口緩慢的增大,即每經過一個往返時間RTT就把發送方的擁塞窗口cwnd加1,而不是像慢開始階段那樣加倍增長。
需要注意的是無論在慢開始階段還是擁塞避免階段,只要發送方判斷網路出現擁塞(根據是沒有按時收到確認),立即把慢開始門限ssthresh設為出現擁塞時的發送窗口的一半。然後發送窗口cwnd重新設為1,執行慢開始演算法。目的是迅速減少主機發送到網路分組的分組數。
快重傳演算法要求接收方每收到一個失序的報文段後就立即發送重復確認,如下圖接收了M1和M2後,又接收到一個M4,M4屬於失序報文,則發送對M2的重復確認。發送方只要連續收到三次確認重復就立即重傳對方未收到的報文段M3。
與快重傳演算法配合的還有快恢復演算法,過程如下:
(1)當發送方連續收到三個重復確認時,就把慢開始門限ssthresh減半,這是為了防止網路擁塞,接著並不執行慢開始演算法。
(2)由於上圖這種情況很可能不是因為網路擁塞引起的,因此這里不執行慢開始演算法(即不把擁塞窗口cwnd設為1,這樣速度太慢),而是把cwnd值設置為慢開始門限ssthresh減半後的數值,然後開始執行擁塞避免演算法。
TCP的運輸連接有是三個階段:連接建立、數據傳送和連接釋放。在TCP的連接過程中要解決以下三個問題:
(1)要使每一方能夠確知對方的存在。
(2)要允許雙方協商一些參數(如最大窗口值、是否使用窗口擴大選項和時間戳選項以及服務質量)。
(3)能夠對運輸實體資源進行分配。
TCP建立連接的過程叫做握手,握手需要在客戶和伺服器之間交換3個TCP報文段。如圖是三報文握手建立的連接過程:
A最後還要發送一次確認的原因是為了防止已經失效的連接請求報文段突然又傳送到了B,因而產生錯誤。試想一種情況:如果只有第一次和第二次握手,第二次B向A發送的確認丟失了,此時B進入了連接建立狀態,A沒有收到確認,過一段時間後會再次向B發送連接請求,B收到後又會再次建立連接,白白浪費B的資源。
A在TIME-WAIT狀態等待2MSL(MSL,最長報文段壽命),主要是因為以下兩點考慮:首先是為了保證A發送的最後一個ACK報文段能夠到達B,因為這個ACK報文段可能丟失,此時B會重傳連接釋放報文,如果A已經關閉,則無法收到這個報文。其次,當A在發送完最後一個ACK報文段後,再經過時間2MSL,就可以使本連接持續時間內產生的所有報文段都從網路中消失。這樣,下一個新連接中不會出現這種舊的連接請求報文段。
在圖中每一個方框即TCP可能具有的狀態。每個方框中的大寫英文字元串時TCP標准所使用的的TCP連接狀態名。狀態之間的箭頭表示可能發生的狀態變遷。箭頭旁邊的字表明引起這種變遷的原因,或表明發生狀態變遷後又出現什麼動作,在圖中粗實線箭頭表示對客戶進程的正常變遷,粗虛線箭頭表示對伺服器進程的正常變遷,細線箭頭表示異常變遷。
❷ 計算機網路 考題
(老師欽點)1-05 網際網路的發展大致分為哪幾個階段?請指出這幾個階段最主要的特點
第一階段:
特點 從單個網路 ARPANET 向互聯網發展的過程
第二階段:從 1985年開始
特點 建成了三級結構的互聯網
第三階段:從1993年開始
特點 逐漸形成了多層次 ISP 結構的互聯網
(老師欽點)1-10 試在下列條件下比較電路交換和分組交換。要傳送的報文共x(bit),從源站到目的站共經過k段鏈路,每段鏈路的傳播時延為d(s),數據率為C(bit/s)。在電路交換時電路的建立時間為s(s)。在分組交換時分組長度為p(bit),且各結點的排隊等待時間可忽略不計。問在怎樣的條件下,分組交換的時延比電路交換的要小?
分組交換 : x/C+(k-1)p/C+kd
電路交換 : s+x/C+kd
當 x/C+(k-1)p/C+kd<s+x/C+kd時,
即 (k-1)p/C<s
1-17收發兩端之間的傳輸距離為1000km,信號在媒體上的傳播速率為2.3×10^8
試計算以下兩種情況的發送時延和傳播時延:
1) 數據長度為10^7 bit,數據發送速率為100kbit/s,傳播距離為1000km,信號在媒體上的傳播速率為2×10^8m/s。
2) 數據長度為10^3 bit,數據發送速率為1Gbit/s,傳輸距離和信號在媒體上的傳播速率同上。
從以上計算結果可得出什麼結論:
(1):發送延遲=10^7/(100×1000)=100s
傳播延遲=1000×1000/(2×10 8)=5×10 -3s=5ms
(2):發送延遲=10 3/(10 9)=10-6s=1us
傳播延遲=1000×1000/(2×10^8)=5×10-3s=5ms
若數據長度大而發送速率低,則在總的時延中,發送時延往往大於傳播時延。但若數據長度大而發送速率高,則傳播時延就可能是總時延中的主要部分。
(老師欽點)3-09. 一個PPP幀的數據部分(用十六進制寫出)是7D 5E FE 27 7D 5D 7D 5D 65 7D 5E。試問真正的數據是什麼(用十六進制寫出)?
答:7E FE 27 7D 7D 65 7E。(7D 5D和 7D 5E是位元組填充)
(老師欽點)3-19.乙太網使用的CSMA/CD協議是以爭用方式接入到共享信道。這與傳統的時分復用TDM相比優缺點如何?
從網路上負載輕重,靈活性以及網路效率等方面進行比較
網路上負荷較輕時,CSMA/CD協議很靈活。但網路負荷很重時,TDM的效率就很高。
(老師欽點)3-33 112頁
(老師欽點)4-03 作為中間系統,轉發器、網橋、路由器和網關都有何區別?
1)轉發器、網橋、路由器、和網關所在的層次不同。
物理層中繼系統:轉發器 (repeater)。
數據鏈路層中繼系統:網橋 或 橋接器 (bridge)。
網路層中繼系統:路由器 (router)。
網路層以上的中繼系統:網關 (gateway)。
2)當中繼系統是轉發器或網橋時,一般並不稱之為網路互連,因為仍然是一個網路。
路由器其實是一台專用計算機,用來在互連網中進行路由選擇。一般討論的互連網都是指用路由器進行互連的互連網路。
4-09(老師欽點)
1)子網掩碼為 255.255.255.0 代表什麼意思?
2)一網路的現在掩碼為 255.255.255.248,問該網路能夠連接多少個主機?
3)一A 類網路和一 B 類網路的子網號subnet-id分別為16個1和8個1,問這兩個網路的子網掩碼有何不同?
4)一個B類地址的子網掩碼是255.255.240.0。試問在其中每一個子網上的主機數最多是多少?
5)一A類網路的子網掩碼為 255.255.0.255,它是否為一個有效的子網掩碼?
6)某個IP地址的十六進製表示為C2.2F.14.81,試將其轉換為點分十進制的形式。這個地址是哪一類IP地址?
7)C 類網路使用子網掩碼有無實際意義?為什麼?
1)C類地址對應的子網掩碼默認值。但也可以是A類或B類地址的掩碼,即主機號由最後8位決定,而路由器尋找網路由前24位決定。
2)255 - 248 = 7,6台主機,(000 111不行)
3)子網掩碼一樣,但子網數目不同
4)最多可有4094個,2^12 -2 = 4094 (不考慮全0 全1)
5)有效,但不推薦這樣使用
6)194.47.20.129,C類 (C類地址范圍 192.0.1 - 224.255.255 書121頁)
7)有。對於小網路這樣做還可進一步簡化路由表
(老師欽點)4-17 一個3200位長的TCP報文傳到IP層,加上160位的首部後成為數據報。下面的互聯網由兩個區域網通過路由器連接起來。但第二個區域網所能傳送的最長數據幀中的數據部分只有1200位。因此數據報在路由器必須進行分片。試問第二個區域網向其上層要傳送多少比特的數據(這里的「數據」當然指的是區域網看見的數據)?
1200*3 + 80+160 = 3840bit 共4片
(老師欽點)4-20. 設某路由器建立了如下路由表(這三列分別是目的網路、子網掩碼和下一跳路由器,若直接交付則最後一列表示應當從哪一個介面轉發出去)
目的網路 子網掩碼 下一跳
128.96.39.0 255.255.255.128 介面0
128.96.39.128 255.255.255.128 介面1
128.96.40.0 255.255.255.128 R2
192.4.153.0 255.255.255.192 R3
(默認) - R4
現共收到5個分組,其目的站IP地址分別為:
(1)128.96.39.10
(2)128.96.40.12
(3)128.96.40.151
(4)192.4.153.17
(5)192.4.153.90
試分別計算其下一跳
解:
(1)分組的目的站IP地址為:128.96.39.10。先與子網掩碼255.255.255.128相與,得128.96.39.0,可見該分組經介面0轉發。
(2)分組的目的IP地址為:128.96.40.12。與子網掩碼255.255.255.128相與得128.96.40.0,經查路由表可知,該項分組經R2轉發。
(3)分組的目的IP地址為:128.96.40.151,與子網掩碼255.255.255.128相與後得128.96.40.128,與子網掩碼255.255.255.192相與後得128.96.40.128,經查路由表知,該分組轉發選擇默認路由,經R4轉發。
(4)分組的目的IP地址為:192.4.153.17。與子網掩碼255.255.255.128相與後得192.4.153.0。與子網掩碼255.255.255.192相與後得192.4.153.0,經查路由表知,該分組經R3轉發。
(5)分組的目的IP地址為:192.4.153.90,與子網掩碼255.255.255.128相與後得192.4.153.0。與子網掩碼255.255.255.192相與後得192.4.153.64,經查路由表知,該分組轉發選擇默認路由,經R4轉發
(老師欽點)4-26 有如下的四個/24地址塊,試進行最大可能的聚合。
212.56.132.0/24
212.56.133.0/24
212.56.134.0/24
212.56.135.0/24
答:212=(11010100)2,56=(00111000)2
132=(10000100)2,
133=(10000101)2
134=(10000110)2,
135=(10000111)2
所以共同的前綴有22位,即1101010000111000 100001,聚合的CIDR地址塊是:212.56.132.0/22
(老師欽點)4-28 看一看
(老師欽點)4-31以下地址中的哪一個和86.32/12匹配?請說明理由。
(1)86.33.224.123;(2)86.79.65.216;(3)86.58.119.74;(4)86.68.206.154。
答案:
(1)與1111111111110000 00000000 00000000逐比特相「與」和86.32/12匹配
(2)與1111111111110000 00000000 00000000逐比特相「與」和86.32/12不匹配
(3)與1111111111110000 00000000 00000000逐比特相「與」和86.32/12不匹配
(4)與1111111111110000 00000000 00000000逐比特相「與」和86.32/12不匹配
(老師欽點)4-41假定網路中的路由器B的路由表有如下的項目(這三列分別表示「目的網路」、「距離」和「下一跳路由器」)
N17A
N22C
N68F
N84E
N94F
現在B收到從C發來的路由信息(這兩列分別表示「目的網路」和「距離」):
N24
N38
N64
N83
N95
試求出路由器B更新後的路由表(詳細說明每一個步驟)
解:路由器B更新後的路由表如下:
N17A無新信息,不改變
N25C相同的下一跳,更新
N39C新的項目,添加進來
N65C不同的下一跳,距離更短,更新
N84E不同的下一跳,距離一樣,不改變
N94F不同的下一跳,距離更大,不改變
(老師欽點)5—01 試說明運輸層在協議棧中的地位和作用,運輸層的通信和網路層的通信有什麼重要區別?為什麼運輸層是必不可少的?
答:
運輸層處於面向通信部分的最高層,同時也是用戶功能中的最低層,向它上面的應用層提供服務
運輸層為應用進程之間提供端到端的邏輯通信,但網路層是為主機之間提供邏輯通信(面向主機,承擔路由功能,即主機定址及有效的分組交換)。
各種應用進程之間通信需要「可靠或盡力而為」的兩類服務質量,必須由運輸層以復用和分用的形式載入到網路層。
(老師欽點)5—05 試舉例說明有些應用程序願意採用不可靠的UDP,而不用採用可靠的TCP。
答:
VOIP:由於語音信息具有一定的冗餘度,人耳對VOIP數據報損失由一定的承受度,但對傳輸時延的變化較敏感。
有差錯的UDP數據報在接收端被直接拋棄,TCP數據報出錯則會引起重傳,可能帶來較大的時延擾動。
因此VOIP寧可採用不可靠的UDP,而不願意採用可靠的TCP。
(老師欽點)5—14 UDP用戶數據報的首部十六進製表示是:06 32 00 45 00 1C E2 17.試求源埠、目的埠、用戶數據報的總長度、數據部分長度。這個用戶數據報是從客戶發送給伺服器發送給客戶?使用UDP的這個伺服器程序是什麼
解:
源埠1586,目的埠69,UDP用戶數據報總長度28位元組,數據部分長度20位元組。
此UDP用戶數據報是從客戶發給伺服器(因為目的埠號<1023,是熟知埠)、伺服器程序是TFFTP。
(老師欽點)5—19 試證明:當用n比特進行分組的編號時,若接收到窗口等於1(即只能按序接收分組),當僅在發送窗口不超過2n-1時,連接ARQ協議才能正確運行。窗口單位是分組。
見書上答案 434
(老師欽點)5—23 主機A向主機B連續發送了兩個TCP報文段,其序號分別為70和100。試問:
(1) 第一個報文段攜帶了多少個位元組的數據?
(2) 主機B收到第一個報文段後發回的確認中的確認號應當是多少?
(3) 如果主機B收到第二個報文段後發回的確認中的確認號是180,試問A發送的第二個報文段中的數據有多少位元組?
(4) 如果A發送的第一個報文段丟失了,但第二個報文段到達了B。B在第二個報文段到達後向A發送確認。試問這個確認號應為多少?
(1)第一個報文段的數據序號是70到99,共30位元組的數據。
(2)確認號應為100.
(3)80位元組。
(4)70 (快重傳)
(老師欽點)5—24 一個TCP連接下面使用256kb/s的鏈路,其端到端時延為128ms。經測試,發現吞吐量只有120kb/s。試問發送窗口W是多少?(提示:可以有兩種答案,取決於接收等發出確認的時機)。
書上 435
(老師欽點)5—39 TCP的擁塞窗口cwnd大小與傳輸輪次n的關系如下所示:.....
書上 436
6-35 SNMP使用UDP傳送報文。為什麼不使用TCP?
答:因為SNMP協議採用客戶/伺服器工作方式,客戶與伺服器使用request和response報文建立了一種可靠的請求/響應關系,因此不必再耗時建立TCP連接。而採用首部開銷比TCP小的UDP報文形式。
9-07.無線區域網的MAC協議有哪些特點?為什麼在無線區域網中不能使用CSMA/CD協議而必須使用CSMA/CA協議?
答:無線區域網的MAC協議提供了一個名為分布式協調功能(DCF)的分布式接入控制機制以及工作於其上的一個可選的集中式控制,該集中式控制演算法稱為點協調功能(PCF)。DCF採用爭用演算法為所有通信量提供接入;PCF提供無爭用的服務,並利用了DCF特性來保證它的用戶可靠接入。PCF採用類似輪詢的方法將發送權輪流交給各站,從而避免了沖突的產生,對於分組語音這樣對於時間敏感的業務,就應提供PCF服務。 由於無線信道信號強度隨傳播距離動態變化范圍很大,不能根據信號強度來判斷是否發生沖突,因此不適用有線區域網的的沖突檢測協議CSMA/CD。
802.11採用了CSMA/CA技術,CA表示沖突避免。這種協議實際上是在發送數據幀前需對信道進行預約。 這種CSMA/CA協議通過RTS(請求發送)幀和CTS(允許發送)幀來實現。源站在發送數據前,先向目的站發送一個稱為RTS的短幀,目的站收到RTS後向源站響應一個CTS短幀,發送站收到CTS後就可向目的站發送數據幀。
❸ 計網:運輸層
本篇文章先概括介紹運輸層協議的特點、進程之間的通信和埠等重要概念,然後講述比較簡單的UDP協議。然後討論較為復雜但非常重要的TCP協議和可靠傳輸的工作原理,包括停止等待協議和ARQ協議。在詳細講述TCP報文段的首部格式之後,討論TCP的三個重要問題:滑動窗口、流量控制和擁塞控制機制。最後,介紹TCP的連接管理。
從通信和信息處理的角度看,運輸層向它上面的應用層提供通信服務,它屬於面向通信部分的最高層,同時也是用戶功能中的最低層。
當網路的邊緣部分中的兩台主機使用網路 的核心部分的功能進行端到端的通信時,只有主機的協議棧才有運輸層,而網路核心部分中的路由器在轉發分組時都只用到下三層的功能。
運輸層有一個很重要的功能 復用和分用:
從IP層來說,通信的兩端是兩台主機。但實際上,真正進行通信的實體是 在主機中的進程,是這台主機中的一個進程和另一台主機中的一個進程在交換數據(即通信)。運輸層提供應運蔽用進程間的邏輯通信。「邏輯通信」的意思是:從應用層來看,只要把應用層報文交給下面的運輸層, 運輸層就可以把這報文傳送到對方的運輸層。但事實上這兩個運輸層之間並沒有一條水平方向的物理連接。數據的傳送是沿著圖中的虛線方向(經過多個層次)傳送的。
從這里可以看出網路層和運輸層有明顯的區別。網路層為主機之間提供邏輯通信,而運輸層為應用進程之間提供端到端的邏輯通信。
運輸層還要對收到的報文進行差錯檢測,而在網路層,IP數據報首部中的檢驗和欄位,只檢驗首部是否出現差錯而不檢查數據部分。
根據應用程序的不同需求,運輸層需要有兩種不同的運輸協議,即面向連接的TCP和無連接的UDP,這兩種協議就是本章要討論的主要內容。
當運輸層採用面向連接的TCP協議時,盡管下面的網路是不可靠的(只提供盡最大努力服務),但這種邏輯通信信道就相當於一條全雙工的可靠信道。但當運輸層釆用無連接的UDP協議時,這種邏輯通信信道仍然是一條不可靠信道。
TCP/IP運輸層的兩個主要協議都是互聯網的正式標准,即:
在TCP/IP體系中,則根據所使用的協議是TCP或 UDP,分別稱之為TCP報文段或UDP用戶數據報。
UDP在傳送數據之前不需要先建立連接。遠地主機的運輸層在收到UDP報文後,不需要給出任何確認。雖然UDP不提供可靠交付,但在某些情況下UDP卻是一種最有效的工作方式。
TCP則提供面向連接的服務。在畝譽傳送數據之前必須先建立連接,數據傳送結束後要釋放連接。TCP不提供廣播或多播服務。由於TCP要提供可靠的、面向連接的運輸服務,因此不可避免地增加了許多的開銷,佔用許多處理機資源。
前面己經提到過運輸層的復用和分用功能。應用層所有的應用進程都可以通過運輸層再傳送到IP層(網路層),這就是復用。運輸層從IP層收到發送給各應用進程的數據後,必須分別交付指明的各應用進程,這就是分用。顯然,給應用層的每個應用進程賦予一個非常明確的標志是至關重要的。
為了使運行不同操作系統的計算機的應用進程能夠互相通信,就必須用統一的方法(而這種方法必須與特定操作系統無關)對TCP/IP體系的應用進程進行標志。
解決這個問題的方法就是在運輸層使用協議埠號,或通常簡稱為埠。這就是說,雖然通信的終點是應用進程,但只要把所傳送的報文交到目的主機的某個合適的目的埠,剩下的工作(即最後交付目的進程)就由TCP或UDP來完成。
在協議棧層間的抽象的協議埠是軟體埠,和路由器或交換機上的硬體埠是完全不同的概念。軟體埠是迅悄段應用層的各種協議進程與運輸實體進行層間交互的一種地址。
TCP/IP的運輸層用一個16位埠號來標志一個埠。但請注意,埠號只具有本地意義,它只是為了標志本計算機應用層中的各個進程在和運輸層交互時的層間介面。在互聯網不同計算機中,相同的埠號是沒有關聯的。
兩個計算機中的進程要互相通信,不僅必須知道對方的IP地址(為了找到對方的計算機),而且要知道對方的埠號(為了找到對方計算機中的應用進程)。
因此運輸層的埠號分為下面的兩大類:
用戶數據報協議UDP只在IP的數據報服務之上增加了很少一點的功能,這就是復用和分用的功能以及差錯檢測的功能。
UDP的主要特點是:
用戶數據報UDP有兩個欄位:數據欄位和首部欄位。首部欄位很簡單,只有8個位元組。由四個欄位組成,每個欄位的長度都是兩個位元組。各欄位意義如下:
當運輸層從IP層收到UDP數據報時,就根據首部中的目的埠,把UDP數據報通過相應的埠,上交最後的終點——應用進程。
如果接收方UDP發現收到的報文中的目的埠號不正確(即不存在對應於該埠號的應用進程),就丟棄該報文,並由網際控制報文協議ICMP發送「埠不可達」差錯報文給發送方。
UDP用戶數據報首部中檢驗和的計算方法有些特殊。在計算檢驗和時,要在UDP用戶 數據報之前增加12個位元組的偽首部。所謂「偽首部」是因為這種偽首部並不是UDP用戶數 據報真正的首部。只是在計算檢驗和時,臨時添加在UDP用戶數據報前面,得到一個臨時的 UDP用戶數據報。檢驗和就是按照這個臨時的UDP用戶數據報來計算的。偽首部既不向下傳
送也不向上遞交,而僅僅是為了計算檢驗和。
UDP計算檢驗和的方法和計算IP數據報首部檢驗和的方法相似。但不同的是:IP數據 報的檢驗和只檢驗IP數據報的首部,但UDP的檢驗和是把首部和數據部分一起都檢驗。
TCP是TCP/IP體系中非常復雜的一個協議,下面介紹TCP最主要的特點:
前面己經講過,每一條TCP連接有兩個端點,TCP連接的端點叫做套接字或插口。埠號拼接到IP地址即 構成了套接字。
因此,套接字的表示方法是在點分十進制的IP地址後面寫上埠號,中間用冒號或逗號隔開,例如說:
每一條TCP連接唯一地被通信兩端的兩個端點(即兩個套接字)所確定,例如:
這里IP1和IP2分別是兩個端點主機的IP地址,而port1和port2分別是兩個端點主機中的埠號。TCP連接的兩個套接字就是socket1和socket2。
總之,TCP連接就是由協議軟體所提供的一種抽象。
雖然有時為了方便,我們也可以說,在一個應用進程和另一個應用進程之間建立了一條TCP連接,但一定要記住:TCP連 接的端點是個很抽象的套接字,即(IP地址:埠號)。
我們知道,TCP發送的報文段是交給IP層傳送的。但IP層只能提供盡最大努力服務,也就是說,TCP下面的網路所提供的是不可靠的傳輸。因此,TCP必須釆用適當的措施才能使得兩個運輸層之間的通信變得可靠。
「停止等待」就是每發送完一個分組就停止發送,等待對方的確認。在收到確認後再發送下一個分組。
停止等待協議有以下四種情況:
停止等待協議的優點是簡單,但缺點是信道利用率太低。
信道利用率U可以用以下公式計算:
為了提高傳輸效率,發送方可以不使用低效率的停止等待協議,而是釆用流水線傳輸,這種傳輸方式可以獲得很高的信道利用率。
滑動窗口協議比較復雜,是TCP協議的精髓所在。這里先給出連續ARQ協議最基本的概念,但不涉及許多細節問題。
發送方維持的發送窗口,它的意義是:位於發送窗口內的分組都可連續發送出去,而不需要等待對方的確認。這樣,信道利用率就提高了。
連續ARQ協議規定,發送方每收到一個確認,就把發送窗口向前滑動一個分組的位置。
如果原來己經發送了前5個分組,那麼現在就可以發送窗口內的第6個分組了。
接收方一般都是釆用累積確認的方式。這就是說,接收方不必對收到的分組逐個發送 確認,而是在收到幾個分組後,對按序到達的最後一個分組發送確認,這就表示:到這個分組為止的所有分組都已正確收到了。
累積確認有優點也有缺點。優點是:容易實現,即使確認丟失也不必重傳。但缺點是不能向發送方反映出接收方己經正確收到的所有分組的信息。
如果發送方發送了前5個分組,而中間的第3個分組丟失了。這時接收方只能對前兩個分組發出確認。發送方無法知道後面三個分組的下落,而只好把後面的三個分組都再重傳一次。這就叫做Go-back-N(回退N)。
TCP雖然是面向位元組流的,但TCP傳送的數據單元卻是報文段。一個TCP報文段分為首部和數據兩部分,而TCP的全部功能都體現在它首部中各欄位的作用。
TCP報文段首部的前20個位元組是固定的,後面有4n位元組是根據需要而增加的選項。因此TCP首部的最小長度是20位元組。
首部固定部分各欄位的意義如下:
TCP的滑動窗口是以位元組為單位的。
現假定A收到了 B發來的確認報文段,其中窗口是20位元組,而確認號是31(這表明B期望收到的下一個序號是31,而序號30為止的數據已經收到了)。
A的發送窗口表示:在沒有收到B的確認的情況下,A可以連續把窗口內的數據都發送出去。凡是已經發送過的數據,在未收到確認之前都必須暫時保留,以便在超時重傳時使用。
發送窗口後沿的後面部分表示己發送且己收到了確認。發送窗口後沿的變化情況有兩種可能,即不動(沒有收到新的確認)和前移(收到了新的確認)。
發送窗口裡面的序號表示允許發送的序號。窗口越大,發送方就可以在收到對方確認之前連續發送更多的數據,因而可能獲得更高的傳輸效率。但A的發送窗口一定不能超過B的接收窗口數值。
發送窗口前沿的前面部分表示不允許發送的。發送窗口前沿通常是不斷向前移動,但也有可能不動。這對應於兩種情況:一是沒有收到新的確認,對方通知的窗口大小也不變;二是收到了 新的確認但對方通知的窗口縮小了,使得發送窗口前沿正好不動。
現在假定A發送了序號為31〜41的數據。這時,發送窗口位置並未改變, 但發送窗口內靠後面有11個位元組(灰色小方框表示)表示己發送但未收到確認。而發送窗口內靠前面的9個位元組(42〜50)是允許發送但尚未發送的。
從以上所述可以看出,要描述一個發送窗口的狀態需要三個指針:P1,P2和P3,小於P1的是已發送並已收到確認的部分,而大於P3的是不允許發送的部分:
再看一下B的接收窗口。B的接收窗口大小是20。在接收窗口外面,到30號為止的數據是已經發送過確認,並且已經交付主機了。因此在B可以不再保留這些數據。接收窗口內的序號(31〜50)是允許接收的。
此時B收到了序號為32和33的數據。這些數據沒有按序到達,因為序號為31的數據沒有收到(也許丟失了,也許滯留在網路中的某處)。請注意,B只能對按序收到的數據中的最高序號給出確認,因此B發送的確認報文段中的確認號仍然是31 (即期望收到的序號),而不能是32或33。
現在假定B收到了序號為31的數據,並把序號為31〜33的數據交付主機,然後B刪除這些數據。接著把接收窗口向前移動3個序號,同時給A發送確認,其中窗口值仍為20,但確認號是34。這表明B已經收到了到序號33為止的數據。我們注意到,B還收到了序號為37, 38和40的數據,但這些都沒有按序到達,只能先暫存在接收窗口中。
A在繼續發送完序號42〜53的數據後,指針P2向前移動和P3重合。發送窗口內的序號都已用完,但還沒有再收到確認(圖5-18)。由於A的發送窗口己滿,可用窗口已減小到零,因此必須停止發送。為了保證可靠傳輸,A只能認為B還沒有收到這些數據。於是,A在經過一段時間後(由超時計時器控制)就重傳這部分數據,重新設置超時計時器,直到收到B的確認為止。
CP的發送方在規定的時間內沒有收到確認就要重傳已發送的報文段。這種重傳的概念是很簡單的,但重傳時間的選擇卻是TCP最復雜的問題之一。
如果把超時重傳 時間設置得太短,就會引起很多報文段的不必要的重傳,使網路負荷增大。但若把超時重傳 時間設置得過長,則又使網路的空閑時間增大,降低了傳輸效率。
那麼,運輸層的超時計時器的超時重傳時間究竟應設置為多大呢?
TCP釆用了一種自適應演算法,它記錄一個報文段發出的時間,以及收到相應的確認的 時間。這兩個時間之差就是報文段的往返時間RTT。TCP保留了 RTT的一個加權平均往返時間RTT s 。
每當第一次測量到RTT樣本時,RTTs值就取為所測量到的RTT樣本 值。但以後每測量到一個新的RTT樣本,就按下式重新計算一次RTT s :
顯然,超時計時器設置的超時重傳時間RTO應略大於上面得 出的加權平均往返時間RTT s ,所以RTO應該這樣計算。
而RTT D 是RTT的偏差的加權平均值,它與RTTs和新的RTT樣本之差有關。
現在發送出一個報文段,設定的重傳時間到了,還沒有收到確認。於是重傳報文段。經過了一段時間後,收到了確認報文段。現在的問題是:如何判定此確認報文段 是對先發送的報文段的確認,還是對後來重傳的報文段的確認?
Kam演算法進行修正。方法是:報文段每重傳一次,就把超時重傳時間RTO增大一些。典型的做法是取新的重傳時間為舊的重傳時間的2倍。當不再發生報文段的重傳時,才根據上面給出的式子計算超時重傳時間。
現在還有一個問題沒有討論。這就是若收到的報文段無差錯,只是未按序號,中間還缺少一些序號的數據,那麼能否設法只傳送缺少的數據而不重傳已經正確到達接收方的數據?答案是可以的。選擇確認就是一種可行的處理方法。
舉一個例子來說明選擇確認的工作原理。TCP的接收方在接收對方發送過來的數據位元組流的序號不連續,結果就形成了一些不連續的位元組塊。
可以看出,序號1〜1000收到了,但序號1001〜1500沒有收到。接下來的位元組流又收到了,可是又缺少了3001〜3500。再後面從序號4501起又沒有收到。
也就是說,接收方收到了和前面的位元組流不連續的兩個位元組塊。如果這些位元組的序號都在接收窗口之內,那麼接收方就先收下這些數據,但要把這些信息准確地告訴發送方,使發送方不要再重復發送這些已收到的數據。
一般說來,我們總是希望數據傳輸得更快一些。但如果發送方把數據發送得過快,接 收方就可能來不及接收,這就會造成數據的丟失。所謂流量控制就是讓發送方的發送速率不要太快,要讓接收方來得及接收。
利用滑動窗口機制可以很方便地在TCP連接上實現對發送方的流量控制。
設A向B發送數據。在連接建立時,B告訴了A:「我的接收窗口rwnd = 400」。因此,發送方的發送窗口不能超過接收方給出的接收窗口的數值。
我們應注意到,接收方的主機B進行了三次流量控制。第一次把窗口減小到rwnd = 300, 第二次又減到rwnd = 100,最後減到rwnd = 0,即不允許發送方再發送數據了。這種使發送方暫停發送的狀態將持續到主機B重新發出一個新的窗口值為止。
TCP協議使得在發送方不發送很小的報文段的同時,接收方也不要 在緩存剛剛有了一點小的空間就急忙把這個很小的窗口大小信息通知給發送方。
在計算機網路中的鏈路容量(即帶寬)、交換結點中的緩存和處理機等,都是網路的資源。在某段時間,若對網路中某一資源的需求超過了該資源所能提供的可用部分,網路的性能就要變壞。這種情況就叫做擁塞,即對資源需求之和 > 可用資源。
網路擁塞往往是由許多因素引起的。簡單地將處理機的速率提高或簡單地擴大緩存的存儲空間,可能會使上述情況緩解一些,但往往又會將瓶頸轉移到其他地方。問題的實質往往是整個系統的各個部分不匹配。只有所有的部分都平衡了,問題才會得到解決。
擁塞控制與流量控制的關系密切,它們之間也存在著一些差別。擁塞控制就是防止過多的數據注入到網路中,這樣可以使網路中的路由器或鏈路不致過載。流量控制往往是指點對點通信量的控制,是個端到端的問題(接收端控制發送端)。
下圖中橫坐標是提供的負載,代表單位時間內輸入給網路的分組數目。縱坐標是吞吐量,代表單位時間內從網路輸出的分組數目。
實踐證明,擁塞控制是很難設計的,因為它是一個動態的(而不是靜態的)問題。
從大的方面看,可以分為 開環控制 和 閉環控制 兩種方法:
TCP進行擁塞控制的演算法有四種,即慢開始、擁塞避免、快重傳和快恢復。
為了集中精力討論擁塞控制,我們假定:
擁塞控制也叫做基於窗口的擁塞控制。為此,發送方維持一個叫做擁塞窗口cwnd的狀態變數。擁塞窗口的大小取決於網路的擁塞程度,並且動態地在變化。發送方讓自己的發送窗口等於擁塞窗口。
發送方控制擁塞窗口的原則是:只要網路沒有出現擁塞,擁塞窗口就可以再增大一些,以便把更多的分組發送出去,這樣就可以提高網路的利用率。但只要網路出現擁塞或有可能出現擁塞,就必須把擁塞窗口減小一些,以減少注入到網路中的分組數,以便緩解網路出現的擁塞。
發送方又是如何知道網路發生了擁塞呢?我們知道,當網路發生擁塞時,路由器就要丟棄分組。因此只要發送方沒有按時收到應當到達的確認報文,也就是說,只要出現了超時,就可以猜想網路可能出現了擁塞。現在通信線路的傳輸質量一般都很好,因傳輸出差錯而丟棄分組的概率是很小的(遠小於1%)。因此,判斷網路擁塞的依據就是出現了超時。
慢開始演算法的思路是這樣的:當主機開始發送數據時,由於並不清楚網路的負荷情況,所以如果立即把大量數據位元組注入到網路,那麼就有可能引起網路發生擁塞。因此我們由小到大逐漸增大擁塞窗口數值。
新的RFC5681把初始擁塞窗口cwnd設置為不超過2至4個SMSS(發送方的最大報文段)的數值。慢開始規定,在每收到一個對新的報文段的確認後,可以把擁塞窗口增加最多一個SMSS的數值。
下面用例子說明慢開始演算法的原理。在一開始發送方先設置cwnd = 1,發送第一個報文段M1,接收方收到後確認M1。發送 方收到對M1的確認後,把cwnd從1增大到2,於是發送方接著發送M2和M3兩個報文 段。接收方收到後發回對M2和M3的確認。發送方每收到一個對新報文段的確認(重傳的不算在內)就使發送方的擁塞窗口加1,因此發送方在收到兩個確認後,cwnd就從2增大到4,並可發送M4〜M7共4個報文段。
與慢開始演算法相輔助的演算法是擁塞避免演算法。
擁塞避免演算法的思路是讓擁塞窗口 cwnd緩慢地增大,即每經過一個往返時間RTT就 把發送方的擁塞窗口cwnd加1,而不是像慢開始階段那樣加倍增長。在擁塞避免階段,擁塞窗口 cwnd按線性規律緩慢增長,比慢開始演算法的擁塞窗口增長速率緩慢得多。
為了防止擁塞窗口 cwnd增長過大引起網路擁塞,還需要設置一個慢開始門限ssthresh 狀態變數。慢開始門限ssthresh的用法如下:
下面用圖片說明慢開始演算法和擁塞避免演算法相互配合的原理。
其中ssthresh的初始值設置為16,開始時使用慢開始演算法,成指數性增長,當到達ssthresh值時,TCP協議預測可能會出現擁塞,所以開始使用避免擁塞演算法,成線性增長,當發生超時重傳時,立即減小擁塞窗口,重復上述步驟。
但是,有時,個別報文段會在網路中丟失,但實際上網路並未發生擁塞。如果發送方遲遲收 不到確認,就會產生超時,就會誤認為網路發生了擁塞。這就導致發送方錯誤地啟動慢開 始,把擁塞窗口cwnd又設置為1,因而降低了傳輸效率。
釆用快重傳演算法可以解決上述問題。快重傳演算法可以讓發送方盡早知道發生了個別報文段的丟失。快重傳演算法首先要求接收方不要等待自己發送數據時才進行捎帶確認,而是要立即發送確認,即使收到了失序的報文段也要立即發出對已收到的報文段的重復確認。
下面舉一個例子來說明快重傳演算法的原理。接收方收到了M1和M2後都分別及時發出了確認。現假定接收方沒有收到M3但卻收到了 M4。本來接收方可以什麼都不做。但按照快重傳演算法,接收方必須立即發送對M2的重復確認,以便讓發送方及 早知道接收方沒有收到報文段M3。發送方接著發送M5和M6。接收方收到後也仍要再次分別發出對M2的重復確認。這樣,發送方共收到了接收方的4個對M2的確認,其中後3個都是重復確認。快重傳演算法規定,發送方只要一連收到3個重復確認,就知道接收方確實沒 有收到報文段M3,因而應當立即進行重傳(即「快重傳」),這樣就不會出現超時,發送方也不就會誤認為出現了網路擁塞。
快恢復演算法與快重傳演算法配合使用,當使用快重傳演算法發現是由於數據丟失而引起的超時(不是網路擁塞引起的),就使用快恢復演算法,此時發送方調整門限值ssthresh=cwnd/2,同時設置擁塞窗口cwnd=ssthresh,並開始執行擁塞避免演算法。
慢開始、擁塞避免、快重傳和快恢復這四種演算法相輔相成,構成了TCP的擁塞控制。
網路層的策略對TCP擁塞控制影響最大的就是路由器的分組丟棄策略。在最簡單的情 況下,路由器的隊列通常都是按照「先進先出」的規則處理到來的分組。
由於隊列長度總是有限的,因此當隊列已滿時,以後再到達的所有分組(如果能夠繼續排隊,這些分組都將排在隊列的尾部)將都被丟棄。這就叫做尾部丟棄策略。
路由器的尾部丟棄往往會導致一連串分組的丟失,這就使發送方出現超時重傳,使 TCP進入擁塞控制的慢開始狀態,結果使TCP連接的發送方突然把數據的發送速率降低到 很小的數值。更為嚴重的是,在網路中通常有很多的TCP連接(它們有不同的源點和終 點),這些連接中的報文段通常是復用在網路層的IP數據報中傳送。在這種情況下,若發生了路由器中的尾部丟棄,就可能會同時影響到很多條TCP連接,結果使這許多TCP連接在同一時間突然都進入到慢開始狀態。這在TCP的術語中稱為全局同步。
為了避免發生網路中的全局同步現象,可以使用主動隊列管理AQM。
所謂「主動」就是不要等到路由器的隊列長度已經達到最大值時才不得不丟棄後面到達的分組。這樣就太被動了。應當在隊列長度達到某個值得警惕的數值時 (即當網路擁塞有了某些擁塞徵兆時),就主動丟棄到達的分組。這樣就提醒了發送方放慢發送的速率,因而有可能使網路擁塞的程度減輕,甚至不出現網路擁塞。
TCP是面向連接的協議。運輸連接是用來傳送TCP報文的。TCP運輸連接的建立和釋放是每一次面向連接的通信中必不可少的過程。因此,運輸連接就有三個階段,即:連接建立、數據傳送和連接釋放。運輸連接的管理就是使運輸連接的建立和釋放都能正常地進行。
在TCP連接建立過程中要解決以下三個問題:
TCP連接的建立釆用客戶伺服器方式。主動發起連接建立的應用進程叫做客戶,而被動等待連接建立的應用進程叫做伺服器。
TCP建立連接的過程叫做握手,握手需要在客戶和伺服器之間交換三個TCP報文段。
下面舉一個例子來說明TCP建立連接的過程。假定主機A運行的是TCP客戶程序,而B運行TCP伺服器程序。最初兩端的TCP進程都處於CLOSED(關閉)狀態。圖中在主機下面的方框分別是TCP進程所處的狀態。請注意,在本例中,A主動打開連接,而B被動打開連接。
一開始,B的TCP伺服器進程先創建傳輸控制塊TCB,准備接受客戶進程的連接請求。然後伺服器進
❹ 計算機網路_運輸層
在IP層看來,通信的兩端是兩個主機,IP數據報的首部明確的標志了這兩個主機的IP地址。但是兩個主機之間的通信這種說法還不夠清楚,這是因為真正進行通信的實體是在主機中的 進程 ,是兩個進程之間在交換數據。從而引出了運輸層,從運輸層的角度看來, 通信的真正端點並不是主機而是主機中的進程 (端到端的通信)。
在一個主機中經常有多個應用進程同時分別和另一個主機的多個應用進程通信。這就表明了運輸層有一個很重要的功能, 復用和分用 ,應用層不同進程的報文通過不同的埠向下交到運輸層,再往下就共用網路層提供的服務。
「運輸層提供應用進程間的邏輯通信」。「邏輯通信」的意思是:運輸層之間的通信好像是沿水平方向傳送數據。但事實上這兩個運輸層之間並沒有一條水平方向的物理連接。
TCP/IP 的運輸層有兩個不同的協議:
由此可見兩個計算機中的進程要相互通信,不僅要知道對方的IP地址,還要知道對方的埠號。
如果接收方UDP發現收到的報文中的目的埠號不正確(即不存在對應於該埠的號的應用進程),就丟棄該報文,並由網際控制報文協議ICMP發送 埠不可達 差錯報文給發送方。
在計算檢驗和時,臨時把 「偽首部」 和 UDP 用戶數據報連接在一起得到一個臨時的數據報,它不向下傳遞也不向上遞交。 偽首部僅僅是為了計算檢驗和 。
UDP計算檢驗和的方法和IP數據報首部檢驗和方法相類似。但不同的是,IP數據報的檢驗和 只檢驗IP數據報的首部 ,但UDP的檢驗和是 把首部和數據部分一起檢驗
計算UDP檢驗和的例子:
在發送方,先把全0放入檢驗和欄位,再把偽首部以及UDP用戶數據報看成是許多16位的字串接起來。若UDP用戶報的數據部分不是偶數個位元組,則要填入一個全零位元組(先不發送)。然後按照 二進制反碼 計算出這些16位字的和。將此和的二進制反碼寫入 檢驗和欄位 後,就發送這樣的UDP數據報。在接收方,把收到的UDP數據報連通偽首部(以及可能填充全零位元組)一起,按二進制反碼求這些16位字的和。當無差錯時其結果應為全1(原本的檢驗和為0,封裝成數據報後再次相加的時候就多個檢驗和反碼相加,所以無差錯時結果為1)。
每一條TCP連接唯一地被通信兩端的兩個端點(即兩個套接字)所確定,即:
TCP發送的報文段是交給IP層傳輸的。但IP層只提供盡最大努力服務,也就是說,TCP下面的網路所提供的是不可靠傳輸,因此,TCP必須採用適當的措施才能使得兩個運輸層之間的通信變得可靠。
在這樣的理想傳輸條件下,不需要採取任何措施就能夠實現可靠傳輸。然而實際的網路都不具備以上兩個理想的條件。但我們可以使用一些可靠傳輸協議,當出現差錯時讓發送方重傳出現差錯的數據,同時在接收方來不及處理收到的數據時,及時告訴發送方適當的降低發送數據的速度,這樣一來,本來是不可靠的傳輸信道就能夠實現可靠傳輸。
停止等待協議的優點是簡單,但缺點是 信道利用率 太低。
假定AB之間有一條直通的信道來傳送分組
這里的TD是A發送分組所需要的時間(顯然TD = 分組長度 / 數據速率)再假定TA是B發送確認分組所需要的時間(A和B處理分組的時間都忽略不計)那麼A在經過TD+RTT+TA時間後才能發送下一個分組,這里的RTT是往返時間,因為只有TD是採用來傳輸有用的數據(這個數據包括了分組首部,如果可以知道傳輸更精確的數據的時間,可以計算的更精確),所有信道利用率為
為了提高傳輸效率,發送方可以不使用低效率的停止等待協議,而是採用 流水線傳輸 :就是發送方可以 連續的發送多個分組 ,不必每發完一個分組就停下來等待對方的確認。這樣可使信道上一直有數據不間斷地在傳送。顯然這種傳輸方式可以獲得很高的信道利用率
當時使用流水線傳輸時,就要使用下面介紹的 連續ARQ協議 和 滑動窗口協議
滑動窗口協議比較復雜,是TCP協議的精髓所在,在這里先給出ARQ協議最基本的概念,但不涉及到許多細節問題。
位於發送窗口的分組都可以連續的發送出去,而不需要等待對方的確認,發送方每收到一個確認,就把發送窗口向前滑動一個分組的位置。
詳細可以見P201
TCP雖然是面向位元組流的,但是TCP傳送的數據單元卻是報文段(可以看上述TCP面向流的概念),而且TCP的 全部功能都體現在它的首部中各個欄位 。
詳解請見P206,注意圖中的後沿,前沿
從下圖可以看出來,要描述一個發送窗口的狀態需要三個指針:P1,P2,P3
有很多信息見P208,這里不贅述
發送方的應用進程把位元組流寫入TCP的發送緩存,接收方的應用進程從TCP的接收緩存中讀取位元組流。下面進一步討論前面講的 窗口和緩存 的關系
發送緩存
發送窗口通常只是發送緩存的一部分,已被確認的數據應當從發送緩存中刪除,因此 發送緩存和發送窗口的後沿是重合 的。發送應用程序最後寫入發送緩存的位元組減去最後被確認的位元組,就是還保留在發送緩存中被寫入的位元組。發送應用程序必須控制寫入緩存的速率,不能太快 ,否則發送緩存就會沒有存放數據的空間。
如果收到的分組被檢測出有差錯,則要丟棄。如果接收應用程序來不及讀取收到的數據,接收緩存最終就會被填滿,使接收窗口減少到零。反之,如果接收應用程序能夠及時從接收緩存中讀取收到的數據,接收窗口就可以增大,但最大不能超過接收緩存的大小。
TCP才用了一種自適應演算法,它記錄一個報文段發出的時間,以及收到相應的確認的時間。這兩個時間之差就是報文段的往返時間RTT。
TCP 保留了 RTT 的一個 加權平均往返時間 RTTs (這又稱為平滑(smooth)的往返時間,因為是加權平均,所以是平滑的)。
第一次測量到 RTT 樣本時, RTTS 值就取為所測量到的 RTT 樣本值 。以後每測量到一個新的 RTT 樣本,就按下式重新計算一次 RTTS:
顯然,RTO 應略大於上面得出的加權平均往返時間 RTTs
RFC 2988 建議使用下式計算 RTO:
RTTD 是 RTT 的 偏差的 加權平均值,他與RTTs和新的RTT樣本之差有關。
RFC 2988 建議這樣計算 RTTD。第一次測量時,RTTD 值取為測量到的 RTT 樣本值的一半。在以後的測量中,則使用下式計算加權平均的 RTTD:
β是個小於 1 的系數,其推薦值是 1/4,即 0.25。
為了解決上面那個問題,Karn提出了一個演算法
在計算平均往返時間 RTT 時,只要**報文段重傳了,就不採用其往返時間樣本。這樣得出的加權平均平均往返時間 RTTS 和超時重傳時間 RTO 就較准確。 **
但是,這又有了新的問題、設想出現這樣的情況:報文段的時延突然增大了很多。因此在原來得出的重傳時間內,不會收到確認報文段。於是就重傳報文段。但根據Karn演算法,不考慮重傳的報文段的往返時間樣本。這樣,超時重傳時間就無法更新。
報文段每重傳一次,就把 RTO 增大一些:
系數 γ 的典型值是 2 。
當不再發生報文段的重傳時,才根據報文段的往返時延更新平均往返時延 RTT 和超時重傳時間 RTO 的數值。
實踐證明,這種策略較為合理。
接收方收到了和前面的位元組流 不連續 *的兩個位元組塊(只是未按序號,它是無差錯的)
如果這些位元組的序號都在接收窗口之內,那麼接收方就先收下這些數據,但要把這些信息准確地告訴發送方,使發送方不要再重復發送這些已收到的數據。
和前後位元組不連續的每一個位元組塊都有兩個邊界:左邊界和右邊界。圖中用四個指針標記這些邊界。第一個位元組塊的左邊界 L1 = 1501,但右邊界 R1 = 3001。左邊界指出位元組塊的第一個位元組的序號,但右邊界減 1 才是位元組塊中的最後一個序號。第二個位元組塊的左邊界 L2 = 3501,而右邊界 R2 = 4501。
詳見P211
一般說來,我們總是希望數據傳輸得更快一些。但如果發送方把數據發送得過快,
接收方就可能來不及接收,這就會造成數據的丟失。
流量控制(flow control)就是讓發送方的發送速率不要太快,既要讓接收方來得及接收,也不要使網路發生擁塞 。
利用 滑動窗口機制 可以很方便地在 TCP 連接上實現流量控制。
A 向 B 發送數據。在連接建立時,�B 告訴 A:「我的接收窗口 rwnd = 400(位元組)」。 看下TCP首部窗口欄位的用處
接收方的主機B一共進行了3次流量控制(藍線)
考慮一種情況,B向A發送了零窗口的報文段後不久,B的接收緩存又有了一些存儲空間。於是B向A發送了rwnd = 400的報文段,然而這個報文段在傳輸過程中丟失了。A一直等收到B發送非零窗口的通知,B也一直等A發送數據來,就形成了 死鎖 。下面的 持續計時器 就是為了打破死鎖僵局的
應用進程把數據傳送到TCP發送緩存後,剩下的發送任務就由TCP來控制了。可以用不同的機制來控制 TCP 報文段的發送時機:
至於如何控制發送的 時機 詳見P213
在某段時間,若對網路中某資源的需求超過了該資源所能提供的可用部分,網路的性能就要變壞——產生 擁塞(congestion)
出現資源擁塞的條件: 對資源需求的 總和 > 可用資源
若網路中有許多資源同時產生擁塞,網路的性能就要明顯變壞,整個網路的吞吐量將隨輸入負荷的增大而下降。
解決擁塞的要點是 平衡 ,要讓整個系統的性能想匹配(P214)。
橫坐標為 提供的負載 ,代表單位時間內輸入給網路的分組的數目(也叫作輸入負載或網路負載),縱坐標是 吞吐量 ,代表單位時間內從網路輸出的分組數目。
由於缺少緩存空間而被丟棄的分組的百分數,平均隊列長度,超時重傳的分組數,平均分組時延,分組時延的標准差等,這些指標的上升都標志著擁塞的增長。
方便起見,我們用 報文段的個數 作為窗口大小的單位
慢開始門限 ssthresh 的用法如下:
擁塞避免演算法的思路是讓擁塞窗口 cwnd 緩慢地增大,即每經過一個往返時間 RTT 就把發送方的擁塞窗口 cwnd 加 1,而不是加倍,使擁塞窗口 cwnd 按線性規律緩慢增長 ,比慢開始演算法的擁塞窗口增長速率緩慢很多。
網路出現擁塞時
當 TCP 連接進行初始化時,將擁塞窗口置為 1。圖中的窗口單位不使用位元組而使用 報文段 。
慢開始門限的初始值設置為 16 個報文段,即 ssthresh = 16。
發送端的發送窗口不能超過擁塞窗口 cwnd 和接收端窗口 rwnd 中的最小值。我們假定接收端窗口足夠大,因此現在發送窗口的數值等於擁塞窗口的數值。
下面的執行步驟就是按照折現上的點的順序
❺ 計算機網路作業問題,傳輸層問題,在線等
(1)當採用GBN協議時,由派弊GBN協議可扒胡得:
主機A共發送了9個報文段,首先發送報文段1,2,3,4,5,當報文2丟失後,重發報文段2,3,4,5共9個;
主機B共發送8個ACK,首先發送ACK1,2丟失,因此對於3,4,5都發送ACK1共4個ACK1,後對於重傳的2,3,4,5,則發送ACK2,ACK3,ACK4,ACK5,一共8個ACK。
當採用SR協議時,由SR協議可得:
主機A共發送了6個報文段,首先發送報文段1,2,3,4,5,當報文2丟失後,重發報文段2共6個報文段;
主機B共發送5個ACK,首先發送ACK1,ACK3,ACK4,ACK5,對於重發的報文段2,則發送ACK2共5個ACK。
當採用TCP協議時,由TCP協議可得:
主機A共發送了6個報文段,首先發送報文段1,2,3,4,5,當報文2丟失後,重發報文段2共6個報文段;
主機B共發送5個ACK,首塵此族先發送4個ACK2,重傳後發送一個ACK6一共5個ACK。
(2)採用TCP協議可在最短的時間間隔內成功交付5個報文段,因為TCP有快速重傳機制,即在未超時情況下就開始重傳丟失的2號報文段。
❻ 試說明運輸層在協議棧中的地位和作用,運輸層的通信和網路層的通信有什麼重要區別
運輸層地位:是面向網路通信的低三層協議。
運輸層作用:運輸層負責端到端的通信,既是七層模型中負責數據通信的最高層,又是面向網路通信的低三層和面向信息處理的最高三層之間的中間層。
運輸層跟網路層的區別:
一、七層位置不同
1、運輸層:利用網路層子系統提供給服務去開發本層的功能,並實現本層對會話層的服務。
2、網路層:位於物聯網三層結構中的第二層,其功能為「傳送」,即通過通信網路進行信息傳輸。
二、通信解決問題不同
1、運輸層:解決的是計算機程序到計算機程序之間的通信問題,即所謂的「端」到運輸層「端」的通信。
2、網路層:是實現兩個端系統之間的數據透明傳送,具體功能包括定址和路由選擇、連接的建立、保持和終止等。它提供的服務使傳輸層不需要了解網路中的數據傳輸和交換技術。如果您想用盡量少的詞來記住網路層,那就是「路徑選擇、路由及邏輯定址」。
三、服務協議特點不同
1、運輸層:用戶數據報協議UDP(User Datagram Protocol):提供無連接服務;傳輸控制協議TCP(Transmission Control Protocol):提供面向連接服務。
2、網路層:網路層的核心是IP協議,它是TCP/IP協議族中最主要的協議之一。IP協議非常簡單,僅僅提供不可靠、無連接的傳送服務。IP協議的主要功能有:無連接數據報傳輸、數據報路由選擇和差錯控制。
❼ 運輸層知識要點——謝希仁《計算機網路》
為了在計算機網路中有條不紊地交換數據,就必須遵守一些事先約定好的規則。這些規則明確規定了所 交換數據的格式 以及有關的 同步 問題。
同步的含義:在一定條件下應當發生什麼事件,因而含有時序的意思。
網路協議:為進行網路中的數據交換而建立的規則、標准或約定。
網路協議由以下三個要素組成:
1)語法:即數據與控制信息的結構或格式
2)語義:即需要發出何種控制信息,完成何種動作以及做出何種反應
3)同步:即事件實現順序的詳細說明
一、運輸層協議的概述
1.1 進程之間的通信
1.2 運輸層的兩個主要協議
1.3 運輸層的埠
二、用戶數據報協議UDP
2.1 UDP概述
2.2 UDP的首部格式
三、傳輸控制協議TCP概述
3.1 TCP的最主要的特點
3.2 TCP的連接
四、可靠傳輸的工作原理
4.1 停止等待協議
4.2 連續ARQ協議
五、TCP報文段的首部格式
六、TCP可靠傳輸的實現
6.1 以位元組為單位的滑動窗口
6.2 超時重傳時間的選擇
6.3 選擇確認SACK
七、TCP的流量控制
7.1 利用滑動窗口實現流量控制
7.2 必須考慮傳輸效率
八、TCP的擁塞控制
8.1 擁塞控制的一般原理
8.2 幾種擁塞控制方法
8.3 隨機早期檢測RED
九、TCP的運輸連接管理
9.1 TCP的連接建立
9.2 TCP的連接釋放
9.3 TCP的有限狀態機
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1.1 進程之間的通信
1.只有主機的協議棧才有運輸層,而網路核心部分中的路由器在轉發分組時都只用到了下三層的功能
2.兩個主機進行通信就是兩個主機中的應用進程互相通信。從運輸層的角度看,通信的真正端點並不是主機而是主機中的進程。(IP協議能把分組送到目的主機)
網路層時為主機之間提供邏輯通信,而運輸層為應用進程之間提供端到端的邏輯通信。
3.運輸層一個重要功能——復用、分用。 (應用進程復用、分用運輸層)
1.2 運輸層的兩個主要協議
1.UDP—User Datagram Protocol 用戶數據報協議(無連接):DNS/RIP/DHCP/SNMP/NFS
TCP—Transmission Control Protocol 傳輸控制協議(面向連接):SMTP/TELNET/HTTP/ FTP
1.3 運輸層的埠
問題:為了使運行不同操作系統的計算機的應用進程能夠互相通信,就必須使用統一的方法(而這種方法必須與特定操作系統無關)對TCP/IP體系的應用進程進行標識。
為什麼不用進程號來區分?(第一,不同操作系統的進程標識符不同;第二,用功能來識別,而不是進程,例如郵件服務功能,而不管具體是哪個進程)
解決方案:在運輸層使用協議埠號,即埠。軟體埠是應用層的各種協議進程與運輸實體進行層間交互的一種地址。(埠號只具有本地意義,只是為了標識本計算機應用層中各個進程在和運輸層交互時的層間介面。)
埠分為兩大類:
1)伺服器使用的埠號:熟知埠號或系統埠號(0~1023);登記埠號(1024~49151)
2)客戶端使用的埠號:49152~65535
2.1 UDP概述
1.UDP只在IP的數據報服務至上增加了很少一點功能,就是復用、分用以及差錯檢測功能
2.特點
1)無連接
2)盡最大努力交付
3)面向報文 (不合並、不拆分、保留這些報文的邊界)
4)UDP沒有擁塞控制
5)UDP支持一對一、一對多、多對一和多對多的交互通信
6)UDP的首部開銷小,只有8位元組
應用進程本身可以在不影響應用的實時性的前提下,增加一些提高可靠性的措施,如採用前向糾錯或重傳已丟失的報文。
2.2 UDP的首部格式
1.traceroute 讓發送的UDP用戶數據報故意使用一個非法的UDP埠號,接收方丟棄報文,並由ICMP(網路控制報文協議)發送「埠不可達」差錯報文給發送方。
2.計算檢驗和。IP數據報的校驗和只檢驗IP數據報的首部,但UDP的校驗和是把首部和數據部分一起都檢驗。(12位元組的首部+真正的首部+數據來進行校驗和的計算)
Q1.為什麼計算校驗和要加12位元組的偽首部
Q2.計算校驗和的原理是什麼?
3.1 TCP的最主要的特點
1.面向連接的運輸層協議(建立連接、傳輸數據、釋放連接)
2.點對點,每一條TCP連接只能有兩個端點
3.可靠交付(無差錯、不丟失、不重復、並且按序到達)
4.全雙工通信。TCP連接的兩端都設有發送緩存和接收緩存。
5.面向位元組流。(流指的是流入到進程或從進程流出的位元組序列;面向位元組流:TCP把應用程序交下來的數據看成是一連串的無結構位元組流。 接收方的應用程序必須有能力識別接收到的位元組流,把它還原成有意義的應用層數據。 因此TCP可以根據窗口值和當前網路狀況調整發送的報文長度。劃分短一點,或者積累到足夠多再發送出去。)
3.2 TCP的連接
1.TCP把連接作為最基本的抽象。
2.每一條TCP連接有兩個端點。TCP連接的端點叫作套接字。
套接字soket = (IP地址:埠號)
每一條TCP連接唯一地被通信兩端的兩個端點(即兩個套接字)所確定。
TCP連接 ::= {socket1, socket2}
理想的傳輸條件有以下兩個特點:
1)傳輸信道不產生差錯
2)不管發送方以多快的速度發送數據,接收方總是來得及處理收到的數據
實際的網路並不具備,因此:
1)出現差錯時,讓發送方重傳
2)接收方來不及處理時,及時告訴發送方適當降低發送數據的速度
4.1 停止等待協議
1.「停止等待」就是沒發送完一個分組就停止發送,等待對方的確認,在收到確認後再發送下一個分組。
2.超時重傳。在每發完一個分組就設置一個超時計時器,如果在超時計時器之前收到對方的確認,就撤銷已設置的超時計時器。如果未收到,就認為剛才的分組丟失,並重傳。
3.三種情況:A發送的分組出錯、丟失;B發送的確認丟失;B發送的確認遲到
確認丟失:B丟棄重復的分組,向A重傳確認
確認遲到:A丟棄重復的確認,B丟棄重復分組,並向A重傳確認
4.常稱為自動重傳請求ARQ,重傳時自動進行的(超時即重傳)
5.缺點:信道利用率太低
U=Td/(Td+RTT+Ta)
為了提高傳輸效率,發送方不使用停止等待協議,而是採用流水線傳輸。流水線傳輸就是發送發可連續發送多個分組,不必等每發完一個分組就停頓下來等待對方的確認。(連續ARQ協議和滑動窗口協議)
4.2 連續ARQ協議
1.位於發送窗口內的分組都可連續發送出去,而不需要等待對方的確認。
2.累積確認:接收方不必對收到的分組逐個發送確認,而是在收到幾個分組後,對按序到達的最後一個分組發送確認。
3.缺點:Go-back-N (發送前5個分組,第3個分組丟失,後面三個要重傳)
1.源埠和目的埠
2.序號。 每個位元組都按順序編號。
3.確認號。 期望收到對方下一個報文段的第一個數據位元組的序號。
若確認號=N,則表明:到序號N-1為止的所有數據都已正確收到。
4.數據偏移。 指出TCP報文段的數據起始處距離TCP報文段的起始處有多遠(也即TCP報文段首部長度)。由於首部中還有長度不確定的選項欄位,因此數據偏移欄位是必要的。
5.窗口。窗口欄位明確指出了現在允許對方發送的數據量。窗口值是經常在動態變化著。
6.1 以位元組為單位的滑動窗口
1.發送緩存用來暫存:
1)發送應用程序傳送給發送方TCP准備發送的數據;
2)TCP已發送但未收到確認德爾數據
2.接收緩存用來存放:
1)按序到達的、但尚未被接收應收程序讀取的數據;
2)未按序到達的數據
3.注意三點:
1)A的發送窗口是根據B的接收窗口設置的,但是在同一時刻,由於網路傳輸的滯後,A的發送窗口並不總是B的接收窗口一樣大
2)TCP通常對不按序到達的數據是先臨時存放在接收窗口中,等到位元組流中所缺少的位元組收到後,再按序交付上層的應用進程
3)TCP接收方有累計確認功能(不能過分推遲發送確認,否則會導致發送方不必要的重傳)
6.2 超時重傳時間的選擇
1.超時重傳時間設置太短,會引起很多不必要的重傳;如果設置太長,使網路的空閑時間增大,降低傳輸效率。
2.新的RTTs = (1-a)x(舊的RTTs) + ax(新的RTT樣本),其中RTT樣本的時間為:記錄一個報文段發出的時間,以及收到相應的確認時間,時間差就是報文段的往返時間RTT。
3.RTO = RTTs + 4 x RTTd,其中RTO為超時重傳時間,RTTd是RTT的偏差的加權平均值。
新的RTTd = (1-b) x (舊的RTTd)+ b x |RTTs - 新的RTT樣本|
4.一個問題:發送一個報文段,設定的重傳時間到了,還沒有收到確認。於是重傳報文段。經過一段時間,收到了確認報文段。現在的問題是:如何判定此確認報文段是對先發送的報文段的確認,還是對後來重傳的報文段的確認?
1)解決方法1,在計算加權平均值RTTs時,只要報文段重傳了,就不採用其往返時間樣本。
引入的問題:報文段的時延突然增大的情況
2)解決方法2,報文段每重傳一次,就把超時重傳時間RTO增大一些(一般是2倍)。當不在發生報文段的重傳時,再根據加權平均計算。
6.3 選擇確認SACK
SACK文檔並沒有指明發送發應當怎樣響應SACK。因此大多數的實現還是重傳所有未被確認的數據塊。
7.1 利用滑動窗口實現流量控制
1.流量控制:就是讓發送方的發送速率不要太快,要讓接收方來得及接收。
2.利用滑動窗口機制可很方便地在TCP連接上實現對發送方的流量控制。發送方的發送窗口不能超過接收方給出的接收窗口的數值。
3.死鎖情況:B向A發送了零窗口的報文段後不久,B又有了一些緩存空間,因此B向A發送rwnd = 400.然而該報文段在傳送過程中丟失。A一直等待B發送的非零窗口的通知,B也一直等待A發送的數據。( 窗口通知不超時重傳?為什麼? )
解決方法:TCP為每個連接設有一個持續計時器。只要一方收到對方的零窗口通知,就啟動計時器。計時器到期後,發送一個零窗口探測報文段,而對方就在確認這個探測報文段時給出了現在的窗口值。若仍為零,收到報文段的一方重新設置持續計時器。
7.2 必須考慮傳輸效率
1.應用程序把數據傳送到TCP的發送緩存後,剩下的發送任務就由TCP來控制了。
2.三種不同的機制來控制TCP報文段的發送時機:
1)TCP維持一個變數,它等於最大報文段長度MSS,只要緩存中的存放的數據達到MSS,就組裝成一個TCP報文段發送出去
2)由發送方的應用進程指明要求發送報文段,即TCP支持推送操作
3)發送方設置一個定時器
3.問題一、若用戶只發送一個位元組,則非常浪費帶寬。
解決方法:若發送應用程序把要發送的數據逐個位元組地送到TCP的發送緩存,則發送方就把第一個數據位元組先發送出去,把後面到達的數據位元組都緩存起來。當發送方收到對第一個數據字元的確認後,再把發送緩存中的所有數據組裝成一個報文段發送出去。(採用收到確認就發送+並開始緩存的方式;同時當到達的數據已達到發送窗口大小的一半或已達到報文段的最大長度時,就立即發送一個報文段。)
4.問題二、糊塗窗口綜合症。接收緩存已滿,應用程序一次只讀取一個位元組,然後向發送方發送確認。
解決方法:讓接收方等待一段時間,使得接收緩存已有足夠空間容納一個最長的報文段,或者等到接收緩存已有一半空閑的空間。則接收方就發出確認報文。
8.1 擁塞控制的一般原理
1.擁塞的定義:對資源的需求 > 可用資源。 在計算機網路中的鏈路帶寬、交換結點中的緩存和處理機等,都是網路中的資源。
2.擁塞解決不能靠解決某一個部分的問題。因為這會將瓶頸轉移到其他地方。問題的實質往往是整個系統的各個部分不匹配。只有所有部分都平衡了,問題才會得到解決。
3.擁塞控制與流量控制的比較。
1)擁塞控制:防止過多的數據注入到網路中,這樣可以使網路中的路由器或鏈路不致過載。
擁塞控制有個前提:網路能夠承受現有的網路負荷
擁塞控制是一個全局性過程。(發送擁塞時,不知道在某處、什麼原因造成的)
2)流量控制:點對點通信量的控制,是個端到端的問題
流量控制:抑制發送端發送數據的速率,以便使接收端來得及接收。
4.尋找擁塞控制的方案無非就是使不等式 「對資源的需求 > 可用資源 」不再成立的條件。但是必須考慮該措施帶來的其他影響。
5.計算機網路是個復雜的系統。從控制理論的角度來看擁塞控制,可以分為開環控制和閉環控制兩種方法。
1)開環控制:設計網路時事先將有關發生擁塞的因素考慮周到,力求網路在工作時不產生擁塞。但一旦系統運行起來,就不再中途改正。
2)閉環控制:基於反饋環路。
步驟一、監測網路系統以便檢測到擁塞在何時、何處發生;
步驟二、把擁塞發生的信息傳送到可採取行動的地方
步驟三、調整網路系統的運行以解決出現的問題
8.2 幾種擁塞控制方法(只考慮網路擁塞程度,即假設接收方總是有足夠大的緩存空間)
1.慢開始和擁塞避免
1)發送方維持一個擁塞窗口。
擁塞窗口的大小取決於網路的擁塞程度,並且動態地在變化。
控制擁塞窗口的原則是:只要網路沒有出現擁塞,擁塞窗口增大;如果網路出現擁塞,則減小。
2)慢開始的思路:由小到大逐漸增大擁塞窗口數值。每收到一個對新的報文段的確認,把擁塞窗口增加至多一個MSS的數值。(沒經過一個傳輸輪次,擁塞窗口cwnd就加倍)
輪次:把擁塞窗口所允許發送的報文段都連續發送出去,並收到了對已發送的最後一位元組的確認。
慢開始的「慢」並不是指cwnd的增長速率慢,而是指TCP開始發送報文段時先設置cwnd=1(一個MSS數值)。
3)慢開始門限ssthresh
為防止擁塞窗口增長過大,引入一個慢開始門限ssthresh。
當cwnd < ssthresh時,使用上述的慢開始演算法
當cwnd > ssthresh時,停止使用慢開始演算法而改用擁塞避免演算法
4)擁塞避免演算法
思路:讓擁塞窗口cwnd緩慢增大,即沒經過一個往返時間RTT就把發送方的擁塞窗口cwnd增加1,而不是加倍。
5)慢開始門限的設置
只要發送方判斷網路出現擁塞(沒有按時收到確認),就把慢開始門限ssthresh設置為出現擁塞時發送方窗口值的一半,然後把擁塞窗口cwnd重置為1,執行慢開始演算法。
6)乘法減小和加法增大
乘法減小:網路出現擁塞時,把慢開始門限ssthresh減半(當前的ssthresh的一半),並執行慢開始演算法。
加法增大:執行擁塞避免方法
2.快重傳和快恢復
1)快重傳(盡快重傳未被確認的報文段)
首先,要求接收方每收到一個失序的報文段後就立即發出重復確認。(如接收方收到了M1和M2後都分別發出了確認,但接收方沒有收到M3但接著收到了M4。此時接收方立即發送對M2的重復確認。)
其次,發送方只要一連收到三個重復確認,就應當立即重傳對方尚未收到的報文段M3.
2)快恢復
要點一、當發送方連續收到三個重復確認,就執行「乘法減小」演算法,把慢開始門限ssthresh減半。
要點二、由於發送方認為網路很可能沒有發生擁塞(因為收到了連續的重復確認),把cwnd設置為慢開始門限ssthresh減半後的值,然後開始執行擁塞避免演算法
慢開始演算法只在TCP連接建立時和網路出現超時才使用。
3.發送方的窗口
發送方窗口的上限值 = Min [rwnd, cwnd]
8.3 隨機早期檢測RED(IP層影響TCP層的擁塞控制)
1.網路層的分組丟棄策略
網路層的策略對TCP擁塞控制影響最大的就是路由器的分組丟棄策略。
如果路由器隊列已滿,則後續到達的分組將都被丟棄。這就叫做尾部丟棄策略。
2.全局同步
由於TCP復用IP,若發生路由器中的尾部丟棄,就可能會同時影響到很多條TCP連接,結果就使許多TCP連接在同一時間突然都進入到慢開始狀態。全局同步使得全網的通信量突然下降了很多,網路恢復正常後,其通信量又突然增大很多。
3.隨機早期檢測RED
使路由器的隊列維持兩個參數,即隊列長度最小門限THmin和最大門限THmax。當每一個分組到達時,RED就先計算平均隊列長度Lav。RED演算法是:
1)若平均隊列長度小於最小門限THmin,則把新到達的分組放入隊列進行排隊
2)若平均隊列長度超過最大門限THmax,則把新到達的分組丟棄
3)若平均隊列長度在最小門限THmin和最大門限THmax之間,則按照某一概率p將新到達的分組丟棄。
隨機體現在3),在檢測到網路擁塞的早期徵兆時(即路由器的平均隊列長度超過一定的門限值時),就先以概率p隨機丟棄個別的分組,讓擁塞控制只在個別的TCP連接上進行,因而避免發生全局性的擁塞控制。
4.平均隊列長度Lav和分組丟棄概率p
Lav = (1-d) x (舊的Lav) +d x (當前的隊列長度樣本)
p = ptemp / (1- count x ptemp)
ptemp = pmax x (Lav - THmin) / (THmax - THmin)
TCP時面向連接的協議。
運輸連接就有三個階段:連接建立、數據傳送和連接釋放
運輸連接的管理:使運輸連接的建立和釋放都能正常地進行。
在TCP連接建立過程中要解決以下三個問題:
1)要使每一方能夠確知對方的存在
2)要允許雙方協商一些參數(如最大窗口值、是否使用窗口擴大選項和時間戳等等)
3)能夠對運輸實體資源(如緩存大小、連接表中的項目等)進行分配
9.1 TCP的連接建立
1.TCP規定,SYN=1報文段不能攜帶數據,但消耗一個序號
2.TCP規定,ACK=1報文段可以攜帶數據,如果不攜帶數據則不消耗序號
3.為什麼A還要發送一次確認?為了防止已失效的連接請求報文突然又傳送到B,因而產生錯誤。
「已失效的連接請求報文段」
A發出第一個連接請求報文段,在網路中滯留超時,又發出了第二個連接請求。但B收到第一個延遲的失效的連接請求報文段後,就誤認為是A又發出了一次新的連接請求。於是就向A發出確認報文段,同意建立連接。假定不採用三次握手,那麼只要B發出確認,新的連接就建立。此時A不會理睬B的確認,也不會發數據,但B一直等A發送數據,B的許多資源就浪費了。
採用三次握手,A不會向B發送確認,因此B就知道A並沒有要求建立確認。
9.2 TCP的連接釋放
1.TCP規定,FIN報文段基石不攜帶數據,也消耗一個序號
2.第二次握手後,TCP通知高層應用程序,因而從A到B這個方向的連接就釋放,TCP連接處於半關閉狀態
3.為什麼A在TIME-WAIT狀態必須等待2MSL的時間
1)為了保證A發送的最後一個ACK報文段能夠到達B。因為ACK可能丟失,此時B可能會超時重傳,然後A重傳確認,並重新啟動2MSL計時器
2)防止「已失效的連接請求報文段」出現在本連接中。可以使本連接持續時間內所產生的所有報文段都從網路中消失。
9.3 TCP的有限狀態機
❽ 計算機網路問題12題,高分懸賞`快快快
[第一題]:,中繼器是物理層上的網路互連設備,它的作用是重新生成信號(即對原信號進行放大和整形)。
中繼器(Repeater)又稱重發器,是一種最為簡單但也是用得最多的互連設備。中繼器僅適用於乙太網,可將兩段或兩段以上乙太網互連起來。中繼器只對電纜上傳輸的數據信號再生放大,再重發到其它電纜段上。對鏈路層以上的協議來說,用中繼器互連起來的若干段電纜與單根電纜並無區別(除了中斷器本身會引起一定的時間延遲外)。
網橋(BRIDGE)工作在數據鏈路層,將兩個區域網(LAN)連起來,根據MAC地址(物理地址)來轉發幀,可以看作一個「低層的路由器」(路由器工作在網路層,根據網路地址如IP地址進行轉發)。它可以有效地聯接兩個LAN,使本地通信限制在本網段內,並轉發相歲枝此應的信號至另一網段,網橋通常用於聯接數量不多的、同一類型的網段。網橋通常有透明網橋和源路由選擇網橋兩大類
路由就是指通過相互連接的網路把信息從源地點移動到目標地點的活動。一般來說,在路由過程中,信息至少會經過一個或多個中間節點。通常,人們會把路由和交換進行對比,這主要是因為在普通用戶看來兩者所實現的功能是完全一樣的。其實,路由和交換之間的主要區別就是交換發生在OSI參考模型的第二層(數據鏈路層),而路由發生在第三層,即網路層。這一區別決定了路由和交換在移動信息的過程中需要使用不同的控制信息,所以兩者實現各自功能的方式是不同的
他們分別工作在物理層、數據鏈路層、網路層
[第二題]: TCP和UDP是TCP/IP協議中的兩個傳輸層協議,它們使用IP路由功能把數據包發送到目的地,從而為應用程序及應用層協議(包括:HTTP、SMTP、SNMP、FTP和Telnet)提供網路服務。TCP提供的是面向連接的、可靠的數據流傳輸,而UDP提供的是非面向連接的、不可靠的數據流傳輸。面向連接的協議在任何數據傳輸前就建立好了點到點的連接。ATM和幀中繼是 面向連接的協議,但它們工作在數據鏈路層,而不是在傳輸層。普通的音頻電話也是面向連接的。
[第三題]:為保證公用網的高可靠性,X.25採用三層協議,以虛電路技術構造了一個可靠的確認型的面向連接的公用網路。在X.25網內每兩個節點之間的數據傳送都要經過校驗和確認,實現出錯重發機制,並在網路層和數據鏈路層都採用了可搭襲靠性措施。
缺點是X.25由於要對分組層進行層間操作,對報文進行分組和重組,對相鄰節點間都要有確認和重發,因而消耗大量網路資源,增加了時延。
(習題答案,絕對正確,我這樣答得滿分)
[第四題]:為什麼乙太網與令牌環網不適用於廣域網?
因為乙太網與令牌環網屬於區域網技術,而區域網技術是為一個地點的計算機之間的聯網而設計的,它提供了少量的計算機之間的網路通信,其最致命的限制是它的規模,即一個LAN不能處理任意多的計算機,也不能連接分布在任意多地點的計算機。
而廣域網的特點是可以不斷擴展,以滿足跨越廣闊地域的多個地點、每個地點都有多個計算機之間聯網的需要。不僅如此,廣域網還應有足夠的能力,使得聯向的多個計算機能同時通信。
[第五題]:什麼是網路管理,網路管理的主要功能又是什麼。
網路管理是關於規劃、監督、設計和控制網路資源的使用和網路的各種活動。網路管理的基本目標是將所有的管理子系統集成在一起,向管理員提供單一的控制方式。
網路管理的五大功能是:配置管理、故障管理、性能管理、安全管理及計費管理。
[第六題]:1)由物理層、鏈路層,網路層、運輸層、應用層組成
(2)物理層主要是為鏈路層提供一個物理連接,以便「透明」的傳送比特流。
(3)鏈路層主要是實現與「相鄰節點」的無差錯通信。
(4)網路層主要是在端節點和端節點之間實現正確無誤的信息傳送。
(5)運輸層主要是完成從終端端點到另一終端端點的可靠傳輸服務。
(6)應用層是向網路使用者提供一個方便有效的網路應用環境。
[第七題]:服務和協議的概念,及其相乎迅互之間的關系
答:服務,本層向上一層提供的一組功能支持,它定義本層准備好代表其用戶執行什麼操作,但不管它們的具體實現。
協議,定義同層對等實體之間數據包交換格式和含義的一組規則,實體根據協議實現服務
[第八題]:為什麼乙太網與令牌環網不適用於廣域網?
因為乙太網與令牌環網屬於區域網技術,而區域網技術是為一個地點的計算機之間的聯網而設計的,它提供了少量的計算機之間的網路通信,其最致命的限制是它的規模,即一個LAN不能處理任意多的計算機,也不能連接分布在任意多地點的計算機。
而廣域網的特點是可以不斷擴展,以滿足跨越廣闊地域的多個地點、每個地點都有多個計算機之間聯網的需要。不僅如此,廣域網還應有足夠的能力,使得聯向的多個計算機能同時通信。
(樓主這題重復了)
[第九題]:什麼是網路管理,網路管理的主要功能又是什麼。
網路管理是關於規劃、監督、設計和控制網路資源的使用和網路的各種活動。網路管理的基本目標是將所有的管理子系統集成在一起,向管理員提供單一的控制方式。
網路管理的五大功能是:配置管理、故障管理、性能管理、安全管理及計費管理。
(樓主你太急了,這個和第5題重復了,不要著急)
[第十題]:為什麼TCP/IP協議對Internet很重要?
因為Internet具有的特點,需要解決網路傳輸中數據報丟失和延遲問題,而在TCP/IP協議系列中,傳輸控制協議TCP比其他通用的傳輸協議提供了可靠的傳輸服務。具體說TCP提供一個完全可靠的(沒有數據重復或丟失)、面向連接的、全雙工的流傳輸服務。允許兩個應用程序建立一個連接,並在任何一個方向上發送數據,然後終止連接。每一TCP連接可靠地建立,完美地終止,在終止發生之前的所有數據都會被可靠地傳遞。而可靠性是網際網路很多應用的基礎,所以TCP/IP協議對Internet的重要性是不言而喻的。
[第十一題]:簡述計算機網路的主要特點是什麼,以及由哪些部分構成計算機網路的組成結構
(1)計算機網路的主要特點是:用通信信道把擁有信息、硬體資源的計算機相互連接起來,共享網上的各種資源。
(2)由計算機網路的通信子網、計算機網路的高層服務、計算機網路的應用服務三部分組成。
[第十二題]:簡述什麼是單工通信、雙工通信、半雙工通信,並各舉一個實際應用的例子
答:所謂單雙工通信是指信息始終是一個方向的通信。聽廣播和看電視就是單雙工通信的典型例子。
所謂半雙工通信是指信息流可以在兩個方向傳輸,但同一時刻只限於一個方向的傳輸。對講機記得通信就是半雙工通信
所謂全雙工通信是指同時可以作雙向的通信,即通信的一方在發送信息的同時也能接受信息。計算機和計算機之間的通信多為全雙工通信,QQ聊天、打電話都是典型的例子
(先發給你了,我做了好久,怕你等不及了,一會再補充,除了第二題可能有點多外,其他的都是習題答案,找個1個小時才做完,很汗)
❾ 計算機網路體系結構及協議之運輸層
3.5.1運輸層
1.運輸層在中的地位和作用
OSI七層模型中的物理層、數據鏈路層和網路層是面向網路通信的低三層協議。運輸層負責端到端的通信,既是七層模型中負責數據通信的層,又是面向網路通信的低三層和面向信息處理的高三層之間的中間層。運輸層位於網路層之上、會話層之下,它利用網路層子系統提供給它的服務去開發本層的功能,並實現本層對會話層的服務。
運輸層是OSI七層模型中最重要、最關鍵的一層,是惟一負責總體數據傳輸和控制的一層。運輸層的兩個主要目的是:第一,提供可靠的端到端的通信;第二,向會話層提供獨立於網路的運輸服務。
在討論為實現這兩個目標所應具有的功能之前,先考察一下運輸層所處的地位。首先,運輸層之上的會話層、表示層及應用層均不包含任何數據傳輸的功能,而網路層又不一定需要保證發送站的數據可靠地送至目的站;其次,會話層不必考慮實際網路的結構、屬性、連接方式等實拍則現的細節。
根據運輸層在七層模型中的目的和地位,它的主要功能是:對一個進行的對話或連接提供可靠的運輸服務,在通向網路的單一物理連接上實現該連接的復用,在單一連接上提供端到端的序號與流量控制、端到端的差錯控制及恢復等服務。
運輸層反映並擴展了網路層子系統的服務功能,並通過運輸層地址提供給高層用戶傳輸數據的通信埠,使系統間高層資源的共享不必考慮數據通信方面的問題。
2.運輸服務
運輸層的服務包括的內容有:服務的類型、服務的等級、數據傳輸、用戶介面、連接管理、快速數據傳輸、狀態報告、安全保密等。
(1)服務類型。型賀帆運輸服務有兩大類,即面向連接的服務和無連接的服務。面向連接的服務提供運輸服務用戶之間邏輯連接的建立、維持和拆除,是可靠的服務,可提供流量控制、差錯控制和序列控制。無連接服務即數據報服務,只能提供不可靠的服務。
需要說明的是,面向連接的運輸服務與面向連接的網路層服務十分相似,兩者都向用戶提供連接的建立、維持和拆除,而元連接的運輸服務卜雹與元連接的網路層服務也十分相似。那麼,既然運輸層服務與網路層服務如此相似,又為什麼要將它們劃分成兩個層次呢?前面章節已經介紹過,網路層是通信子網的一個組成部分,網路服務質量並不可靠,如會頻繁地丟失分組、網路層系統可能崩潰或不斷地進行網路復位。對於這些情況,用戶將束手無策,因為用戶不能對通信子網加以控制,因而無法採用更優的通信處理機來解決網路服務質量低劣的問題,更不能通過改進數據鏈路層糾錯能力來改善它。解決這一問題的惟一可能辦法就是在網路層之上增加一層運輸層。運輸層的存在,使運輸服務比網路服務更可靠,分組的丟失、殘缺、甚至網路的復位均可被運輸層檢測出來,並採取相應的補救措施。而且,因為運輸服務獨立於網路服務,可以採用一種標準的原語集作為運輸服務,而網路服務則隨不同的網路可能有很大的不同。因為運輸服務是標準的,用運輸服務原語編寫的應用程序能廣泛適用於各種網路,因而不必擔心不同的通信子網所提供的不同的服務及服務質量。
(2)服務等級。運輸協議實體應該允許運輸層用戶能選擇運輸層所提供的服務等級,以利於更有效地利用所提供的鏈路及互連網路的資源。可供選擇的服務包括差錯和丟失數據的程度、允許的平均延遲和延遲、允許的平均吞吐率和最小吞吐率以及優先順序水平等。根據這些要求可將運輸層協議服務等級細分為以下四類:
①可i靠的面向連接的協議;
②不可靠的無連接協議;
③需要定序和定時傳輸的話音傳輸協議:
④需要快速和高可靠的實時協議。
(3)數據傳輸。數據傳輸的任務是在兩個運輸實體之間傳輸用戶數據和控制數據。一般採用全雙工服務,個別也可採用半雙工服務。數據可分為正常的服務數據分組和快速服務數據分組兩種,對快速服數據分組的傳輸可暫時中止當前的數據傳輸,在接收端用中斷方式優先接收。
(4)用戶介面。用戶介面機制可以有多種方式,包括採用過程調用、通過郵箱傳輸數據和參數、用DMA方式在主機與具有運輸層實體的前端處理機之間傳輸等。
(5)連接管理。面向連接的協議需要提供建立和終止連接的功能。一般總是提供對稱的功能,即兩個對話的實體都有連接管理的功能,對簡單的應用也有僅對一方提供連接管理功能的情況。連接的終止可以採用立即終止傳輸,或等待全部數據傳輸完再終止連接。
❿ 計算機網路——5.運輸層
1.網路層和運輸層的區別
2.運輸層的作用
3.基於埠的分用和復用功能
3.兩種不同的運輸協議
TCP和UDP:
解決這個問題的方法就是 在運輸層使用協議埠號 。
1.軟體埠和硬體埠:
硬體埠是 不同的硬體設備進行交互 的介面,而軟體埠是應用層的各種協議進程與運輸實體進行層間交互的 一種地址 。
2.TCP/IP運輸層埠
3.兩大類埠
常用的熟知埠 :
UDP只在IP數據報服務至上困察磨增加了很少一點功能: 復用和分用 , 差錯檢測(對數據部分) 。
1.UDP的主要特點
計算UDP檢驗和 :
TCP面向流的概念:
"停止等待"就是 每發送完一個分組就立即停止發送 , 等待對方確認 之後再發送下一汪斗個分組 (全雙工通信的雙方既是發送方又是接收方) 。
1.無差錯情況
2.出現差錯
3.確認丟失和確認遲到
在沒頃上面說到的接收方B如果收到發送方A發送的分組之後會發送回一個確認。那麼這個確認在發送的過程中也會出現錯誤情況,例如 確認丟失 和 確認遲到 。
自動重傳請求ARQ:
4.信道利用率
停止等待協議的優點是 簡單 ,缺點是 信道利用率太低 。
5.流水線傳輸
發送緩存:
接收緩存:
重傳時間的選擇時TCP最復雜的問題之一,這個時間一般比往返傳播時延稍長一點,並且 往返傳播時延很難確認 ,也就是 往返時延的方差 很大。另外,由於發送方對接收方發來的確認無法分別出到底是第一次發送的的確認還是重傳後的確認,因此往返時延變得很難確定與計算。
當發送方發送數據1,2,4,5,而3在途中丟失的情況下,接收方無法給出數據3的確認,但是數據4,5的確認已經被發送方給接收了。因此在發送方會找不到數據3以數據3後面的數據,會選擇從3開始往後全部重傳,怎麼避免這樣的問題,使得只重傳第3個數據。方法就是: 選擇確認 。
之前說過 發送方發送數據的速度取決於接收方能夠接收的速度 。一旦當發送方的發送速度過快時,接收方就會來不及接收,那麼就可能造成 數據的丟失 ,這個 傳輸就不可靠 了。流量控制就是接收方告訴發送方,你發送的數據太快了我來不及接收。這個時候就要用到 滑動窗口 。
檢測網路的擁塞的指標:
1.概述
TCP 採用 基於窗口 的方法進行 擁塞控制 。TCP發送方維持一個 擁塞窗口CWND (Congestion Window)。
2.控制擁塞窗口的原則
控制擁塞窗口的 原則 就是:只要網路 沒有出現擁塞 ,擁塞窗口就可以增大一點,以便把更多的分組發送出去,這樣就可以提高網路的利用率。但只要 網路出現擁塞 或 有可能出現擁塞 ,就必須把擁塞窗口減小一些,以減少注入到網路中的分組數,以便緩解網路出現的擁塞。
3.擁塞的判斷
4.TCP擁塞控制演算法
慢開始 (slow-start)
擁塞避免 (congestion avoidance)