马宏伟《计算机网络A》Chapter3-作业解答.docx

上传人:聆听****声音 文档编号:720757 上传时间:2023-04-29 格式:DOCX 页数:8 大小:66.38KB
下载 相关 举报
马宏伟《计算机网络A》Chapter3-作业解答.docx_第1页
第1页 / 共8页
马宏伟《计算机网络A》Chapter3-作业解答.docx_第2页
第2页 / 共8页
马宏伟《计算机网络A》Chapter3-作业解答.docx_第3页
第3页 / 共8页
马宏伟《计算机网络A》Chapter3-作业解答.docx_第4页
第4页 / 共8页
马宏伟《计算机网络A》Chapter3-作业解答.docx_第5页
第5页 / 共8页
马宏伟《计算机网络A》Chapter3-作业解答.docx_第6页
第6页 / 共8页
马宏伟《计算机网络A》Chapter3-作业解答.docx_第7页
第7页 / 共8页
马宏伟《计算机网络A》Chapter3-作业解答.docx_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

马宏伟《计算机网络A》Chapter3-作业解答.docx

《马宏伟《计算机网络A》Chapter3-作业解答.docx》由会员分享,可在线阅读,更多相关《马宏伟《计算机网络A》Chapter3-作业解答.docx(8页珍藏版)》请在冰点文库上搜索。

马宏伟《计算机网络A》Chapter3-作业解答.docx

第三章作业及解答

1.两个应用进程使用UDP交换数据。

设发送端传输三个字节数据给接收端进程,三个字节数据为:

(010101011010101000110011)2。

假设发送端进程的端口号为1024,接收端进程的端口号为80。

为简化问题,我们假设只有UDP

Segment的头部和数据两部分参与校验和的计算(实际上,UDP校验和计算中还包括一个伪头部)。

1)以十六进制形式描述计算校验和之前的UDP Segment。

注意,UDP

Segment总长度必须是偶数。

不足的,补一个全零字节。

答:

根据RFC768-UserDatagramProtocol规定,如果UDPSegment的总长度为奇数字节,需要补一个全零的填充字节,以使参与Checksum运算的字节数为偶数。

但UDPSegment头部的Length字段的值为Segment的实际长度,并不包含这个填充字节(填充字节只用做Checksum计算)。

源端口号为1024,即(0000010000000000)2,(0400)hex;

目的端口号为80,即(0000000001010000)2,(0050)hex;

长度为11字节(8字节头部,3字节数据),即(00000000 00001011)

2,(000B)hex;

Checksum全为0,即(0000000000000000)2,(0000)hex;三字节数据加上一个填充字节,Segment的数据部分为

(01010101101010100011001100000000)2,(55AA3300)hex

因此,在计算Checksum前,Segment的十六进制形式为:

0400

0050

000B

0000

55AA

3300

2)UDPSegment校验和的计算过程及结果。

0000010000000000

源端口号

0000000001010000

目的端口号

0000010001010000

0000000000001011

Segment长度

答:

第一步,求和:

0000010001011011

0000000000000000 校验和字段(其实加不加对结果没影响)

0000010001011011

0101010110101010 前两个字节的数据

0101101000000101

0011001100000000 第三字节数据和填充字节

1000110100000101

第二步:

对和按位取反,得到校验和:

0111001011111010注意:

UDP计算checksum的方法如下:

1)决定是否需要在数据最后添加一个全0字节,以便使UDP

Segment的总长度为偶数字节。

但添加的这个字节并不计入总长度;

2)Checksum字段的值初始化为(0000)hex;

3)将整个Segment(包含头部和数据)分成2字节(16位)的单元;

4)求所有2字节单元的和,产生的进位要加在和上;

5)将最终求得的和按位取反,得到checksum。

2.假设,主机C中Web服务器进程的端口号为80,该Web服务器使用持续

(persistent)连接,正在接收来自不同主机A和B的请求。

这些请求是被发向主机C的同一个Socket吗?

如果是发向不同的Socket,这些Socket均使用端口

80吗?

讨论并解释。

答:

对于每个持续连接,Web服务器将创建单独的“connectionsocket”。

每个connectionsocket由四元组(源地址,源端口号,目的地址,目的端口)标识。

当主机C收到一个IP数据报(datagram),将检查数据报中这四个字段的值来确定将Segment交给哪个Socket。

因此,A和B的请求将被交给不同的Socket。

两个Socket的标识有一个共同点:

即两个socket的目的端口号相同,均为80,但两个Socket的源IP地址不同,两个Socket的源端口号通常情况也不同(由于这两个Socket分别位于主机A和B)。

3.一个简单的同步消息交换协议。

考虑两个网络实体(A和B)之间使用完美的双向信道连接(发送的任意消息将被正确地接收,分组不会损坏、丢失、乱序)。

A和B交替地向对方发送数据消息:

最初,A向B发送消息;然后B必须向

A发送消息;然后A必须向B发送消息,以此类推。

画出该协议的FSM(A和

B分别描述)。

不用考虑可靠传输机制,主要描述反映两个实体同步行为的

FSM。

可以使用下述的事件和动作,它们与课本第138页的rdt1.0的含义相同。

rdt_send(data), packet=make_pkt(data),udt_send(packet);rdt_rcv(packet), extract(packet,data),delver_data(data)。

协议必须保证A和B发送消息的严格交替关系,以及指明A和B的FSM

的初始状态。

答:

4.课本第192页,习题14。

答:

设信道的利用率为Usender,信道的折返时间为RTT秒,分组长度为L(bits),信道的传输速率为R(bps),窗口长度为N。

则信道利用率Usender为:

Usender

=N*L/RRTT+L/R

如果要求Usender>=0.9,则N*L/R/(RTT+L/R)>=0.9

即:

N>=0.9(RTT*R/L+1)

根据题意,RTT=30ms=0.03s,分组长度L为8000 bits,链路速率为

109bps。

将这些数值代入上式,得到:

N>=0.9(0.03*109/8000+1)

N>=3375.9

因此,如果要使信道利用率超过0.9,窗口长度至少为3376个分组。

注意:

窗口长度的单位是分组的数量。

5.课本第

192页,习题18。

答:

假设窗口长度为N,本题中N=3。

a)考虑两种极端情况:

(1) 根据题意,Receiver正在等待第k号分组,意味着k-1及以前的分组已经被Receiver成功收到,并且对第k-1,k-2,k-3号的确认已经发送。

极端情况下,在时刻t,Sender还未收到对k-1,k-2,k-3分租的确认。

则此时,Sender窗口中等待确认的分组序号是k-3,k-2,k-1;

(2) 另外一种极端情况是,假设在时刻t,Sender已经收到了对k-3,k-2,k-1号分组的确认。

由于窗口大小为3,Sender可以再发送3个分组,在窗口中的序号便为k,k+1,k+2。

综上,Sender的发送窗口中的可能分组序号为k-3,k-2,k-1,k,k+1,k+2。

一般化,t时刻发送窗口中的可能分组序号为[K-N,K+N-1]中的连续的三个值。

b)根据题意,在t时刻,Receiver希望接收k号分组,意味着序号<=k-1的分组均已经被成功收到,并且发送了对序号<=k-1分组的确认。

但是,这些确认可能还在向Sender传输的过程中,还没有到达Sender。

因此,正在传输但还未到达Sender的ACK可能的确认号为k-3,k-2,k-

1。

正在向Sender返回的ACK不可能是对k-4号分组的确认。

否则,

Sender不可能发送k-1号分组,进而Receiver不可能正在等待k号分组。

6.课本第

193页,习题23。

答:

A. 32位序号,最大序号为232-1=4294967295

B.L的最大值就是232字节

C.Segment的数量为:

é232ù

ê ú

ê1460ú



ê ú

é232ù

因此,附加的头部共长

ê1460ú*66=194156028

bytes

传输的数据和头部总长:

232+194,156,028(bytes)

=3591*107(bits)

在10Mbps链路上传输,需要3591秒。

7.主机A和B通过TCP连接进行通信。

主机B已经从A收到了序号144及以前的所有字节。

假设A然后向B背靠背(连续)发送了两个segment,其中第一个包含20字节的数据,第2个包含40字节数据。

第一个Segment的序号为145,源端口号为303,目的端口号为80。

主机B在收到A发送的Segment后立即发送确认。

1)A向B发送的第二个Segment的序号、源端口号、目的端口号是多少?

答:

A向B发送的第二个Segment的序号为165,源端口号为303,目的端口号为80。

2)如果第一个Segment在第二个Segment前到达B,B发送的确认中,源端口、目的端口和确认号分别为多少?

答:

收到第一个Segment后,B向A发送确认。

则该确认的确认号为

165,源端口号为80,目的端口号为303。

3)如果第二个Segment在第一个Segment之前到达B,则接收方B对第一个Segment的确认中,确认号是多少?

答:

如果第二个Segment先于第一个Segment到达B,则B向A发送确认

的确认号为145。

4)假设A发送的两个Segment按顺序到达B。

第一个确认丢失,但第二个确认在第一个Segment的超时间隔后到达A,如下图所示。

将下图补充完整,给出所有segment和ACK的发送和接收情况(假设没有其他的分组丢失)。

对每个在图中增加的Segment,提供其序号、数据长度;对每

个添加的ACK提供其确认号。

答:

由于B对第一个Segment的确认丢失,且对第二个Segment的确认在第一个Segment超时前没有到达A。

则A重传第一个Segment(在图中增加的一个Segment,标号为①),当B收到重传的Segment后,会产生一个确认(在图中增加的一个Segment,标号为②)。

标号为①的Segment:

序号为145,数据长度为20字节;标号为②的Segment,即ACK,确认号为205。

8.TCP的拥塞控制。

考虑通过一个无丢失TCP连接发送一个大文件的情况。

1)假定TCP采用没有慢启动的AIMD作为拥塞控制机制。

假设每隔

RTT,CongWin增加一个MSS,且RTT时间恒定。

则CongWin从

1MSS增大到5MSS需要多长时间(假设没有丢失,RTT为常量)?

答:

发送一个大文件,意味着发送方总是有数据等待传输。

假设连接刚建立时的时间为t,此时,CongWin=1MSS。

则:

到t+RTT时,CongWin增大为2MSS;

到t+2RTT时,CongWin增大为3MSS;到t+3RTT时,CongWin增大为4MSS;到t+4RTT时,CongWin增大为5MSS。

因此,CongWin从1MSS增大到5MSS共需要4RTT时间。

2)到时间=4RTT时,该连接的平均吞吐率是多少?

答:

在第一个RTT内,发送了1MSS的数据;

在第二个RTT内,发送了2MSS的数据;

在第三个RTT内,发送了3MSS的数据;在第四个RTT内,发送了4MSS的数据。

因此,从连接建立开始,到时间t=4RTT时,发送方共发送了

1MSS+2MSS+3MSS+4MSS=10MSS

则该连接的平均吞吐率为10MSS/4RTT=2.5MSS/RTT

9.课本第194页,习题33。

答:

a. 有两段,分别为[1,6],[23,26].

b. 有两段,分别为[6,16],[17,22].

c.在16周期后,拥塞窗口变为原来的一半,因此,发生了3-dup

ACK事件.

d.在22周期后,拥塞窗口变成了1。

因此,发生了超时。

e.32

f.21

g.13

h.第70个报文是在第7个周期中发送的.

因为,第1,2,3,4,5,6,7个周期中,窗口分别为1,2,4,

8,16,32,33。

即发送方在第1,2,3,4,5,6,7个周期中分别发送了

1,2,4,8,16,32,33个报文.

i.窗口为4,Threshold也为4.

10.TCP拥塞控制:

假设TCP的Sender窗口大小为N,窗口的SendBase为x,且Sender刚刚发送完一个完整的窗口数据。

假设RTT为Sender-to-Receiver-to-

Sender的折返时间,MSS为Segment大小。

1)在Receiver-to-Sender信道中可能有对序号小于x的Segment的确认吗?

证明你的答案。

答:

可能。

假设,Sender发送分组x-1,由于超时(但分组及其确认均没有

丢失,只是由于ACK多度延迟),发送方重传分组x-1。

因此,网络中存在着两个x-1号分组。

接收方收到第一个序号为x-1的分租并且发送

ACK,发送方收到第一个ACK后将SendBase设置为x。

此时,仍然

可能存在Receiver对分组x-1的确认正在向Sender传输。

因此,在

Receiver到Sender方向的信道中可能存在对序号小于x的Segment的确认。

2)假设没有分组丢失。

Sender-to-Receiver连接的吞吐率(瞬时)是多少

(packets/sec)

答:

假设窗口以Segment为单位。

发送方在一个RTT内可以发送N个Segment,每个Segment的大小为MSS字节。

因此,吞吐率为

N*MSS/RTT。

3)假设TCP正处于拥塞避免阶段。

如果没有丢失,则N个Segment被确认后的窗口大小是多少?

答:

(N+1)MSS。

在拥塞避免阶段,每隔一个RTT,窗口增加一个MSS。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2