1、
第三章课后习题
考虑在主机A和主机B之间有一条TCP连接。假设从主机A传送到主机B的TCP报文段具有源端口号x和目的端口号y。对于从主机B传送到主机A的报文段,源端口号和目的端口号分别是多少?
2、 3、
描述应用程序开发者为什么可能选择在UDP上运行应用程序而不是在TCP上运行的原因。
假定在主机C上的一个进程有一个具有端口号6789的UDP套接字。假定主机A和主机B都用目的端口号6789向主机C发送一个UDP报文段。这两台主机的这些报文段在主机C都被描述为相同的套接字吗?如果是这样的话,在主机C的该进程将怎样知道源于两台不同主机的这两个报文段?
4、在我们的rdt协议中,为什么需要引入序号?
5、在我们的rdt协议中,为什么需要引入定时器?
6、是非判断题:
a. 主机A经过一条TCP连接向主机B发送一个大文件。假定主机B没有数据发往主
机A。因为主机B不能随数据捎带确认,所以主机B将不向主机A发送确认。 b. 在连接的整个过程中,TCP的rwnd的长度决不会变化。
c. 假设主机A通过一条TCP连接向主机B发送一个大文件。主机A发送但未被确认
的字节数不会超过接收缓存的大小。
d. 假设主机A通过一条TCP连接向主机B发送一个大文件。如果对于这条连接的一
个报文段的序号为m,则对于后继报文段的序号将必然是m+1。
e. TCP报文段在它的首部中有一个rwnd字段。
f. 假定在一条TCP连接中最后的SampleRTT等于1秒,那么对于该连接的
TimeoutInterval的当前值必定大于等于1秒。
g. 假设主机A通过一条TCP连接向主机B发送一个序号为38的4个字节的报文段。
在这个相同的报文段中,确认号必定是42。
7、
假设主机A通过一条TCP连接向主机B发送两个紧接着的TCP报文段。第一个报文段的序号为90,第二个报文段序号为110。 a. 第一个报文段中有多少数据?
b. 假设第一个报文段丢失而第二个报文段到达主机B。那么在主机B发往主机A
的确认报文中,确认号应该是多少?
8、UDP和TCP使用反码来计算它们的检验和。假设你有下面3个8比特字节:
01010011,01100110,01110100。这些8比特字节和的反码是多少?(注意到尽管UDP和TCP使用16比特的字来计算检验和,但对于这个问题,你应该考虑8比特和。)写出所有工作过程。UDP为什么要用该和的反码,即为什么不直接使用该和呢?使用该反码方案,接收方如何检测出差错?1比特的差错将可能检测不出来吗?2比特的差错呢?
9、当数据分组和确认分组发生篡改时,给出rdt3.0协议运行的轨迹。你画的轨迹应当类似
于图3-16中所用的图。
10、考虑在图3-14中的rdt2.2接收方,在状态“等待来自下层的0”和状态“等待来自下层
的1”中的自转换(即从某状态转换回自身)中生成一个新分组:sndpk=make_pkt(ACK, 1, checksum)和sndpk=make_pkt(ACK, 0, checksum)。如果这个动作从状态“等待来自下层的1”中的自转换中删除,该协议将正确工作吗?评估你的答案。在状态“等待来自下层的0”中的自转换中删除这个事件将会怎样?[提示:在后一种情况下,考虑如果第一个发送方到接收方的分组损坏的话,将会发生什么情况?]
11、对下面的问题判断是非,并简要地证实你的回答:
a. 对于SR协议,发送方可能会收到落在其当前窗口之外的分组的ACK。 b. 对于GBN协议,发送方可能会收到落在其当前窗口之外的分组的ACK。 c. 当发送方和接收方窗口长度都为1时,比特交替协议与SR协议相同。 d. 当发送方和接收方窗口长度都为1时,比特交替协议与GBN协议相同。