【计算机网络】HTTP以及HTTPS协议

一、HTTP

1.HTTP协议基本概念

(1)HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。
(2)HTTP协议是基于TCP/IP通信协议来传输数据(HTML文件,图片文件,查询结果等)
(3)HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。
(4)HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。
(5)HTTP默认的端口号为80,HTTPS的端口号为443。

2.HTTP特点

(1)无状态:协议对客户端没有状态存储,对事物处理没有"记忆"能力。
(2)无连接:HTTP/1.1之前,由于无状态特点,每次请求都需要通过TCP三次握手四次握手,和服务器重新建立连接。比如某个客户机在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,所以每次需要重新响应请求,需要耗费不必要的时间和流量。
(3)基于请求和响应:基本的特性,由客户端发起请求,服务器响应。
(4)简单快速、灵活
(5)通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性

3.HTTP协议的工作流程

(1)用户在浏览器中键入需要访问网页的URL或者点击某个网页中链接。
(2)浏览器根据URL中的域名,向域名服务器发送请求,通过DNS解析出目标网页的IP地址,然后再返回给浏览器。
(3)在HTTP开始工作前,客户端首先会通过TCP/IP协议来和服务器建立连接(TCP的三次握手)。
(4)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标示符(URL)、协议版本号,以及MIME信息包括请求修饰符、客户机信息和可能的内容。
(5)服务器接收到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
(6)一般情况下,一旦Web服务器向浏览器发送了请求数据,他就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码:Connection:keep-aliveTCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接 节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
在这里插入图片描述
2.1 短连接
短连接的操作步骤是:建立连接----数据传输----关闭连接…建立连接----数据传输----关闭连接
如果客户端请求频繁,将在TCP的建立和关闭操作上浪费较多时间和带宽。
在这里插入图片描述
2.2 长连接
2.3.1 定义
(1)指的是在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。
(2)操作步骤:建立连接----数据传输----(保持连接) … ----数据传输----关闭连接。
(3)优点:长连接可以省去较多的TCP连接和关闭的操作,减少浪费,节约时间。
(4)分类:without pipelining和with pipelining。
①下图是without pipelining(非管道式),客户端只在收到一个请求的响应后,才发出新的请求。
在这里插入图片描述
②下图是with pipelining,每次建立连接后无需等待请求回来就可以发送下一个请求。
在这里插入图片描述

二、HTTPS

1.特点
(1)内容加密:采用混合加密技术(结合非对称加密和对称加密技术),中间者无法直接查看明文内容。
(2)验证身份:客户端通过证书认证服务器是否正确。
(3)保证数据完整性:防止传输的内容被中间人冒犯或者篡改。
2.实现原理
(1)服务器可以将自己的公钥Key1发给证书颁发机构,向证书颁发机构申请证书。
(2)证书颁发机构自己也有一对公钥。机构利用自己的私钥来加密公钥Key1,并且通过服务器端网址等信息生成一个证书签名,证书签名同样经过机构的私钥加密。证书制作完整后,机构把证书发送给了服务器端。
(3)当客户端向服务器请求通信时,服务器将自己申请的证书返回给客户。
(4)客户端收到证书后,首先要检验证书的真伪。需要说明一下,各大浏览器和操作系统已经维护了所有权威证书机构的名称和公钥。
客户端只需要知道是哪个机构颁布的证书,就可以从本地找到对应的机构公钥,解密出证书签名。客户端按照同样的规则(根据服务器的网址等信息)生成一个证书签名,如果两个签名一致,说明证书是有效的。验证成功后,客户端就可以放心的再次利用机构公钥,解密出服务器端的公钥Key1。客户端自己在随机生成对称加密密钥Key2,并且用服务器端公钥Key1加密Key2,发送给服务器。
(5)最后,服务器用自己的私钥解开加密,得到对称加密密钥Key2。于是客户端和服务器就可以开始用Key2(由客户端生成)进行对称加密的通信。

这里提出一个疑问,如果中间人也向权威机构申请一个证书,并且把服务器发来的证书偷换成自己的证书,从而获取交互的信息呢?

因为证书的签名是由服务器网址等信息生成的,并且经过机构私钥加密,中间人也无法获取。如果发给客户端的是假证书,验证是无法通过的。

注:最新退出的TSL协议,是由SSL3.0协议的升级版,和SSL协议的大体原理是相同的。

三、区别

1.HTTPS需要到CA申请证书,一般免费证书很少,需要缴费。
2.HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。
3.HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4.HTTP的连接很简单,是无状态的。
5.HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值