我用Scapy用Python做了一个简单的portscanner.
我设置Metasploitable并打开多个端口,例如.21,22,23和8009.
然后我启动了portscan vs那些端口,Scapy确实告诉我它们是开放的.
但是,如果我扫描Metasploitable上未打开的端口,我会返回TCP标志20,这是URG TCP标志.这是从URG标志的描述中取出的.
URG标志用于通知接收站段内的某些数据是紧急的并且应该优先.如果设置了URG标志,则接收站将评估紧急指针,即TCP标头中的16位字段.该指针指示从第一个字节开始计算的段中有多少数据是紧急的.
对我来说,紧急数据并没有真正响起.
我不明白为什么我得到了URG标志回来,我正在寻找的,为什么我明白了,这意味着什么,即使该端口是关闭的理解,我能永远得到URG响应回来,如果该端口是开放的.
该URG标志用于在TCP连接的第二个通道上发送数据.除非您还要发送数据,否则设置它是没有意义的.数据将保存在接收端的单独缓冲区中,程序将发出紧急数据信号,并使用特殊标志读取recv系统调用.
AFAIK,唯一使用它的协议是FTP,如果你想在传输过程中发送命令,你可以设置URG标志.假设服务器忙于发送数据而不是监听新命令,但是通过设置URG标志,服务器被特殊信号中断.
当然你读得对吗?通常在关闭端口上设置的标志是RST.
一个历史记录:URG旗帜也是使Windows 95和NT与WinNuke崩溃的原因.