计算机该UDP报文的端口不可达。r
r
利用这个原理,攻击者计算机便可以通过发送合适的报文,判断目标计算机哪些TCP或UDP端口是开放的,过程如下:r
1、发出端口号从0开始依次递增的TCPSYN或UDP报文(端口号是一个16比特的数字,这样最大为65535,数量很有限);r
2、如果收到了针对这个TCP报文的RST报文,或针对这个UDP报文的ICMP不可达报文,则说明这个端口没有开放;r
3、相反,如果收到了针对这个TCPSYN报文的ACK报文,或者没有接收到任何针对该UDP报文的ICMP报文,则说明该TCP端口是开放的,UDP端口可能开放(因为有的实现中可能不回应ICMP不可达报文,即使该UDP端口没有开放)。r
r
这样继续下去,便可以很容易的判断出目标计算机开放了哪些TCP或UDP端口,然后针对端口的具体数字,进行下一步攻击,这就是所谓的端口扫描攻击。r
r
15分片IP报文攻击r
r
r
r
r
为了传送一个大的IP报文,IP协议栈需要根据链路接口的MTU对该IP报文进行分片,通过填充适当的IP头中的分片指示字段,接收计算机可以很容易的把这些IP分片报文组装起来。r
目标计算机在处理这些分片报文的时候,会把先到的分片报文缓存起来,然后一直等待后续的分片报文,这个过程会消耗掉一部分内存,以及一些IP协议栈的数据结构。如果攻击者给目标计算机只发送一片分片报文,而不发送所有的分片报文,这样攻击者计算机便会一直等待(直到一个内部计时器到时),如果攻击者发送了大量的分片报文,就会消耗掉目标计算机的资源,而导致不能相应正常的IP报文,这也是一种DOS攻击。r
r
16SYN比特和FIN比特同时设置r
r
r
r
r
在TCP报文的报头中,有几个标志字段:r
1、SYN:连接建立标志,TCPSYN报文就是把这个标志设置为1,来请求建立连接;r
2、ACK:回应标志,在一个TCP连接中,除了第一个报文(TCPSYN)外,所有报文都设置该字段,作为对上一个报文的相应;r
3、FIN:结束标志,当一台计算机接收到一个设置了FIN标志的TCP报文后,会拆除这个TCP连接;r
4、RST:复位标志,当IP协议栈接收到一个目标端口不存在的TCP报文的时候,会回应一个RST标志设置的报文;r
5、PSH:通知协议栈尽快把TCP数据提交给上层程序处理。r
r
正常情况下,SYN标志(连接请求标志)和FIN标志(连接拆除标志)是不能同时出现在一个TCP报文中的。而且RFC也没有规定IP协议栈如何处理这样的畸形报文,因此,各个操作系统的协议栈在收到这样的报文后的处理方式也不同,攻击者就可以利用这个特征,通过发送SYN和FIN同时设置的报r