任何服务器都可能被攻击,这是没法避免的,不能避免但是可以防御,攻击和防御是一对矛盾,都需要讲究策略。

网络有个带宽的概念,或者直接说网速更接地气,网速就是流量和时间的关系,一台计算机可以向另一台计算机不断发送数据包,另一台计算机可能接收也可能直接丢掉。

 

如果一台计算机想向另一台计算机发数据包,首先会得到其ip地址,然后得到其mac地址,然后就会发数据帧。

首先发的数据帧协议和端口得正确,不然会直接丢掉,但是这个过程也会浪费服务器的计算,如果发送过于频繁,服务器可以直接禁止ip或者mac地址

如果协议端口正确,协议是tcp,还得经过三次握手建立连接,如果建立连接过于频繁,服务器可以直接禁止ip或者mac地址

如果连接不是那么频繁,可能保持一定的合法频率不断发送,服务器需要想办法,规定在一段时间内如果超出限制,判断不合法,直接禁止掉

如果连接ok,频率ok,攻击者还有可能基于一个连接,不断发送大量数据,这就要在应用层限制数据大小,如果超出大小直接终止连接。

当然还有种可能,就是有非常多的ip同时来攻击,这个是很难解决的, 或许可以先关闭服务。

 

 

以上只是传输层的安全问题,传输层也确实能阻止很多不正常的流量

应用层也会存在安全问题,比如一次http连接缓慢传输了一个大数据包,或者构造非法的请求,这就需要在设计web服务器程序时考虑周全,并且在设计接口时考虑周全,并且对非法的请求打印日志。