资料下载

TCP协议 标志选项-第4节

由管理员撰写。发表于 TCP协议 协议分析

4.2857142857143 1 1 1 1 1 评分4.29(56投票)
压住他

正如我们在前几页中所看到的,一些TCP段承载数据,而其他一些则是对先前接收到的数据的简单确认。流行的三向握手利用TCP中可用的SYN和ACK帮助在传输数据之前完成连接。

我们的结论是,每个TCP段都有一个目的,这是借助TCP标志选项确定的,允许发送方或接收方指定应使用的标志,以便另一端正确处理该段。

让我们看一下TCP标志字段以开始我们的分析:

tcp-analysis-section-4-1

您可以看到在3次握手(SYN,ACK)和数据传输期间使用的2个标志。

与所有标志一样,值“ 1”表示特定标志已被“设置”,或者,如果您愿意,还处于“开”状态。在此示例中,仅设置了“ SYN”标志,指示这是新TCP连接的第一段。

除此之外,每个标志的长度为1位,并且由于有6个标志,因此使Flags部分总共6位。

 

 

 您必须同意,最流行的标志是用于建立连接,确认段成功传输以及最后终止连接的“ SYN”,“ ACK”和“ FIN”。尽管其余标志并不为人所知,但它们的作用和目的在某些情况下也同样重要。

我们将通过检查从顶部开始的所有六个标志即紧急指针开始分析:

 

1st Flag-紧急指针

如上一个屏幕截图所示,第一个标志是“紧急指针”标志。此标志用于将传入数据标识为“紧急”。这样的传入段不必等到接收端消耗了之前的段,而是直接发送并立即进行处理。

在主机向正在远程计算机上运行的应用程序发送数据的数据传输流期间,可以使用紧急指针。如果出现问题,则主机需要中止数据传输并在另一端停止数据处理。通常情况下,中止信号将在远程计算机上发送并排队,直到处理完所有先前发送的数据为止,但是,在这种情况下,我们需要立即处理中止信号。

通过将中止信号的段“紧急指针”标志设置为“ 1”,远程计算机将不等到处理所有排队的数据后再执行中止。相反,它将赋予该特定段优先级,立即对其进行处理并停止所有进一步的数据处理。

如果发现难以理解,请考虑以下真实示例:

在您当地的邮局,数百辆卡车正在卸载来自世界各地的信件袋。由于进入邮局大楼的卡车数量众多,它们排成一列,等待轮到他们卸下行李。

结果,队列最终变得很长。但是,带有红色大标志的卡车突然加入了队列,安全人员的工作是确保没有卡车跳过队列,看到红色标志,并知道它携带着非常重要的字母,需要紧急到达目的地。 。通过遵循正常程序,安全员会向卡车发出信号,使其跳过队列,一直到最前面,从而使其优先于其他卡车。

在此示例中,卡车代表到达其目的地并在缓冲区中排队等待处理的分段,而带有红色标志的卡车是设置了紧急指针标志的分段。

要注意的另一点是紧急指针字段的存在。该字段在第5节中进行了介绍,但是我们可以简要地提到,当“紧急指针”标志设置为“ 1”(这就是我们在此处分析的那个)时,“紧急指针”字段会指定紧急数据结束处在段中的位置。

 

第二旗-致谢

确认标志用于确认数据包的成功接收。

如果在使用TCP传输数据时运行数据包嗅探器,您会注意到,在大多数情况下,对于您发送或接收的每个数据包,都会出现一个确认。因此,如果您从远程主机收到了一个数据包,那么您的工作站很可能会发送回一个ACK字段设置为“ 1”的数据包。

在某些情况下,发送方每发送3个数据包就需要一个确认,接收端将发送一次预期的ACK(接收到第3个连续数据包)。这也称为窗口化,在随后的页面中将进行广泛介绍。

 

第三旗-推

像紧急标志一样,存在推标志,以确保为数据赋予优先级(应有的优先级)并在发送或接收端进行处理。在数据传输的开始和结束时经常使用此特定标志,从而影响在两端处理数据的方式。

当开发人员创建新的应用程序时,他们必须确保遵循RFC给出的特定准则,以确保其应用程序正常运行并完美地管理进出OSI模型的应用程序层的数据流。使用时,推入位可确保正确处理数据段并在虚拟连接的两端赋予适当的优先级。

当主机发送其数据时,它将暂时在TCP缓冲区(内存中的特殊区域)中排队,直到该段达到一定大小,然后发送给接收器。这种设计通过创建多个段,但将它们组合成一个或多个更大的段,可以确保数据传输尽可能高效,而不会浪费时间和带宽。

当该段到达接收端时,在将其传递到应用程序层之前,将其放置在TCP输入缓冲区中。在传入缓冲区中排队的数据将保留在那里,直到其他段到达为止,一旦完成,该数据将传递到等待它的应用程序层。

尽管此过程在大多数情况下都能很好地工作,但是在许多情况下,这种“排队”数据是不希望的,因为排队期间的任何延迟都可能给正在等待的应用程序带来问题。一个简单的例子是TCP流,例如真实播放器,必须立即(由接收者)发送和处理数据,以确保数据流畅通无阻。

最后要提到的是,Push标志通常设置在文件的最后一段,以防止缓冲区死锁。还可以看到何时用于通过代理发送HTTP或其他类型的请求-确保正确,有效地处理请求。

 

第四标志-重置(RST)标志

当到达不适合当前连接的网段时,将使用复位标志。换句话说,如果您要向主机发送数据包以建立连接,而远程主机上没有等待等待的服务,则主机将自动拒绝您的请求,然后向您发送回复RST标志集。这表明远程主机已重置连接。

尽管这可能非常简单和合乎逻辑,但事实是,在大多数情况下,大多数黑客都使用此“功能”来扫描主机上的“开放”端口。借助“重置”功能,所有现代端口扫描器均能够检测“打开”或“监听”端口。

用于检测这些端口的方法非常简单:尝试扫描远程主机时,将使用SYN标志集(1)构造有效的TCP段并将其发送到目标主机。如果没有服务侦听特定端口上的传入连接,则远程主机将以ACK和RST标志设置为(1)进行答复。另一方面,如果在端口上侦听服务,则远程主机将构造一个带有ACK标志设置(1)的TCP段。当然,这是我们已介绍的标准三向握手的一部分。

扫描开放端口的主机接收到该段后,它将完成三向握手,然后使用FIN(请参见下文)标志将其终止,并将特定端口标记为“活动”。

 

第五旗-同步旗

TCP协议 标志选项中包含的第五个标志可能是TCP通信中使用的最知名的标志。您可能已经知道,当在两个主机之间建立经典的三向握手时,会发送SYN标志:

tcp-analysis-section-4-2

在上图中,主机A需要使用TCP作为其传输协议从主机B下载数据。该协议要求进行三向握手,以便两端可以建立虚拟连接以便交换数据。

在三向握手期间,我们能够统计总共发送的2个SYN标志,每个主机一个。随着文件的交换和新连接的创建,我们将看到更多的SYN标志被发送和接收。

 

第六旗-FIN旗

可用的最后一个标志是FIN标志,代表单词FINished。该标志用于拆除使用前一个标志(SYN)创建的虚拟连接,因此,由于这个原因,当在一个连接之间交换最后一个数据包时,FIN标志总是出现。

重要的是要注意,当主机发送FIN标志以关闭连接时,它可能会继续接收数据,直到远程主机也关闭了连接,尽管这仅在某些情况下才会发生。一旦双方断开连接,将释放在连接的每一端预留的缓冲区。

正常的拆卸程序如下所示:

tcp-analysis-section-4-3

上图表示主机A和主机B之间的现有连接,其中两个主机正在交换数据。数据传输完成后,主机A发送一个设置了FIN,ACK标志的数据包(步骤1)。

使用此数据包,主机A确认前一个流,同时启动TCP关闭过程以终止此连接。此时,主机A的应用程序将停止接收任何数据,并从该端关闭连接。

为响应主机A关闭连接的请求,主机B将发回确认(STEP 2),并通知其应用程序该连接不再可用。完成此操作后,主机(B)将发送自己的FIN,ACK标志(步骤3)以关闭其连接部分。

如果您想知道为什么需要此过程,那么您可能需要回想一下TCP是全双工连接,这意味着数据流有两个方向。在我们的示例中,这是从主机A到主机B的连接流,反之亦然。另外,它要求两台主机都从其一侧关闭连接,因此这是两台主机必须发送FIN标志而另一台主机必须对其进行确认的原因。

最后,在步骤4中,主机A将确认主机B在步骤3中发送的请求,并且双方的关闭过程现已完成!

 

概要

此页面处理了TCP标志选项,这些选项可以使生活变得更加艰难或轻松,具体取决于您如何看待图片:)

本页上最值得记住的重要信息可能是TCP握手过程以及TCP是全双工连接这一事实。

下一节将检查“ TCP协议 窗口大小”,“校验和”和“紧急指针”字段,它们都是相关且非常重要的。因此,强烈建议您通读这些主题,而不要跳过它们。

 

下一个: TCP协议 窗口大小,校验和&紧急指针-第5节

 

压住他

文章 阅读下一篇:

CCENT / CCNA

思科公司 路由器

  • SSL WebVPN
  • 保护路由器
  • 基于策略的路由
  • 棒上路由器

虚拟专用网安全

  • 了解DMVPN
  • GRE / IPSec配置
  • 站点到站点IPSec 虚拟专用网
  • IPSec模式

思科公司 救命

  • 视窗 8 虚拟专用网客户端
  • 视窗 7的VPN客户端
  • CCP显示问题
  • 思科支持应用程序。

视窗 2012

  • 新的功能
  • 发牌
  • Hyper-V / VDI
  • 安装Hyper-V

的Linux

  • 文件权限
  • Webmin
  • 群组-用户
  • Samba设置