一、HTTP协议:
HTTP协议是超文本传输协议的缩写,英文是Hyper Text Transfer Protocol。它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。
设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。HTPP有多个版本,目前广泛使用的是HTTP/1.1版本。
HTTP 消息有两种主要类型:请求和响应。 当用户与 Web 属性交互时,用户的浏览器会生成 HTTP 请求。例如,如果用户点击一个超链接,浏览器将发送一系列“HTTP GET”请求以获取该页面上显示的内容。这些 HTTP 请求发送到源服务器或代理缓存服务器,该服务器将生成 HTTP 响应。HTTP 响应是对 HTTP 请求的响应。HTTP协议允许浏览器和服务器进行通信,并能够在互联网上传输文本、图像、视频和其他类型的数据。
HTTP 请求和响应以明文形式通过 Internet 发送。问题是任何监视连接的人都可以读取这些明文。当用户通过网站或 Web 应用程序提交敏感数据时,这就是一个很大的问题。
1、HTTP原理:
① 客户端的浏览器首先要通过网络与服务器建立连接,该连接是通过 TCP 来完成的,一般 TCP 连接的端口号是80。 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URI)、协议版本号,后边是 MIME 信息包括请求修饰符、客户机信息和许可内容。
② 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是 MIME 信息包括服务器信息、实体信息和可能的内容。
2、HTTP协议的特点:
- http协议支持客户端/服务端模式(B/S架构),也是一种请求/响应模式的协议。
- 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。
- 灵活:HTTP允许传输任意类型的数据对象。传输的类型由Content-Type加以标记。
- 无连接:限制每次连接只处理一个请求。服务器处理完请求,并收到客户的应答后,即断开连接,但是却不利于客户端与服务器保持会话连接,为了弥补这种不足,产生了两项记录http状态的技术,一个叫做Cookie,一个叫做Session。
- 无状态:无状态是指协议对于事务处理没有记忆,后续处理需要前面的信息,则必须重传。
3、HTTP报文组成:
请求报文:
请求行:包括请求方法、URL、协议/版本
请求头(Request Header)
请求正文
响应报文:
状态行
响应头
响应正文
常见的请求方法:
GET:请求指定的页面信息,并返回实体主体。
POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
PUT:从客户端向服务器传送的数据取代指定的文档的内容。
DELETE:请求服务器删除指定的页面。
post和get的区别:
- 都包含请求头请求行,post多了请求body。
- get多用来查询,请求参数放在url中,不会对服务器上的内容产生作用。post用来提交,如把账号密码放入body中。
- GET是直接添加到URL后面的,直接就可以在URL中看到内容,而POST是放在报文内部的,用户无法直接看到。
- GET提交的数据长度是有限制的,因为URL长度有限制,具体的长度限制视浏览器而定。而POST没有。
响应状态码:
访问一个网页时,浏览器会向web服务器发出请求。此网页所在的服务器会返回一个包含HTTP状态码的信息头用以响应浏览器的请求。
状态码分类:
1XX- 信息型,服务器收到请求,需要请求者继续操作。
2XX- 成功型,请求成功收到,理解并处理。
3XX - 重定向,需要进一步的操作以完成请求。
4XX - 客户端错误,请求包含语法错误或无法完成请求。
5XX - 服务器错误,服务器在处理请求的过程中发生了错误。
常见状态码:
200 OK - 客户端请求成功
301 - 资源(网页等)被永久转移到其它URL
302 - 临时跳转
400 Bad Request - 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized - 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
404 - 请求资源不存在,可能是输入了错误的URL
500 - 服务器内部发生了不可预期的错误
503 Server Unavailable - 服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
二、HTTPS协议:由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议
HTTPS协议是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,利用 SSL/TLS 来加密数据包。
HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性,进行身份验证。
TLS 使用一种称为公钥加密的技术:有两个密钥,一个公钥和一个私钥。
公钥通过服务器的 SSL 证书与客户端设备共享。证书由证书颁发机构 (CA) 加密签名,每个浏览器都有一个它隐式信任的 CA 列表。任何由受信任列表中的 CA 签名的证书都会在浏览器的地址栏中被赋予一个绿色挂锁锁,因为它被证明是“受信任的”并且属于该域。
当客户端打开与服务器的连接时,每台机器都需要经过验证的身份。因此,这两个设备使用公钥和私钥就称为会话密钥的新密钥达成一致,以加密它们之间的进一步通信。然后,所有 HTTP 请求和响应都使用这些会话密钥加密,因此拦截通信的任何人只能看到随机字符串,而不是明文。就像身份证确认一个人的身份一样,私钥确认服务器身份。当客户端打开与源服务器的通道时(例如当用户导航到网站时),拥有与网站SSL证书中的公钥匹配的私钥证明该服务器实际上是该网站的合法主机。这可以防止或帮助阻止在没有身份验证时可能发生的许多攻击,例如中间人攻击、DNS 劫持和域欺骗。
1、HTTPS的工作原理:
- 客户端发起HTTPS请求:
首先客户端通过https的URL访问服务器建立SSL连接。 - 服务端生成公钥私钥,并发送公钥(证书)给客户端
服务端收到客户端请求后,会将网站支持的证书信息(证书中包含公钥)传送一份给客户端。 - 客户端收到证书后,进行解析
客户端的服务器开始协商SSL连接的安全等级,也就是信息加密的等级。 - 客户端解析完毕后,建立会话密钥,根据公钥将会话密钥加密,将数据传输给服务器
客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。 - 服务器利用自己的私钥解密出会话密钥。
- 服务器利用会话密钥加密与客户端之间的通信。
2、HTTPS的缺点:
(1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;
(2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;
(3)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。
(4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。
(5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。
三、HTTPS 和 HTTP 协议的区别:
1、安全性:HTTP和HTTPS是两种不同的协议,它们之间最主要的区别在于安全性。
HTTP协议以明文方式发送内容,不提供任何方式的数据加密,容易被攻击者截取信息。
HTTPS则在TCP和HTTP网络层之间加入了SSL/TLS安全协议,使得报文能够加密传输,保证了数据的安全性。
2、端口号不同:
HTTP和HTTPS使用的是完全不同的连接方式用的端口也不一样,HTTP是80、HTTPS是443。
3、证书认证:
当 Web 浏览器通过 HTTPS 连接到 Web 服务器时,服务器会向浏览器发送数字证书。该证书包含特定于服务器的信息,包括服务器的公钥。浏览器随后使用此证书与服务器建立安全连接。