计算机网络原理(第三章) 传输层 课后习题
1、實現(xiàn)可靠數(shù)據(jù)傳輸?shù)闹饕胧┯心男?這些措施主要用于解決哪些問題?P98
差錯檢測:利用差錯編碼實現(xiàn)數(shù)據(jù)包傳輸過程中的比特差錯檢測
確認:確認方向發(fā)送方反饋接收狀態(tài)
重傳:發(fā)送方重新發(fā)送接收方?jīng)]有正確接收的數(shù)據(jù)
序號:確保數(shù)據(jù)按序提交
定時器:解決數(shù)據(jù)丟失問題
2、UDP和TCP分別如何實現(xiàn)復用和分解?P97
在Internet網(wǎng)絡(luò)中,唯一標識套接字的基本信息是IP地址和端口號。UDP基于目的IP地址和目的端口號二元組唯一標識一個UDP套接字,從而可以實現(xiàn)精確分解;
TCP則需要基于源IP地址、源端口號、目的IP地址、目的端口號四元組唯一標識一個TCP套接字(即一個TCP連接),從而實現(xiàn)精確分解。
3、請畫出TCP報文段結(jié)構(gòu),并簡要說明各個字段的主要作用?P113
0----------------------------16-----------------------------31
源端口號(16) 目的端口號(16)
序號(32)
確認序號(32)
首部長度(4) 保留(6)UAPRSF(各1) 接收窗口(16)
校驗和(16) 緊急指針(16)
選項(長度可變) 填充字段(0-3字節(jié) 全0)
1.源端口號與目的端口號各占16位,標識發(fā)送該報文段的源端口和目的端口,用于多路復用/分解來自或送到上層應用的數(shù)據(jù)。
2.序號字段與確認序號字段分別占32位。TCP的序號是對每個應用層數(shù)據(jù)的每個字節(jié)進行編號,因此每個TCP報文段的序號是該段所封裝的應用層數(shù)據(jù)的第一個字節(jié)的序號。
確認序號是期望從對方接收數(shù)據(jù)的字節(jié)序號,即該序號對應的字節(jié)尚未收到,該序號之前的字節(jié)已全部正確接收,也就是說,TCP采用累積確認機制
3.首部長度字段占4位,指出TCP段的首部長度,以4個字節(jié)為計算單位,例如該字段值為5時,表示TCp首部長度為20字節(jié)。
由于TCP選項字段的原因,TCP首部的長度是可變的。當該字段取最大值15時,表示TCP端的最大首部長度,即60個字節(jié)。可見,TCP段的選項字段最多為40字節(jié)。
4.保留字段占6位,保留為今后使用,目前值為0
5.URG、ACK、PSH、RST、SYN、FIN字段各占1位,共占6位,為6位標志位。
URG=1時,表明緊急指針字段有效,通知系統(tǒng)此報文段中有緊急數(shù)據(jù),應盡快上送。
ACK=1時,標識確認序號字段有效;ACK=0時,確認序號字段無效。
TCP收到PSH=1的報文段時,就盡快將報文段中的數(shù)據(jù)交付接收應用進程,而不再等到整個緩存都填滿了后再向上交付。
RST=1時,表明TCP連接中出現(xiàn)嚴重差錯(如由于主機崩潰或其他原因),必須釋放連接,然后重新建立TCP連接
SYN=1時,表示此TCP報文段是一個建立新連接請求控制段或者是同意建立新連接的確認段(此時ACK=1)
FIN用于釋放一個TCP連接,FIN-1時表示該TCP報文段的發(fā)送端數(shù)據(jù)已發(fā)送完畢,并請求釋放TCP連接
6.接收窗口字段占16位,用于向?qū)Ψ酵ǜ娼邮沾翱诖笮?單位為字節(jié)),表示接收方愿意接受的應用層數(shù)據(jù)字節(jié)數(shù)量,其值是本端接收對方數(shù)據(jù)的緩存剩余空間,用于實現(xiàn)TCP流量控制
7.校驗和字段占16位。校驗和字段檢驗的范圍類似于UDP,包括TCP偽首部、TCP首部和應用層數(shù)據(jù)3部分,計算方法與UDP校驗和的計算方法相同
8.緊急指針字段占16位,該字段只用URG=1時才有效。該字段指出本TCP報文段中緊急數(shù)據(jù)共有多少字節(jié)(緊急數(shù)據(jù)放在本報文段數(shù)據(jù)的最前面),即指出緊急數(shù)據(jù)最后一個字節(jié)在數(shù)據(jù)中的位置。
9.選項字段長度可變。最大段長度MSS、接收窗口擴大選項(3字節(jié))、時間戳選項(10字節(jié))、選擇性確認(SACK)選項
10.填充字段,長度為0-3字節(jié),取值全為0,目的是為了使整個首部長度是4字節(jié)的整數(shù)倍。
4、TCP為何采用三次握手來建立連接,若采用二次握手可以嗎?為什么?P115
TCP之所以采用三次握手建立連接,是為了確保連接雙方彼此完全清楚雙方狀態(tài)(比如初始序列號和接收窗口大小等),從而可靠、穩(wěn)定的建立連接,
同時,通過三次握手建立連接還可以有效預防過期、失效的連接請求到達后,導致無效連接的建立。
三次握手缺一不可,因為網(wǎng)絡(luò)存在數(shù)據(jù)丟失,第二次握手控制段可能丟失,這樣主動發(fā)起連接的一方?jīng)]有接收到第二次握手的控制段,則無法建立連接,而接受連接建立的一方則認為連接已建立,從而出現(xiàn)無效鏈接。
另外,二次握手建立連接,也無法避免失效連接請求。
5、請說明TCP建立連接與斷開連接的過程,并給出主要狀態(tài)轉(zhuǎn)移?P117
建立連接:
第一次握手:客戶端作為連接建立的發(fā)起端,選擇客戶端初始序列號x,向服務器發(fā)送(SYN=1,seq=x)的SYN段。客戶狀態(tài)由LISTEN進入SYN_SEND狀態(tài),等待服務器確認。
第二次握手:服務端收到客戶端發(fā)送的SYN段后,選擇服務器的初始序列號y,向客戶端發(fā)送(SYN=1,ACK=1,seq=y,ack_seq=x+1)的SYNACK段。同時,服務器狀態(tài)由LISTEN進入SYN_RCVD狀態(tài)。
第三次握手:客戶端收到服務器的SYNACK段后,向服務器發(fā)送(ACK=1,seq=x+1,ack_seq=y+1)的ACK段,同時,客戶端進入ESTABLISHED狀態(tài),客戶端確認連接已建立。服務的收到ACK段后,也進入ESTABLISHED狀態(tài),也確認連接已建立。
斷開連接:
第一次揮手:當客戶向服務器發(fā)送完最后一個數(shù)據(jù)段后,可以發(fā)送一個FIN段(FIN=1,seq=u),請求斷開客戶到服務器的連接,其狀態(tài)又ESTABLISHED進入FIN_WAIT_1,該狀態(tài)只能接受服務器發(fā)送的數(shù)據(jù),而不能發(fā)送數(shù)據(jù)。
第二次揮手:服務器接收到客戶的FIN段后,向客戶發(fā)送一個ACK段(ACK=1,seq=v,ack_seq=u+1),ACK段可封裝應用層數(shù)據(jù)。服務器狀態(tài)由ESTABLISHED進入CLOSE_WAIT,該狀態(tài)服務器仍可發(fā)送數(shù)據(jù),但不再接收數(shù)據(jù)。
客戶端收到ACK段后,狀態(tài)由FIN_WAIT_1進入FIN_WAIT_2,仍然可以接收來自于服務器的數(shù)據(jù)。此時TCP連接已經(jīng)關(guān)閉了客戶端向服務器方向的數(shù)據(jù)傳輸,故稱半關(guān)閉。
第三次揮手:服務器發(fā)送完最后一個數(shù)據(jù)段后,服務器向客戶發(fā)送FIN段(FIN=1,seq=w,ack_seq=u+1),服務器狀態(tài)由CLOSE_WAIT進入LAS_ACK,此時服務器不再發(fā)送數(shù)據(jù)。
第四次揮手:客戶收到服務器發(fā)送的FIN段后,向服務器發(fā)送ACK段(ACK=1,seq=U+1,ack_seq+w+1),狀態(tài)由FIN_WAIT_2進入TIME_WAIT,等待2MSL時間,進入CLOSE狀態(tài),最終釋放連接;
服務器接收到最后一次ACK段,狀態(tài)由LAST_ACK進入CLOSE,最終釋放連接。
6、TCP如何保證可靠數(shù)據(jù)傳輸?P119
TCP的可靠數(shù)據(jù)傳輸實現(xiàn)機制包括差錯編碼、確認、序號、重傳、計時器等。
序列號是每個字節(jié)編號;確認序號為期望接收的字節(jié)序號,TCP通常采用累積確認;通常采用單一的重傳計時器,計時器超時時間采用自適應算法設(shè)置超時時間;重傳數(shù)據(jù)段主要針對兩類事件,計時器超時或三次重復確認。
7、請分別簡述GBN協(xié)議和SR協(xié)議的工作過程?
GBN協(xié)議的發(fā)送窗口大于1,接收窗口等于1;GBN協(xié)議的發(fā)送方如果超時,則重發(fā)所有已經(jīng)發(fā)送單未收到確認的分組;GBN協(xié)議采用累積確認。
SR協(xié)議采用每個分組單獨確認;每個已發(fā)送的分組需要獨立計時,如果某個分組超時,只需重發(fā)該分組;SR協(xié)議的發(fā)送窗口和接收窗口都大于1。
滑動窗口協(xié)議的窗口大小與序號空間需要滿足一個約束條件,發(fā)送窗口大小與接收窗口大小之和不大于分組序號空間大小。
8、說明TCP滑動窗口機制,對比TCP滑動窗口與GBN協(xié)議的異同?
9、TCP和UDP的主要區(qū)別是什么?
10、TCP如何實現(xiàn)擁塞控制?
慢啟動
擁塞避免
快速重傳
快速恢復
11、假設(shè)甲乙雙方采用GBN協(xié)議發(fā)送報文段,甲已經(jīng)發(fā)送了編號0-7的報文段。當計時器超時時,若甲只收到0號和3號報文段的確認,則甲需要重發(fā)的報文段有哪些?
因為GBN協(xié)議采用累積確認,所以甲需要重發(fā)的報文段是4-7.
12、主機甲乙通過128kbit/s衛(wèi)星信道互連,采用滑動窗口協(xié)議發(fā)送數(shù)據(jù),鏈路單向傳播時延為250ms,分組長度為1000字節(jié)。不考慮確認分組的開銷,為使信道利用率不小于80%,分組序號的位數(shù)至少要達到多少位?
傳輸時延d=L/R=(81000)(bit)/(1281000)(bit/s)=0.0625s=62.5ms 傳播時延250ms RTT=2250ms=500ms
信道利用率U=Ws(L/R)/(RTT+L/R)=62.5/(500+62.5)>=0.8 Ws>=7.2 Ws最小取8 Ws+Wr<=2K wr最小取1 k至少需要4位
13、若甲乙之間已建立一條TCP連接,擁塞控制處于擁塞避免階段,閾值為8MSS,當甲的擁塞窗口大小為24MSS時發(fā)生了超時,則甲的擁塞窗口和閾值將分別調(diào)整為多少?
閾值=24/2=12
擁塞窗口=1
14、主機甲與主機乙之間已建立一條TCP連接,主機甲向主機乙發(fā)送了兩個連續(xù)的TCP段,分別包含300字節(jié)和500字節(jié)的有效荷載,第一個段的序列號是200,主機乙正確接收到兩個段后,發(fā)送給主機甲的確認序列號是多少?
第一個報文段的確認序列號是200+300=500 第二個報文段的確認序列號是500+500=1000
15、主機甲和主機乙之間已建立一條TCP連接,主機甲向主機乙發(fā)送了3個連續(xù)的TCP報文段,分別包含300字節(jié)、400字節(jié)和500字節(jié)的有效荷載,第3個段的序號為900,若主機乙僅正確接收到第1和第3個報文段,則主機乙向主機甲的確認序號是多少?
500
16、主機甲與主機乙之間已建立一條TCP連接,雙方持續(xù)有數(shù)據(jù)傳輸,且數(shù)據(jù)無差錯與丟失。若甲收到一個來自于乙的TCP報文段,該段的序號為1913,確認序號為2046,有效荷載為100字節(jié),則甲立即發(fā)送給乙的報文段的序號和確認序號分別為多少?
序號:2046
確認序號:1913+100=2013
17、主機甲和主機乙已建立了TCP連接,甲始終以MSS=1KB大小的報文段發(fā)送數(shù)據(jù),并一直有數(shù)據(jù)發(fā)送;乙每收到一個報文段都會發(fā)出一個接收窗口為10KB的確認段。若甲在t時刻發(fā)生超時時擁塞窗口為8KB,
則從t時刻起,不再發(fā)生超時的情況下,經(jīng)過10RTT后,甲的發(fā)送窗口是多少?
t時刻,ssthresh設(shè)置為8KB/2=4KB 擁塞窗口設(shè)置為1KB 經(jīng)過10個RTT后,擁塞窗口分別為1,2,4,5,6,7,8,9,10,11,12 發(fā)送窗口取擁塞窗口和接收窗口的最小值。所以選10KB 124為慢啟動階段,5-12位擁塞避免階段
18、主機甲和主機乙之間已經(jīng)建立了一個TCP連接,TCP最大段長度為1000字節(jié)。若主機甲的當前擁塞窗口為4000字節(jié),此時主機甲向主機乙連續(xù)發(fā)送兩個最大段后,成功收到主機乙發(fā)送的對第一個段的確認,確認段中通告的接收窗口大小為2000字節(jié),
則隨后甲還可以繼續(xù)向主機乙發(fā)送的最大字節(jié)數(shù)是多少?
1000
總結(jié)
以上是生活随笔為你收集整理的计算机网络原理(第三章) 传输层 课后习题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: error while loading
- 下一篇: /usr/include/c++/6/c