性能优化为什么要减少HTTP请求次数
因为http是基于TCP的,每一次发起HTTP请求都需要建立TCP连接,进行三次握手,太消耗资源,虽然HTTP1.1允许持久连接,但服务器一次只处理一个请求,只有处理完成一个请求,才会进行下一个请求,容易造成堵塞。
一次完整的HTTP事件过程##
- 输入URL
- DSN域名解析
- 发起TCP3次握手
- 建立TCP连接后的发起HTTP请求
- 服务器响应HTTP请求,浏览器得到HTML代码
6.浏览器解析HTML, 浏览器对页面进行渲染
TCP和UDP 的区别
TCP是面向连接的,通过三次握手保证连接的可靠性
UDP是无连接的,是一种不可靠的数据传输协议,数据发送前不与对方建立连接,也不发送确认信息
UDP报文的最大长度为512字节,而TCP则允许报文长度超过512字节。
域名解析时是TCP还是UDP
DNS在进行区域传输的时候时用TCP协议,其它时则使用UDP协议;
客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过TCP三次握手,这样DNS服务器负载更低,响应更快。
DNS的规范规定了2种类型的DNS服务器,一个叫主服务器,一个叫辅助DNS服务器。在一个区种主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息。当一个辅助DNS服务器启动时,它需要与主DNS服务器通信,并加载数据信息。这就叫做区传送(zone transfer)
HTTPS的工作原理
http://www.cnblogs.com/ttltry-air/archive/2012/08/20/2647898.html
HTTPS能够加密信息,一面敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全几倍较高的服务都将会采用HTTPS协议。
HTTPS其实由两部分组成:HTTP+SSL/TLS.,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的系你先传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。具体是如何进行加密、解密、验证的,如下图
图中标识的数字解释如下:
-
客户端发起HTTPS请求,
用户在浏览器里输入一个HTTPS网址,然后连接到server的443端口。 -
服务端的配置
采用HTTPS协议的服务器必须要有一个套数字证书,可以自己制作,也可以向组织申请。
区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任难道公司申请的证书则不会弹出提示页面(startss 有一年的免费服务)。这套证书其实就是一堆公钥和私钥。 -
传输证书
这个证书其实就是一个公钥,包含很多信息,如证书的办法机构,过期时间等。 -
客户端解析证书
这部分又TLS完成,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,就会弹出一个警告框,提示证书存在问题。如果证书没有问题,就生成一个随机值。然后用证书对该随机值进行加密。随机值用锁头锁起来,除非有钥匙,不然看不到被锁的内容。 -
传送加密信息
传送证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密。 -
服务端解密信息
服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法强,私钥够复杂,数据就够安全。 -
传输加密后的信息
服务端用私钥加密后的信息,可以在客户端被还原。 -
客户端解密信息
客户端用之前生成的私钥解密服务端传过来的信息,于是获取了解密后的内容。这个过程把第三方即使监听了数据,也束手无策。
SSL层的位置:介于应用层和TCP层之间,应用数据不再直接传递给传输层,而是传递给SSL层,SSL层对数据进行加密,并增加自己的SSL头。