📅  最后修改于: 2023-12-03 14:54:51.435000             🧑  作者: Mango
本次考试中的问题94与程序员息息相关。该问题主要涉及计算机网络和TCP / IP协议方面的内容。对于拥有计算机网络和TCP / IP知识的程序员来说,获得高分将会更加容易。以下是对问题94的介绍:
考虑以下TCP / IP协议场景:
A和B是两个主机。一个TCP进程在主机A上运行,并通过端口号666与另一个TCP进程在主机B上运行的Socket连接。主机A在连接上发送一个容量3048字节的文件,接收端为主机B。
假设MSS(最大段大小)为512字节。假设在连接的一个某个点,主机A收到一个TCP段Acks的最后一个字节。假设在此之前,所有先前发送的所有TCP段都已正确传输。以下语句之一正确地描述了主机A将如何发出下一个TCP段的部分。
(A) 主机A将发送从最后确认字节开始的文件中的下一个完整段,该段大小为512字节。
(B) 主机A将发送从最后确认字节开始的文件的下一个完整段,大小为512字节,但对于最后一个段,该文件大小可能为减小到不到512。
(C) 主机A将发送从最后确认字节开始,大小为1436字节的文件段。
(D) 主机A将发送从最后确认字节开始,大小为1436字节的文件段,并设置更改大段大小选项以允许从现在开始,所有段都具有1436字节正文长度。
在理解问题的正确答案之前,我们需要了解一些概念。如下所示:
在问题中,我们可以注意到MSS为512字节,说明每个TCP段长度为512字节。
在连接的任何给定点之前,所有先前发送的数据段都已正确传输 ACK。这表示主机B知道有没有接收到来自主机A的数据。因此,主机A接下来需要重新传输的任何数据都需要从最后一个ACK的确认号开始,因为主机B已经知道这个确认号以及它之前的所有数据,这是一个有效的起点。
既然文件大小为3048字节,每个段的长度为512字节,那么在传输数据期间,我们将传输6个512字节长度的TCP段,以及之后的240字节长度的TCP段,总共有7个段分别为:
512, 512, 512, 512, 512, 512, 240 bytes
对于上述情况,正确答案为选项C。
最后的数据段大小将小于MSS(512)。因此,不能再发送一个512字节的TCP段,因为这将发送一些未修改的字节。而专门为“这次特殊的情况”创建TCP段又是没有必要的。因此,我们可以选择设置MSS,以便在将来的传输期间发送所有和/或更少的字节数。这可以通过更改MSS大小来实现,但必须使最大MSS等于最后一个TCP段的确切大小。因此,主机A将发送从最后确认字节开始,大小为1436字节的文件段。此外,它还将设置更改大段选项以允许从现在开始,所有段都具有1436字节正文长度。