HTTP
HTTP:超文本传输协议,是当今互联网上应用最广泛的一种传输协议
HTTP由三部分组成:请求行、请求头、请求体、请求数据组成
请求行:由请求的方法、URL、HTTP协议版本组成
请求的方法包括GET、POST 、HEAD、 DELETE、PUT
HEAD: 服务端收到HEAD请求时只返回响应头,不发送响应内容。所以,如果只需要查看某个页面的状态时,用HEAD更高效,因为省去了传输页面内容的时间
问题一:浏览器地址栏输入“www.baidu.com”回车,内部客户端和服务端是如何通信的呢?
1、
URL自动解析
2、获取IP,建立TCP连接
:首先它会在DNS本地缓存表中查找,如果有则直接告诉IP地址。如果没有则要求网关DNS进行查找,如此下去,找到对应的IP后,则返回会给浏览器。
当获取IP之后,就开始与所请求的Tcp建立三次握手连接,连接建立后,就向服务器发出HTTP请求。
3、客户端浏览器向服务器发出HTTP请求
4、Web服务器应答,并向浏览器发送数据
5、Web服务器关闭TCP连接
:当Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,如果浏览器或者服务器在其头信息加入:Connection:keep-alive 代码,TCP连接在发送后将仍然保持打开状态,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
HTTP1.X
特点:
1、以纯文本的形式进行传输
2、无连接:无连接主要是限制每次连接只处理一个请求
3、无状态: HTTP 对客户端请求状态没有进行存储,比如每次请求都需要重新登录
4、简单快速:只需传送方法和路径就可以向服务端进行请求
5、还有支持传输任意类型的数据对象
HTTP2.0
http2.0是一种安全高效的http传输协议
它主要修改了HTTP的报文传输格式,通过引入二进制分帧层实现性能的提升
目的:改进传输性能,实现网络低延迟和高吞吐量。
特点:
1、采用二进制格式传输数据
2、采用多路复用IO,一个连接即可实现并行
3、压缩头部信息:客户端和服务器会同时维护同一张头信息表,所有的字段都会存入这张表中,生成一个索引号,只发送索引号,提高了速度。
HTTPS
HTTPS是安全的HTTP
在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性
HTTPS 在HTTP 的基础下加入SSL安全加密协议
HTTP一方面用来保证传输通道的安全、另一方面可以验证网站的真实性
完整的HTTPS的通信流程:
1.用户通过浏览器请求https网站,要求与服务器建立SSL连接,告诉服务器自己支持那些加密算法
2.服务器收到请求后,返回网站的数字证书给浏览器,数字证书中包含颁发机构,网址,公钥,证书有效期等信息
3.客户端验证数字证书,生成随机密钥x,用证书中的公钥对随机密钥x进行加密,并发送给服务器
4.服务器收到之后,用私钥进行解密,得到随机密钥x,然后使用随机密钥x对网页加密,发送给浏览器
5.浏览器收到加密后的网页后用随机密钥x进行解密,得到最终网页
其中HTTPS为了实现浏览器与服务器之间的加密通信,采用了对称式加密和非对称式加密两种算法来保证通信安全
对称加密
加密和解密使用同一密钥。
优点:运算速度快;
缺点:无法安全地将密钥传输给通信方
常见的对称加密算法:DES、AES
非对称加密
非对称式加密:加密和解密使用不同的密钥
优点:可以更安全地将公开密钥传输给通信发送方
缺点:运算速度慢,因为采用的加密算法是很耗CPU资源的
常见的非对称加密算法:DSA、RSA
HTTP 与 HTTPS 区别
区别 | 说明 |
---|---|
加密 | HTTP传输的是明文,而HTTPS传输的是密文 |
连接方式不同 | HTTP采用的是TCP连接(三次握手),而HTTPS采用的TCP+数字证书 |
端口 | HTTP 默认的端口是 80和 HTTPS 默认端口是 443 |