📌  相关文章
📜  教资会网络 | UGC NET CS 2018 年 7 月 – II |问题 94(1)

📅  最后修改于: 2023-12-03 14:54:51.435000             🧑  作者: Mango

UGC NET CS 2018 年 7 月 – II | 问题 94

本次考试中的问题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:是主机与主机之间在一个给定的TCP连接期间每个IP数据报中发送字节的最大数量。
  • TCP段:TCP协议通过将数据分成小的块,每个块包含TCP头和数据,进行数据传输。每个TCP块称为“段”。
  • Acks:确认号是TCP协议中的一个字段,用于确定在对等方处发送的所有数据都已成功接收。

在问题中,我们可以注意到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字节正文长度。