1. 計算機網路謝希仁編著的第六版第四章課後習題答案
第4 章 網路層
4-01網路層向上提供的服務有哪兩種?試比較其優缺點。
答案:虛電路服務和數據報服務。
虛電路的優點:虛電路服務是面向連接的,網路能夠保證分組總是按照發送順序到達目的站,且不丟失、不重復,提供可靠的端到端數據傳輸;目的站地址僅在連接建立階段使用,每個分組使用短的虛電路號,使分組的控制信息部分的比特數減少,減少了額外開銷;端到端的差錯處理和流量控制可以由分組交換網負責,也可以由用戶機負責。虛電路服務適用於通信信息量大、速率要求高、傳輸可靠性要求高的場合。
虛電路的缺點:虛電路服務必須建立連接;屬於同一條虛電路的分組總是按照同一路由進行轉發;當結點發生故障時,所有通過出故障的結點的虛電路均不能工作。
數據報的優點:數據報服務不需要建立連接;每個分組獨立選擇路由進行轉發,當某個結點發生故障時,後續的分組可以另選路由,因而提高了通信的可靠性。數據報服務的靈活性好,適用於傳輸可靠性要求不高、通信子網負載不均衡、需要選擇最佳路徑的場合。
數據報的缺點:數據報服務是面向無連接的,到達目的站時不一定按發送順序,傳輸中的分組可能丟失和重復,提供面向無連接的、不可靠的數據傳輸;每個分組都要有目的站的全地址;當網路發生故障是,出故障的結點可能會丟失數據,一些路由可能會發生變化;端到端的差錯處理和流量控制只由主機負責。
答案太多傳不上來,留下郵箱可以發給你..........
2. 計算機網路試(謝希仁)試題
呵呵,做廣告的?呵呵,我現在不需要了!
3. 謝希仁《計算機網路》(第4版)第3-08題答案是什麼呀
演算法流程:
發送方:
1)從主機去一個數據幀,送交發送緩存.
2)V(S) 0{發送狀態變數初始化}
3)N(S) V(S){將發送狀態變數值寫入數據幀中的發送序號}
4)應答序號初始化
5)判斷發送緩沖區以滿,卻未收到應答幀.是則到(6),否則到(8)
6)出現差錯,喚醒超時計數器,將所有幀重新全部發送到緩存
7)若收到應答幀,則到(9);再次超時並未收到應答幀,則返回(6)
8)收到應答幀後,從上層獲取數據,並寫入發送緩沖區當前位置
9)組裝發送幀編碼
10)發送數據幀,並加發送序號加1
11)設置超時計數器
12)在所設置的超時時間收到確認幀,則轉到(8);若出現差錯,則轉到(13)
13)超時計數器往回走,將未收到的第n個幀及以後的所有幀全部進行重傳
14)若仍產生差錯則繼續(13),若受到確認幀則繼續傳數據幀,則轉到(15)
15)接受幀,取得接收方希望接受的幀編號,返回(1)
接收方:
1)V(R) 0{接受狀態變數初始化,其數值等於與接收的數據幀的發送序號}
2)等待
3)收到一個數據幀,若N(S)= V(R),則執行(4),否則,丟棄此數據幀
4)發送確認幀ACKn
5)檢查收到的幀是否按序,進行V(R)'=(V(R)+1)mod 8檢驗.若不按序則丟棄第n-1幀後的所有幀,重新發送ACKn
6)重新接收未收到的幀
7)將收到的數據幀中的數據部分送交上層軟體
8)更新接受狀態變數V(R) [V(R)+1]mod 8,轉到2)
演算法代碼:
#define MAX_SEQ 7 /* 應該為2^n-1 */
typedef enum {frame_arrival, cksum_error, timeout, network_layer_ready} event_type;
#include protocal.h
static boolean between(seq_nr a, seq_nr b, seq_nr c)
{ /* 如果b落在a和c之間(含a不含c)返回true,否則返回false. */
if (((a<=b) && (b<c)) || ((c<a) && (a<=b)) || ((b<c) && (c<a)))
return(true); else return(false); }
static void send_data(seq_nr frame_nr, seq_nr frame_expected, packet buffer[])
{/* 構造和發送數據幀
frame s; /* 起始變數 */
s.info=buffer[frame_nr]; /* 插入分組到幀中 */
s.seq=frame_nr; /* 插入序號到幀中 */
s.ack=(frame_expected+MAX_SEQ) % (MAX_SEQ+1) /* 捎帶應答 */
to_physical_layer(&s); /* 傳送該幀 */
start_timer(frame_nr); }
/* 啟動定時器 */
void protocal5(void)
{seq_nr next_frame_to_send; /* MAX_SEQ>1; 用於外出流 */
seq_nr ack_expected; /* 還沒有得到應答的最早的幀 */
seq_nr frame_expected; /* 進入流期望的下一幀 */
frame r; /* 初始變數 */
packet buffer[MAX_SEQ+1] /* 外出流的緩存 */
seq_nr nbuffered; /* 當前正在使用的輸出緩存 */
event_type event;
enable_network_layer(); /* 允許 network_layer_ready 事件 */
ack_expected = 0; /* 下一個期望進入的應答 */
next_frame_to_send = 0; /* 下一個要送出的幀 */
frame_expected = 0; /* 期望進入的幀的序號 */
nbuffered = 0; /* 初始沒有分組被緩存 */
while (true) {
wait_for_event ( &event); /* 四種可能的事件,見上面event_type定義 */
switch (event) {
case network_layer_ready; /* 網路層有一個分組要發送 */
/* 接收, 保存, 以及發送一個新的幀 */
from_network_layer(&buffer[next_frame-to_send]); /* 獲得一個新的分組 */
nbuffered = nbuffered + 1; /* 增加發送方的窗口 */
send_data(next_frame_to_send, frame_expected, buffer); /* 發送幀 */
inc(next_frame_to_send); /* 發送方的窗口上界向前移動 */
break;
case frame_arrival: /* 一個數據幀或控制幀到達 */
from_physical_layer(&r); /* 從物理層得到一個進入的幀 */
if (r.seq == frame_expected) {
/* 所有的幀只能按序接收. */
to_network_layer(&r.info); /* 傳遞分組到網路層 */
inc(frame_expected); /* 接收方的窗口下界向前移動 */ }
/* Ack n 意味著n-1,n-2,
while (between(ack_expected, r.ack, next_frame_to_send))
{ /* 處理捎帶應答 */
nbuffered = nbuffered + 1; /* 減少一個緩存的幀 */
stop_timer(ack_expected); /* 幀完好到達, 停止定時器 */
inc(ack_expected); /* 壓縮發送窗口 */
}
break;
case cksum_err: break; /* 丟棄壞幀 */
case time_out: /* 重傳所有超時的幀 */
next_frame_to_send = ack_expected; /* 開始重傳 */
for (i = 1; i <= nbuffered; i ++) {
send_data(next_frame_to_send, fram_expected, buffer); /* 重發1幀 */
inc(next_frame_to_send); /* 准備發送下一幀 */
if (nbuffered < MAX_SEQ)
enable_network_layer();
else
disable_network_layer();
注: 演算法中所有調用的未說明的過程和函數在protocal.h中定義。
4. 求解CSMA/CD的一道題!計算機網路第五版(謝希仁) 第3章25題!!
t=0時,A,B開始傳輸數據; t=225比特時間,A和B同時檢測到發生碰撞; t=225+48=273比特時間,完成了干擾信號的傳輸; 開始各自進行退避演算法: A: 因為rA=0,則A在干擾信號傳輸完之後立即開始偵聽 t=273+225(傳播時延)=498比特時間,A檢測到信道開始空閑 t=498+96(幀間最小間隔)=594比特時間,A開始重傳數據 -----第一問A的重傳時間 t=594+225 (傳播時延)=819比特時間,A重傳完畢 ----第二問A重傳的數據幀到達B的時間 B: 因為rB=1,則B在干擾信號傳輸完之後1倍的爭用期,即512比特時間才開始偵聽 t=273+512=785比特時間,B開始偵聽 若偵聽空閑,則 t=785+96(幀間最小間隔)=881比特時間,B開始重傳數據 若偵聽費空閑,則繼續退避演算法 又因為t=819比特時間的時候,A才重傳數據完畢,所以B在785比特時間偵聽的時候,肯定會偵聽信道非空閑,即B在預定的881比特時間之前偵聽到信道忙, 所以,第四問的答案:B在預定的881比特時間是停止發送數據的。 即第三問A重傳的數據不會和B重傳的數據再次發生碰撞。
5. 2019年同等學力申碩計算機綜合試題解析--計算機網路
本文解析的原文出處都是《計算機網路第七版謝希仁》
一、填空題
1. 乙太網的爭用期是指(乙太網的端到端往返時間2 ),乙太網發送數據使用(曼切斯特)編碼
解析: 第一空出處教材P88,第七段第三句: 「因此乙太網的端到端往返時間2 稱為爭用期」
第二空原話出處教材p86,第二段第一句:「 乙太網發送的數據都使用曼切斯特編碼 的信號」
2. 一個廣域網傳輸比特率是4Kbps,傳播時延為20ms,若採用停-等協議效率是50%,幀長至少為(160)位
解析: 停止等待協議概念出處P213,
傳播時延為20ms,則往返時延rtt為40ms,效率即為信道利用率,設分組時延為T, , 忽略不計,把已知數據代入公式求出
幀長度為 (式子中有單位轉換),因此幀長度最少為160位。
3. 一個網段的網路號為130.10.3.0/21,子網掩碼可以寫為(255.255.248.0)
解析:用位與的方法即可求出。
4. TCP協議中發送窗口的大小應該由(擁塞)窗口和(接收)窗口中較小的一個決定
二、 選擇題
1. 數據鏈鏈路層採用後退N幀協議,若發送窗口大小是16,那至少需要(C)位序號才能保證不出錯
A. 7
B.6
C.5
D.4
解析: 發窗口的大小 ,n代表序號位數,n位序號要減去0的組合,最大窗口只有n個1表示為 ,因此該題選C
2. 一台主機的IP地址為152.68.70.3,子網掩碼為255.255.224.0,必須路由器才能與該主機通信的是(A)
A.152.68.62.23
B.152.68.67.15
C.152.68.85.220
D.152.68.90.30
解析: 根據子網掩碼可知網路號是19位,主機IP為152.68.70.3,與子網掩碼按位求與,其網路號為152.68.64.0,把子網掩碼與選項中ip按位求與得到,A的網路號為152.68.32.0,其他選項的網路號為152.68.64.0,因此A與題干中ip不在一個網路,因此要路由器通信。
3. 對分片後的數據進行重組的是(B)
A.中間主機
B. 目的主機
C. 核心路由器
D.下一跳路由器
解析: IP協議規定,只有最終的目的主機才可以對分片數據報進行重組,這樣做有兩個好處:首先,在目的主機上進行重組減少了路由器的計算量,當轉發一個IP數據報時,路由器不需要知道它是不是個分片;其次,路由器可以為每個分片獨立選擇路由,每個分片到達目的地所經過的路徑可以不同。
4. CIDR地址塊192.168.10.0/20所包含的IP地址范圍是(D)
A.192.168.10.0-192.168.12.255
B.192.168.10.0-192.168.13.255
C.192.168.10.0-192.168.14.255
D.192.168.10.0-192.168.15.255
解析: 根據題干192.168.10.0/20可以得到
子網掩碼是 ,
IP地址的二進製表示為:
因此原題干IP范圍為
192.168.10.0-192.168.15.255
5. 一個由25台計算機組成的通信網路,網路中任意兩台計算機之間的往返時延為20ms,他們之間採用UDP協議進行請求和響應,如果40ms內未收到響應,該計算機立即重傳請求,但很快網路發生崩潰,解決辦法是(D)
A.增加超時計時器時間
B.增加路由中隊列長度
C.在接收方使用滑動窗口機制防止緩沖區溢出
D.超時後重傳請求時,使用二進制指數退避演算法
解析: P88,二進制指數退避演算法用來確定碰撞後重傳時機,這種演算法讓發生碰撞的站在停止發送數據後,不是等待信道變為空閑後就立即再發送數據,而是推遲一個隨機的時間。
三、名詞解釋
1.BGP協議
解析: (P164第三段和第四段)
BGP邊界網關協議,是不同AS的路由器之間交換路由信息的協議。BGP力求尋找一條能夠到達目的網路且比較好的路由,而並非要尋找一條最佳路由。BGP採用路徑向量路由選擇協議。
2.DHCP協議
解析: (P295-P296)
動態主機配置協議DHCP提供了一種機制,即插即用連網,這種機制允許一台計算機加入新的網路和獲取IP地址而不用手工參與。DHCP對於運行客戶軟體和服務軟體器軟體都適用。DHCP使用客戶伺服器方式。DHCP伺服器分配給DHCP客戶的IP是臨時的,因此DHCP客戶只能在一段有限時間內使用這個分配到的IP地址。
四、計算
1. 一台路由器收到一個1500位元組的IPv4分組,IP頭部為20位元組,如果需要將該分組轉發到一個MTU為500位元組的鏈路上,
1)該IP分組共分成幾個分片,長度分別為多少位元組
2)最後一個分片的片偏移是多少位元組
解析:
(1)IP頭部20個位元組,而轉發mtu500位元組,因此數據量只有480位元組。1500個位元組分成4組,前三組都是480+20 = 500位元組,其中數據長度為480位元組,共用了1440個位元組,原來的數據量為1500-20=1480,因此第四組長度為 1480-1440 +20= 60位元組,其中數據長度為40位元組。
(2)最後一個分片的片偏移了三個分組,mtu大小為500位元組,ip佔20個位元組,每片大小最大為480,片偏移必須為8位元組的整數倍。
第一個片偏移是:0/8 = 0,第二個片偏移是:480/8=60;
第三個片偏移是:480*2/8=960/8=120, 第四個片偏移是:480*3/8=1440/8=180, 因此得到答案180。
2. 一個TCP連接使用256Kbps鏈路,其端到端的傳輸時延為128ms,實際吞吐量是128Kbps,若忽略數據封裝開銷及接收方響應分組的發送時間,發送窗口大小是多少位元組
解析: 實際吞吐量為128Kbps,使用的是256Kbps的鏈路,則說明信道利用率只有50%
ms,發送窗口大小即發送分組長度的大小,根據信道利用率公式: , 其中 忽略不計,rtt代入公式求出分組時間T=256ms,
則窗口大小為
3. 客戶端C和S之間建立一個TCP連接,該連接總是以1KB的最大段長發送TCP段,C有足夠數據發送,當擁塞窗口為32KB時,收到了三個重復的ACK報文,如果接下來4個RTT時間內TCP段的傳輸是成功的,那麼在當四個RTT時間內發送的TCP段都得到ACK,擁塞窗口大小是多少?採用了怎樣的擁塞機制?
解析: (P234-P235)有題干可知MSS=1KB,當收到3個重復確認時,就知道接收方確實沒有收到最近發的那個報文段,立即使用 快重傳 ,此時不是用慢啟動而是使用 快恢復 演算法,接下來的 第一個rtt ,發送放調整門限ssthresh = cwnd /2 = 32/2 = 16KB,於此同時設置擁塞窗口cwnd = ssthresh = 16KB。之後並開始執行 擁塞避免演算法 ,因此接下來的連續 3個rtt 都是連續加法增大,因此最終擁塞窗口cwnd = 16+3*MSS = 19KB
因此該擁塞機制過程為: 快重傳 → 快恢復 → 擁塞避免
6. 謝希仁計算機網路答案
答:a=τ/T0=τC/L=100÷(2×108)×1×109/L=500/L,信道最大利用率Smax =1/(1+4.44a),最大吞吐量Tmax=Smax×1Gbit/s幀長512位元組時,a=500/(512×8)=0.122, Smax =0.6486,Tmax=648.6 Mbit/s幀長1500位元組時,a=500/(1500×8)=0.0417,Smax =0.8438 ,Tmax=843.8 Mbit/s幀長64000位元組時,a=500/(64000×8)=0.000977,Smax =0.9957,Tmax=995.7 Mbit/s可見,在端到端傳播時延和數據發送率一定的情況下,幀長度越大,信道利用率越大,信道的最大吞吐量月越大。
7. 關於謝希仁計算機網路的一道IP地址分配的題,請大家幫忙解決,謝謝!
從字面上理解,你這個題目是一個考VLAN的題目。
主機位全1和主機位全0的地址是不能分配給主機的。如果你說lan3錯了,那你的lan1也錯了,6位主機位,有32個地址,但要去掉全1和全0的,就只剩30了,都沒有給網關的地址了。
你最好能把圖掛上來,干講不夠直觀。
8. 計算機網路第七版謝希仁著課後習題答案!!!!跪求
詳細請見:網頁鏈接