HTTP和HTTPS的区别
http协议是应用层的协议,它是对Tcp协议的一个应用。
- HTTP协议以明文的方式在网络中传播数据,而HTTPS协议传输的数据则是经过加密后的,HTTPS具有更高的安全性;
- HTTPS是在TCP三次握手之后,实际数据传输开始前,还需要进行SSL(安全套接层)的handshake,协议加密使用的是对称加密密钥;
- HTTPS协议需要服务端申请证书,浏览器安装相应的证书;
- HTTP的端口是80,HTTPS的端口是443;
HTTPS协议加密的过程
注
:SSL是传输层的协议
- HTTPS包含非对称加密和对称加密两个阶段,在客户端与服务器
建立连接的时候
使用非对称加密,连接建立以后
使用的是对称加密
- 客户使用http的URL访问web服务器,要与web服务器建立ssl连接
- web服务器接收到服务端请求后,会将网站的公钥传送一份给客户端,私钥自己保存
- 客户端的浏览器根据双方同意的安全等级,生成对称加密使用的密钥,称为会话密钥,然后利用网站的公钥将会话加密,并传送给网站;
- web服务器利用自己的私钥解密出会话密钥
- web服务器利用会话密钥加密与客户端之间的通信,这个过程是对称加密的过程,服务器第一次传给客户端的公钥其实是CA对网站信息进行加密的数字证书。
区分短连接和长连接
- 短连接:一次http请求服务器应答之后就将这个连接断开。(即同一客户如果要在发送一个HTTP请求的话,必须与服务器建立一个新的TCP连接,同一客户的多个连续的HTTP请求不能共用一个TCP连接)
- 长连接:多个http请求可以共用同一个连接。(编程上稍复杂一些,但性能提高,减少负荷,缩短了时间)
HTTP的报头结构
请求报头
应答报头
HTTP的请求方法
Get和Post的区别
- 功能不同,post是向服务器发送数据,get是向服务器获取数据
- 过程不同,get在浏览器回退时是无害的,但是post会再次提交请求
- 底层记忆方法不同:get会产生一个TCP数据包,而post方法产生两个数据包,get会把header和data一起发送出去服务器,服务器响应回来200的状态码, 然而post方法会先发送header,服务器响应100的状态码,再发送data,服务器响应200的状态码。
- 并且研究表明:在网络较好的环境下,我们发送一次数据包和发送两次数据包的时间大致相同,但是网络不好的情况下,两次TCP包对于校验数据的完整性有很大的作用;并且并不是所有的浏览器在处理这个post请求的时候都会进行两次的发包,火狐浏览器就不是