DDoS是指分布式拒绝服务(Distributed Denial of
Service):试图通过恶意请求使系统或者网络超载进而无法继续提供服务。对于一个网站来说,这意味着,该网站将无法加载,用户无法进行交易,查看内
容或者登录账户。对于网络来说,DDoS攻击导致带宽饱和甚至淹没网络设施,对整个网络的用户造成大面积中断。慢慢地,一对一的DoS攻击形态已慢慢淡
出,取而代之的是DDoS攻击,其原理就是一次寻找几百台/几千台或几万台电脑,同时对受害者的服务器或电脑发动联合大攻击,这样就算是再强劲,面对如此
规模的攻击,仍无招架之力。
2.TCP连接有哪些状态
LISTEN:侦听来自远方的TCP端口的连接请求
SYN-SENT:在发送连接请求后等待匹配的连接请求(客户端状态)。客户端尝试链接服务端,通过open方法
SYN-RECEIVED:在收到和发送一个连接请求后等待对方对连接请求的确认(服务端状态)。服务接受创建请求的SYN后,也就是TCP三次握手中的第2步,发送ACK数据包之前
ESTABLISHED:代表一个打开的连接。客户端接受到服务端的ACK包后的状态,服务端在发出ACK在一定时间后即为ESTABLISHED
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认。主动关闭的一方,在发出FIN请求之后,也就是在TCP四次握手的第1步
FIN-WAIT-2:从远程TCP等待连接中断请求。主动关闭的一方,在接受到被动关闭一方的ACK后,也就是TCP四次握手的第2步
CLOSE-WAIT:等待从本地用户发来的连接中断请求。被动关闭的一方,在接受到客户端的FIN后,也就是在TCP四次握手的第2步
CLOSING:等待远程TCP对连接中断的确认
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认。被动关闭的一方,在发送ACK后一段时间后(确保客户端已收到),再发起一个FIN请求。也就是TCP四次握手的第3步
TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认。主动关闭的一方,在收到被动关闭的FIN包后,发送ACK。也就是TCP四次握手的第4步
CLOSED:没有任何连接状态
3.HTTP/1.0 vs HTTP/1.1中Keep-Alive的作用
Keep-
Alive就是我们通常所说的长连接,他可以减少我们tcp链接的开销,加快网站的加载速度。在HTTP1.0及各种加强版中,需要在request中增
加”Connection: keep-alive“ header才能够支持,而在HTTP1.1中是默认打开的。
4.HTTPS的原理
https是基于安全目的的Http通道,其安全基础由SSL层来保证。最初由netscape公司研发,主要提供了通讯双方的身份认证和加密通信方法。现在广泛应用于互联网上安全敏感通讯。
(1) 协议基础不同:Https在Http下加入了SSL层,
(2)通讯方式不同:Https在数据通信之前需要客户端、服务器进行握手(身份认证),建立连接后,传输数据经过加密,通信端口443。
SSL协议基础
SSL协议位于TCP/IP协议与各种应用层协议之间,本身又分为两层:
SSL记录协议(SSL Record Protocol):建立在可靠传输层协议(TCP)之上,为上层协议提供数据封装、压缩、加密等基本功能。
SSL握手协议(SSL Handshake Procotol):在SSL记录协议之上,用于实际数据传输前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
5.如何对HTTP数据进行gzip压缩
gzip
是一种数据压缩格式,默认且目前仅使用deflate算法压缩data部分;deflate是一种压缩算法,是huffman编码的一种加强,他能更加有
效节约带宽流量。他先把文本压缩为.gz然后传输给浏览器,最后由浏览器负责解压缩呈现给用户,其大致过程如下:
(1)首先浏览器请求某个URL 地址,并在请求的头 (head) 中设置属性accept-encoding值为gzip、deflate,表明浏览器支持gzip和deflate这两种压缩方式。
(2)WEB服务器接收到请求后判断浏览器是否支持压缩,如果支持就传送压缩后的响应内容,否则传送不经过压缩的内容;
(3)浏览器获取响应内容后,判断内容是否被压缩,如果是则解压缩,然后显示响应页面的内容。
servlet中的实现
String data = "abcdabcdabcdabcdabcdabcdab"
System.out.println("原始数据的大小为:" + data.getBytes().length);
ByteArrayOutputStream bout = new ByteArrayOutputStream();
GZIPOutputStream gout = new GZIPOutputStream(bout); //buffer
gout.write(data.getBytes());
gout.close();
//得到压缩后的数据
byte g[] = bout.toByteArray();
response.setHeader("Content-Encoding", "gzip");
response.setHeader("Content-Length",g.length +"");
response.getOutputStream().write(g);
数据量过小时可能会发生压缩后更大的情况
6.Cookie的Domain, Path, Expires什么作用
Expires – 过期时间。指定cookie的生命期。具体是值是过期日期。如果想让cookie的存在期限超过当前浏览器会话时间,就必须使用这个属性。当过了到期日期时,浏览器就可以删除cookie文件,没有任何影响。
Path
–
路径。指定与cookie关联的WEB页。值可以是一个目录,或者是一个路径。如果http://www.zdnet.com/devhead
/index.html
建立了一个cookie,那么在http://www.zdnet.com/devhead/目录里的所有页面,以及该目录下面任何子目录里的页面都可以
访问这个cookie。这就是说,在http://www.zdnet.com/devhead/stories/articles
里的任何页面都可以访问http://www.zdnet.com/devhead/index.html建立的cookie。但是,如果http:
//www.zdnet.com/zdnn/
需要访问http://www.zdnet.com/devhead/index.html设置的cookes,该怎么办?这时,我们要把cookies
的path属性设置成“/”。在指定路径的时候,凡是来自同一服务器,URL里有相同路径的所有WEB页面都可以共享cookies。现在看另一个例子:
如果想让 http://www.zdnet.com/devhead/filters/
和http://www.zdnet.com/devhead/stories/共享cookies,就要把path设成“/devhead”。
Domain
–
域。指定关联的WEB服务器或域。值是域名,比如zdnet.com。这是对path路径属性的一个延伸。如果我们想让
catalog.mycompany.com 能够访问shoppingcart.mycompany.com设置的cookies,该怎么办?
我们可以把domain属性设置成“mycompany.com”,并把path属性设置成“/”。FYI:不能把cookies域属性设置成与设置它的
服务器的所在域不同的值
7.浏览器如何缓存文件
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
Expires策略
Expires是Web服务器响应消息头字段,在响应http请求时告诉浏览器在过期时间前浏览器可以直接从浏览器缓存取数据,而无需再次请求。
Cache-control策略
Cache-Control与Expires的作用一致,都是指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据。只不过Cache-Control的选择更多,设置更细致,如果同时
设置的话,其优先级高于Expires。