一、http2.0、http1.1、http1.0的区别:
http1.0:(1)每进行一次HTTP通信就要建立和断开一次TCP连接,增加服务端的负载,降低了客户端的显示速度。(2)利用文本与服务器交互。
http1.1新增特性:(1)默认支持持久连接,在一次TCP连接中可以发送多个HTTP请求,减少由于TCP连接造成的开销,降低服务器负载,web显示页面加快;(2)支持只发送header信息,不带body信息。(3)支持host域,web server上的多个虚拟站点可以共享同一个ip和端口。host可以标注虚拟机域名(4)range域,可以请求某个对象的一部分。
http2.0:(1)支持多路复用:在同一个连接中,并发处理多个请求;(2)协议的基本单位为二进制帧:在应用层和传输层之间加了一个二进制分帧层;(3)支持首部压缩:数据体积变小,传输速度更快;(4)服务器推送:服务器可以根据客户端的一个请求发送多个响应。例如将js和css文件主动推送给客户端,无需等到解析html后……(5)可以设置请求优先级
二、TCP协议的三次握手、四次挥手
TCP协议作用于传输层:(1)将大块数据分割成报文段(数据包)(2)确认是否送达。
三次握手:
1、第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。
2、第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。
3、第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。
完成握手后,开始传送数据。
四次挥手:
(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。(服务端写通道关闭)
(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。(客户端读通道关闭)
(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。(客户端写通道关闭)
(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。(服务端读通道关闭)
TCP协议的连接是全双工连接,一个TCP连接存在双向的读写通道。
简单说来是 “先关写,后关读”,一共需要四个阶段。
三、HTTPS与HTTP的一些区别
(1)HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费。
(2)HTTP协议运行在TCP之上,所有传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密的。
(3)HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
(4)HTTPS可以有效的防止运营商劫持,解决了防劫持的一个大问题。
四、使用SPDY加快你的网站速度
(1)多路复用(2)请求优先级(3)header压缩(4)基于HTTPS加密协议传输(5)服务器端推送
http2.0是基于SPDY的基础上进行改进的
五、Web攻击与防御
(1)XSS跨站脚本攻击
比如表单的提交,恶意的输入带有非法的HTML标签或者JS文件,如果服务端对这些进行处理,会造成安全隐患。
防御:服务端对输入进行字符转义。
(2)SQL注入攻击
运行非法的数据库语言对数据库进行攻击,改写数据库里的数据。
防御:服务端对输入进行验证,对输入字符转义。
(3)CSRF跨站伪造请求
攻击者盗用某个身份,以该身份发送恶意请求;造成隐私泄露及财产安全。
某个客户端登录个人信息后访问正常的网站A,在未登出的情况下,访问了恶意网站B,网站B盗用客户端的信息,以其身份向网站A发送恶意请求,造成隐私泄露及财产安全。
防御:添加客户端验证、服务端验证环节;不要信任输入的信息。
(4)DDOS攻击
攻击者生成某网站访问权限要求的伪登录信息,频繁不停歇的发送请求,直至服务器因无法处理过多请求而崩溃。
防御:在服务端加入验证环节,将恶意发送请求的加入黑名单,对它的请求不予响应。
六、HTTP请求方法有哪些
HTTP/1.1协议中共定义了八种方法(有时也叫“动作”)来表明Request-URI指定的资源的不同操作方式:
(1)OPTIONS返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。用作预检请求,由服务器自主发送
(2)HEAD向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
(3)GET向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在web app.中。其中一个原因是GET可能会被网络蜘蛛等随意访问。(查)
(4)POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。(改,增)
(5)PUT向指定资源位置上传其最新内容。(增)
(6)DELETE请求服务器删除Request-URI所标识的资源。(删)
(7)TRACE回显服务器收到的请求,主要用于测试或诊断。
(8)CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
七、post请求和put请求的区别
post:非幂等=>创建资源
put:幂等(一个幂等操作的特点就是其任意多次执行所产生的影响均与依次一次执行的影响相同。)=>更新资源
八、post请求和get请求的区别
详见3-26腾讯电面
参考博客:
https://www.cnblogs.com/wjlog/p/5827168.html
https://blog.csdn.net/u012657197/article/details/77877840
https://blog.csdn.net/m_xiaoer/article/details/72903355