理解TCP-URG标志

理解TCP-URG标志,tcp,flags,Tcp,Flags,我使用Scapy用Python制作了一个简单的portscanner 我设置Metasploitable并打开多个端口,如21、22、23和8009 然后我对这些端口启动端口扫描,Scapy确实告诉我它们是打开的 但是,如果我扫描Metasploitable上未打开的端口,我会返回TCP标志20,即URG TCP标志。这是从URG标志的描述中提取的 URG标志用于通知接收站某些数据 在某个细分市场中,这是紧急的,应该优先考虑。如果国旗 设置后,接收站评估紧急指针,即16位 TCP标头中的字段。此

我使用Scapy用Python制作了一个简单的portscanner

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

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

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

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

对我来说,紧急数据并没有真正起作用


我不明白为什么我会得到URG标志,我想了解为什么我会得到它,即使端口关闭,它意味着什么,如果端口打开,我是否能得到URG响应。

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

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

你肯定读对了吗?关闭端口上通常设置的标志是
RST


历史提示:
URG
标志也是Windows 95和NT在WinNuke上崩溃的原因。

我安装了metasploitable linux dist,并用NAT启动了它。我没有对它做任何事。每个mashine都在VM软件中运行。我尝试了几种不同的代码,但我无法得到不同的结果。所以我100%确信我做得对:-)哦,你们看到的是十进制20,不是十六进制。所以它是位
0x10
0x4
,这是
ACK | RST
。是的。。你是对的。。它返回关闭的0x14。。新的语言等于忘记基本的东西。。谢谢;)telnet也使用了紧急标志。由于下面的答案看起来像是屏幕误读引起的问题,我认为这可以作为“一个无法重现的问题”来解决。相关帖子: