《計算機網絡教程》(微課版 第五版)第五章 運輸層 課後習題及答案

第5章

5-1 試說明運輸層在協議棧中的地位和做用。運輸層的通訊和網絡層的通訊有什麼重要區別?
解答:從通訊和信息處理的角度看,運輸層向它上面的應用層提供端到端通訊服務,它屬於面向通訊部分的最高層,同時也是用戶功能中的最低層。當位於網絡邊緣部分的兩臺主機使用網絡核心部分的功能進行端到端的通訊時,只有主機的協議棧纔有運輸層,而網絡核心部分中的路由器在轉發分組時都只用到下三層的功能。
雖然網絡層實現了主機到主機的邏輯通訊,但嚴格地講,通訊的真正端點並非主機而是主機中的進程。所以,運輸層在網絡層之上提供應用進程間的邏輯通訊。web

5-2 當應用程序使用面向鏈接的TCP和無鏈接的IP時,這種傳輸是面向鏈接的仍是無鏈接的?
解答:從網絡層看是無鏈接的,但從運輸層看是面向鏈接的。算法

5-3 接收方收到有差錯的UDP用戶數據報時應如何處理?
解答:丟棄且不通知發送方。緩存

5-4 在「滑動窗口」概念中,「發送窗口」和「接收窗口」的做用是什麼?若是接收方的接收能力不斷地發生變化,則採起何種措施能夠提升協議的效率。
解答:「發送窗口」做用是限制發送方連續發送數據的數量,即控制發送方發送數據的平均速率。「接收窗口」反映了接收方當前接收緩存的大小,即接收方接收能力的大小。當接收方的接收能力不斷地發生變化時,能夠將接收窗口的大小發送給發送方,調節發送方的發送速率,避免因發送方發送速率太大或過小而致使接收緩存的溢出或帶寬的浪費,從而提升協議的效率。服務器

5-5 簡述TCP和UDP的主要區別。
解答:TCP提供的是面向鏈接、可靠字的字節流服務,而且有流量控制和擁塞控制功能。UDP提供的是無鏈接、不可靠的數據報服務,無流量控制和擁塞控制。網絡

5-7 若是因特網中的全部鏈路都提供可靠的傳輸服務,TCP可靠傳輸服務將會是徹底多餘的嗎?爲何?
解答:TCP可靠傳輸服務不是多餘的。由於在端到端的數據傳輸過程當中並非全部的差錯都來自分組在鏈路上傳輸時的比特級差錯,例如因爲網絡擁塞致使路由器的分組丟棄,路由器在轉發分組時的故障等都會致使端到端的數據傳輸的差錯,這些都不可能經過鏈路層的可靠數據傳輸得以解決,必須由端到端的運輸層可靠數據傳輸服務來解決。tcp

5-8 解釋爲何忽然釋放運輸鏈接就可能會丟失用戶數據,而使用TCP的鏈接釋放方法就可保證不丟失數據。
解答:假定A和B之間創建了TCP鏈接。若是A發送完數據在尚未接收到對方確認時就忽然釋放鏈接,則不能保證這些沒有被確認的數據在傳輸中不會丟失。
若是A在收到B對全部發送數據的確認後釋放鏈接,A發送的數據不會丟失,可能B還在數據發送,這些數據A都沒法正確收到。
TCP的鏈接釋放在兩個方向都要發送鏈接釋放請求和確認,保證數據不丟失。svg

5-9 試用具體例子說明爲何在運輸鏈接創建時要使用三次聯絡。說明如不這樣作可能會出現什麼狀況。
解答:這主要是爲了防止已失效的鏈接請求報文段忽然又傳送到了TCP服務器,致使創建錯誤的鏈接而浪費資源,如圖所示。
在這裏插入圖片描述大數據

5-11 主機A和B使用TCP通訊。在B發送過的報文段中,有這樣連續的兩個:ack = 120和ack = 100。這可能嗎(前一個報文段確認的序號還大於後一個的)?試說明理由。
解答:通常不會,由於TCP的接收方採用的是累積確認,確認號不會倒退。但當出現失序時會有這種狀況出現。設想A連續發送兩個報文段:(seq = 92,DATA共8字節)和(seq =100,DATA共20字節),均正確到達B。B連續發送兩個確認:(ack = 100) 和 (ack = 120)。但前者在網絡中傳送時經歷了很大的時延,使得A先收到B後發送的確認。圖A-1說明了這一狀況。見圖A-1。3d

在這裏插入圖片描述
5-12 在使用tcp傳送數據時,若是有一個確認報文段丟失了,也不必定會引發與該確認報文段對應的數據的重傳,試說明理由
這是由於發送方可能還未重傳時,就收到了對更高序號的確認。 例如主機A連續發送兩個報文段:(SEQ=92,DATA共8B)和(SEQ=100,DATA共20B),均正確到達主機B,B連續發送兩個確認:(ACK=1 00)和(ACK=1 20)。但前者在傳送時丟失了,例如A在第一個報文段(SEQ=92,DATA共8B)超時以前收到了對第二個報文段的確認(ACK=I 20),此時A知道,11 9號和在1 1 9號以前的全部字節(包括第一個報文段中的全部字節)均已B正確接收,所以A不會再重傳第一個報文段。xml

5-13 請簡要比較TCP的可靠傳輸實現與GBN算法的主要異同。
解答:TCP接收窗口大小不爲1,發送窗口和接收窗口大小動態變化,而GBN接收窗口爲1。
TCP標準沒有規定對不按序到達的數據應如何處理。一般是先臨時存放在接收窗口中,等到字節流中所缺乏的字節收到後,再按序交付上層的應用進程。
TCP和GBN都是採用累積確認方式,但在發生超時,TCP發送方僅對超時的分組重傳,而GBN是重傳窗口內全部已發送的分組。
TCP的編號以字節爲單位,而GBN以分組爲單位。
所以TCP的算法介於GBN和SR之間。

5-14 若是收到的報文段無差錯,只是未按序號,則 TCP 對此未做明確規定,而是讓 TCP 的實現者自行肯定。試討論兩種可能的方法的優劣:
(1)將不按序的報文段丟棄。     
(2)先將不按序的報文段暫存與接收緩存內,待所缺序號的報文段收齊後再一塊兒上交應用層。

解答:(1)第一種方法將不按序的報文段丟棄,會引發被丟棄報文段的重複傳送,增長對網絡帶寬的消耗,但因爲用不着將該報文段暫存,可避免對接收方緩衝區的佔用。  
(2)第二種方法先將不按序的報文段暫存於接收緩存內,待所缺序號的報文段收齊後再一塊兒上交應用層;這樣有可能避免發送方對已經被接收方收到的不按序的報文段的重傳,減小對 網絡帶寬的消耗,但增長了接收方緩衝區的開銷。

5-15 設 TCP 使用的最大窗口尺寸爲 64 KB,即 64∗102464∗1024,TCP 報文在網絡上的平均往返時間爲 20 ms。問 TCP 所能獲得的最大吞吐量是多少?(假設傳輸信道的帶寬是不受限的)
在平均往返時間 20ms 內,發送的最大數據量爲最大窗口值,即:
在這裏插入圖片描述

5-18 TCP 接收方收到 3 次重複的 ACK 就執行快速重傳。爲何不在第一次接收到重複的ACK後就快速重傳?
① 因爲數據分組亂序到達,如 A、B、C 分組,B 分組到達後,接收端發送一個但願獲得 A 分組的 ACK,接着 C 分組到達,接收端又發送一個但願獲得 A 分組的A CK。
② 因爲網絡延遲形成的,如 A 分組,A 分組在超太重傳超時間隔的時間後到達,此時接收端已經發生了一個但願獲得 A 分組的 ACK,發送端重傳分組 A,因爲網絡延遲,A 分組又在超太重傳超時間隔的時間後到達,接收端又已經發送了一個但願獲得 A 分組的ACK。

5-19 用TCP傳送512字節的數據。設窗口爲100字節,而TCP報文段每次也是傳送100字節的數據。再設發送方和接收方的起始序號分別選爲100和200,試畫出相似於圖5-15的工做示意圖。從鏈接創建階段到鏈接釋放都要畫上。
解答
在這裏插入圖片描述

5-21 在下圖所示的鏈接釋放過程當中,主機A在發送完對B的鏈接釋放請求報文段的確認後,爲何還要等待一段超時時間再完全關閉鏈接?
在這裏插入圖片描述
由於主機A的確認有可能丟失,這時B會重傳FIN報文段。在這段超時時間內,若A又收到B重傳的FIN報文段,A須要再次進行確認。收到A的最後確認,B才能最終將整個鏈接釋放。主機A的TCP再向其應用進程報告,整個鏈接已經所有釋放。

5-23 是否 TCP 和 UDP 都須要計算往返時間 RTT?
① 往返時延RTT只是對運輸層的TCP協議才很重要,由於TCP要根據平均往返時延RTT的值來設置超時計時器的超時時間。 UDP沒有確認和重傳機制,所以RTT對UDP沒有什麼意義。 所以,不要籠統地說「往返時延RTT對運輸層來講很重要」,由於只有TCP才須要計算RTT,而UDP不須要計算RTT。

5-24 在 TCP 的往返時間的估計中,你認爲爲何 TCP 忽略對重傳報文段的往返時間測量值的 RTT 樣本。
由於分組丟失差錯和過早超時均可能致使發送方重傳分組,所以發送方沒法肯定接收到的確認是對原來發送的分組的確認仍是對重傳的分組進行確認。若認爲是對重傳的分組進行確認,而其實是過早超時,該分組是對原來發送的分組的確認,則可能測量值 RTT 樣本比實際值要小。

5-27 使用TCP對實時話音數據的傳輸有沒有什麼問題?使用UDP在傳送數據文件時會有什麼問題?
解答:TCP的流量控制和擁塞控制和可靠數據傳輸機制會致使比較大的分組時延抖動,而大的時延抖動會嚴重影響實時話音數據傳輸的質量。因爲數據文件的傳輸須要可靠數據傳輸,所以在使用UDP在傳送數據文件時須要應用程序本身實現可靠數據傳輸功能。

5-28 TCP在進行擁塞控制時是以分組的丟失做爲產生擁塞的標誌。有沒有不是因擁塞而引發的分組丟失的狀況?若有,請舉出三種狀況。
解答:有。一是信道誤碼致使中間結點將分組丟棄;二是路由錯誤致使分組在網絡中兜圈子最後被路由器丟棄;三是中間路由器在接收了分組尚未轉發出去時故障,致使分組丟失。這些狀況發生的機率都比較小。

5-31 一個UDP用戶數據報的數據字段爲8192字節,要使用以太網來傳送,試問應該劃分爲幾個數據報片?說明每個數據報片的數據字段長度和片偏移字段的值。
6,以太網幀能夠承載不超過1500字節的數據。其中包含20字節的IP首部(不考慮可選字段),即以太網幀能夠承載的UDP數據報的長度不超過1480。題目中UDP數據報的數據字段的長度爲8192字節,加上首部的8字節,共8200字節。8200/1480=5.54,所以應當將原數據報劃分爲6個數據報片。
數據字段的長度:前5個是1480字節,最後一個是800字節。
片偏移字段的值分別是:0,185,370,555,740和925.。

5-32 簡述TCP流量控制和擁塞控制的不一樣。
解答:流量控制解決因發送方發送數據太快而致使接收方來不及接收使接收方緩存溢出的問題。流量控制的基本方法就接收方根據本身的接收能力控制發送方的發送速率。TCP採用接收方控制發送方發送窗口大小的方法來實如今TCP鏈接上的流量控制。
擁塞控制就是防止過多的數據注入到網絡中,這樣可使網絡中的路由器或鏈路不致過載。TCP的發送方維持一個叫作擁塞窗口的狀態變量。擁塞窗口的大小取決於網絡的擁塞程度,當網絡擁塞時減少擁塞窗口的大小,控制TCP發送方的發送速率。TCP發送方的發送窗口大小取接收窗口和擁塞窗口的最小值。

5-33 在 TCP 的擁塞控制中,什麼是慢開始、擁塞避免、快重傳和快恢復算法? 這裏每一種算法各起什麼做用? 「乘法減少」 和 「加法增大」 各用在什麼狀況下?
慢開始:

  • 在主機剛剛開始發送報文段時可先將擁塞窗口cwnd設置爲一個最大報文段MSS的數值。在每收到一個對新的報文段的確認後,將擁塞窗口增長至多一個MSS的數值。用這樣的方法逐步增大發送端的擁塞窗口cwnd,能夠分組注入到網絡的速率更加合理。

擁塞避免:

  • 當擁塞窗口值大於慢開始門限時,中止使用慢開始算法而改用擁塞避免算法。擁塞避免算法使發送的擁塞窗口每通過一個往返時延RTT就增長一個MSS的大小。

快重傳算法規定:

  • 發送端只要一連收到三個重複的ACK便可判定有分組丟失了,就應該當即重傳丟手的報文段而沒必要繼續等待爲該報文段設置的重傳計時器的超時。

快恢復算法:

  • 當發送端收到連續三個重複的ACK時,就從新設置慢開始門限 ssthresh
  • 與慢開始不一樣之處是擁塞窗口 cwnd 不是設置爲 1,而是設置爲ssthresh
  • 若收到的重複的AVK爲n個(n>3),則將cwnd設置爲ssthresh
  • 若發送窗口值還允許發送報文段,就按擁塞避免算法繼續發送報文段。
  • 若收到了確認新的報文段的ACK,就將cwnd縮小到ssthresh

乘法減少:

  • 是指不論在慢開始階段仍是擁塞避免階段,只要出現一次超時(即出現一次網絡擁塞),就把慢開始門限值 ssthresh 設置爲當前的擁塞窗口值乘以 0.5。
    當網絡頻繁出現擁塞時,ssthresh 值就降低得很快,以大大減小注入到網絡中的分組數。

加法增大:

  • 是指執行擁塞避免算法後,在收到對全部報文段的確認後(即通過一個往返時間),就把擁塞窗口 cwnd增長一個 MSS 大小,使擁塞窗口緩慢增大,以防止網絡過早出現擁塞。

5-34 TCP使用慢啓動和擁塞控制,設TCP的擁塞窗口閾值的初始值爲8(單位MSS)。從慢啓動開始,當擁塞窗口上升到12時網絡發生了超時。試畫出每一個「輪次」TCP擁塞窗口的演變曲線圖(橫座標爲「輪次」,縱座標爲擁塞窗口大小)。說明擁塞窗口變化的緣由。
擁塞窗口大小分別爲:1,2,4,8,9,10,11,12,1,2,4,6,7,8,9。

依照原理,首先執行TCP鏈接初始化,將擁塞窗口cwnd值置爲1;其次執行慢開始算法,cwnd按指數規律增加,所以隨後窗口大小分別爲2,4,8。當擁塞窗口cwnd=ssthresh時,進入擁塞避免階段,其窗口大小依次是9,10,11,12,直到上升到12爲止發生擁塞;而後把門限值ssthresh設置爲當前的擁塞窗口值乘以0.5,門限值ssthresh變爲6,;而後進入慢開始,cwnd值置爲1,cwnd按指數規律增加,隨後窗口大小分別爲1,2,4,6,當擁塞窗口cwnd=ssthresh時,進入擁塞避免階段,其窗口大小依次是7,8,9。
在這裏插入圖片描述

5-36 爲何 TCP 擁塞控制中對發送方收到 3 個重複 ACK 和超時時間採用不一樣的處理方法?
當發送方收到個冗餘 ACK 說明網絡可能丟失了少許分組,但後續多個分組都被接收方收到了, 所以網絡擁塞並不嚴重,TCP 執行快速恢復算法,將擁塞窗口減半,直接進入擁塞避免階段。而當超時事件發生時,說明發送的一連串分組都丟失了,網絡擁塞比較嚴重,所以將擁塞窗口減小到最小,開始執行慢開始。

5-37 考慮圖 5-20 中的例子,若將主機 C 到 R1的鏈路帶寬提升到 10 000 Mbit/s,則所能達到的最大吞吐量大約會是多少?
約 11 Mbit/s。

5-38 考慮到下圖的網絡,路由器之間的鏈路帶寬爲 100 Mbit/s,假設主機到路由器的鏈路帶寬無限。主機 A 到 C 的連接通過 R2,B 到 D 的鏈接通過 R3,C 到 A 的鏈接通過 R4,D 到 B 的鏈接過 R1 。若無擁塞控制,各主機逐漸增大發送速率,會出現什麼狀況?
在這裏插入圖片描述 隨着各主機逐漸增大發送速率,網絡總吞吐量逐漸增大到 200 Mbit/s(各主機發送速率爲 50 Mbit/s),而後網絡總吞吐量逐漸減小,當個主機發送速率增大到無窮大時,網絡總吞吐量趨近於 0,即路由器之間的 4 條鏈路均滿負載,單個主機之間的分組傳送均失敗。