了解TCP URG标志

Dan*_*iel 3 flags tcp

我用Scapy用Python做了一个简单的portscanner.

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

然后我启动了portscan vs那些端口,Scapy确实告诉我它们是开放的.

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

URG标志用于通知接收站段内的某些数据是紧急的并且应该优先.如果设置了URG标志,则接收站将评估紧急指针,即TCP标头中的16位字段.该指针指示从第一个字节开始计算的段中有多少数据是紧急的.

对我来说,紧急数据并没有真正响起.

我不明白为什么我得到了URG标志回来,我正在寻找的,为什么我明白了,这意味着什么,即使该端口是关闭的理解,我能永远得到URG响应回来,如果该端口是开放的.

Per*_*son 9

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

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

当然你读得对吗?通常在关闭端口上设置的标志是RST.

一个历史记录:URG旗帜也是使Windows 95和NT与WinNuke崩溃的原因.

  • 哦,你看到的是十进制 20,而不是十六进制。所以它是位`0x10`和`0x4`,即`ACK|RST`。 (2认同)