计网复习——传输层习题
1. 主机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
2. 主机A向主机B发送TCP报文段,首部中的源端口是m而目的端口是n。当B向A发送回信时,其TCP报文段的首部中源端口和目的端口分别是什么?
分别是n和m。
3. 设TCP的ssthresh的初始值为8(单位为报文段)。当拥塞窗口上升到12时网络发生了超时,TCP开始使用慢开始和拥塞避免。试分别求出第1次到第15次传输的各拥塞窗口大小。你能说明拥塞控制窗口每一变化的原因吗?
拥塞窗口大小及变化原因如下表所示。
轮次 | 拥塞窗口 | 拥塞窗口变化的原因 |
---|---|---|
1 | 1 | 网络发生了超时,TCP使用慢开始算法 |
2 | 2 | 拥塞窗口值加倍 |
3 | 4 | 拥塞窗口值加倍 |
4 | 8 | 拥塞窗口值加倍,这是ssthresh的初始值 |
5 | 9 | TCP使用拥塞避免算法,拥塞窗口值加1 |
6 | 10 | TCP使用拥塞避免算法,拥塞窗口值加1 |
7 | 11 | TCP使用拥塞避免算法,拥塞窗口值加1 |
8 | 12 | TCP使用拥塞避免算法,拥塞窗口值加1 |
9 | 1 | 网络发生了超时,TCP使用慢开始算法 |
10 | 2 | 拥塞窗口值加倍 |
11 | 4 | 拥塞窗口值加倍 |
12 | 6 | 拥塞窗口值加倍,但到达12的一半时,改为拥塞避免算法 |
13 | 7 | TCP使用拥塞避免算法,拥塞窗口值加1 |
14 | 8 | TCP使用拥塞避免算法,拥塞窗口值加1 |
15 | 9 | TCP使用拥塞避免算法,拥塞窗口值加1 |
4. TCP的拥塞窗口cwnd大小与传输轮次n的关系如下所示:
cwnd | 1 | 2 | 4 | 8 | 16 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
n | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
cwnd | 40 | 41 | 42 | 21 | 22 | 23 | 24 | 25 | 26 | 1 | 2 | 4 | 8 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
n | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
(1)试画出拥塞窗口与传输轮次的关系曲线。
(2)指明TCP工作在慢开始阶段的时间间隔。
(3)指明TCP工作在拥塞避免阶段的时间间隔。
(4)在第16轮次和第22轮次之后发送方是通过收到3个重复的确认还是通过超时检测到丢失了报文段?
(5)在第1轮次、第18轮次和第24轮次发送时,门限ssthresh分别被设置为多大?
(6)在第几轮次发送出第70个报文段?
(7)假定在第26轮次之后收到了三个重复的确认,因而检测出了报文段的丢失,那么拥塞窗口cwnd和门限ssthresh应设置为多大?
(2)慢开始时间间隔:[1, 6]和[23, 26]。
(3)拥塞避免时间间隔:[6, 16]和[17, 22]。
(4)在第16轮次之后发送方通过收到三个重复的确认,检测到丢失了报文段,因为题目给出,下一个轮次的拥塞窗口减半了。在第22轮次之后发送方是通过超时检测到丢失了报文段,因为题目给出,下一个轮次的拥塞窗口下降到1了。
(5)在第1轮次发送时,门限ssthresh被设置为 32,因为从第6轮次起就进入了拥塞避免状态,拥塞窗口每个轮次加1;在第18轮次发送时,门限ssthresh被设置为发生拥塞时拥塞窗口42的一半,即21;在第24轮次发送时,门限ssthresh被设置为发生拥塞时拥塞窗口26的一般,即13。
(6)
第1轮次发送报文段1。(cwnd=1)
第2轮次发送报文段2,3。(cwnd=2)
第3轮次发送报文段4~7。(cwnd=4)
第4轮次发送报文段8~15。(cwnd=8)
第5轮次发送报文段16~31。(cwnd=16)
第6轮次发送报文段32~63。(cwnd=32)
第7轮次发送报文段64~94。(cwnd=33)
因此第70报文段在第7轮次发送出。
(7)检测出了报文段的丢失时拥塞窗口cwnd是8,因此拥塞窗口cwnd的数值应当减半,等于4,而门限ssthresh应设置为检测出报文段丢失时拥塞窗口8的一半,即4。
5. 下面是以十六进制格式存储的一个UDP首部:CB84000D001C001C。试问:
(1)源端口号是什么?
(2)目的端口号是什么?
(3)这个用户数据报的总长度是什么?
(4)数据长度是什么?
(5)这个分组是从客户到服务器方向的,还是从服务器到客户方向的?
(6)客户进程是什么?
(1)源端口号是最前面的四位十六进制数字( C B 8 4 16 CB84_{16} CB8416),算出十进制的源端口号是 12 ∗ 1 6 3 + 11 ∗ 1 6 2 + 8 ∗ 1 6 1 + 4 ∗ 1 6 0 = 49152 + 2816 + 128 + 4 = 52100 12*16^3+11*16^2+8*16^1+4*16^0=49152+2816+128+4=52100 12∗163+11∗162+8∗161+4∗160=49152+2816+128+4=52100。
(2)目的端口号是第二个四位十六进制数字( 000 D 16 000D_{16} 000D16),算出十进制的目的端口是13。
(3)第三个四位十六进制数字( 001 C 16 001C_{16} 001C16)定义了整个UDP分组的长度,算出是 1 ∗ 1 6 1 + 12 ∗ 1 6 0 = 28 1*16^1+12*16^0=28 1∗161+12∗160=28字节。
(4)数据的长度是整个分组的长度减去首部的长度,也就是 28 − 8 = 20 28-8=20 28−8=20字节。
(5)因为目的端口号是13(数值端口),所以这个分组是从客户到服务器的。
(6)从RFC 867可以得知,这个客户进程是Daytime。当Daytime服务器收到客户发送的用户数据报后,就把现在的日期和时间以ASCII码字符串的形式返回给用户。
6. TCP连接使用1000字节的窗口值,而上一次的确认号是22001。它收到了一个报文段,确认号是22401。试用图来说明这之前与之后的窗口情况。
7. 同上题。但接收方收到确认号是22401的报文段时,其窗口字段变为1200字节。试用图来说明在这之前与之后的窗口情况。
8. 用TCP传送512字节的数据。设窗口为100字节,而TCP报文段每次也是传送100字节的数据。再设发送方和接收方的起始序号分别选为100和200,试画出类似于教材图5-28的工作示意图。从连接建立阶段到连接释放阶段都要画上。
以上部分内容引自《计算机网络释疑与习题解答》,如有侵权,请及时联系我删除!