理解 TCP URG 标志 [已关闭]

问题描述 投票:0回答:1

我使用 Scapy 用 Python 制作了一个简单的端口扫描器。

我设置了 Metasploitable 并打开了多个端口,例如。 21、22、23 和 8009。

然后我启动对这些端口的端口扫描,Scapy 确实告诉我它们是开放的。

但是,如果我扫描 Metasploitable 上未打开的端口,我会得到 TCP 标志 20,即 URG TCP 标志。这是从 URG 标志的描述中取出的。

URG标志用于通知接收站某些数据 在一个细分市场内是紧急的,应该优先考虑。如果 URG 标志 设置后,接收站评估紧急指针,一个 16 位 TCP 报头中的字段。该指针指示有多少数据 在该段中,从第一个字节开始计算,是紧急的。

紧急数据对我来说并没有真正敲响警钟。

我不明白为什么我会得到 URG 标志,我正在寻求理解为什么我得到它,即使端口关闭它意味着什么,以及如果端口已开放。

tcp flags
1个回答
15
投票
URG

标志用于在 TCP 连接的第二个通道上发送数据。除非您也发送数据,否则设置它是没有意义的。数据将保存在接收端的单独缓冲区中,程序收到信号表示有可用的紧急数据,并使用特殊标志读取

recv
系统调用。
编辑:关于将其保存在单独的缓冲区中的部分仅部分正确;由于规范的原因,很难判断紧急数据从哪里开始。 

强烈建议

不要使用URG标志,或者至少使用SO_OOBINLINE套接字选项将数据保留在主缓冲区中。

据我所知,唯一使用它的协议是 FTP,如果您想在传输期间发送命令,您可以在其中设置 URG 标志。可以假设服务器正忙于发送数据并且没有监听新命令,但通过设置 URG 标志,服务器被特殊信号中断。

您确定没读错吗?通常在关闭端口上设置的标志是

RST

历史记录:

URG

标志也是导致 Windows 95 和 NT 使用 WinNuke 崩溃的原因。

    

© www.soinside.com 2019 - 2024. All rights reserved.