两个概念:
-
HTTP:一个基于TCP/IP通信协议来传递数据的协议,传输的数据类型为HTML 文件、图片文件、查询结果等。
-
HTTPS :一般理解为HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密,简单来说就是HTTP的安全版本。
HTTP
HTTP报文(请求报文和响应报文)结构
General Headers 通用信息头:
既能用于请求消息中,也能用于响应信息中
Request URL
:请求的地址Request Method
:请求的方法类型Status Code
:响应状态码Remote Address
:表示远程服务器地址
Response Headers 响应头:
Accept-Ranges
: 服务器通过byte serving支持的部分内容范围类型Age
:对象在代理缓存中暂存的秒数Alt-Svc
:服务器使用"Alt-Svc"(Alternative Servicesde的缩写)头标识资源可以通过不同的网络位置或者不同的网络协议获取Content-Encoding
:设置数据使用的编码类型Content-Length
:响应体的长度Content-type
:返回的响应MIME类型与编码,告诉浏览器它发送的数据属于什么文件类型date
:原始服务器消息发出的时间Server
:web服务器软件名称Cache-control
:指定请求和响应遵循的缓存机制 (重点)Last-Modified
:标记请求的资源在服务器端最后被修改的时间 (重点)Expires
:设置响应体的过期时间 (重点)ETag
:特定版本资源的标识符,通常是消息摘要 (重点)
Request Headers 请求头:
Accept
:告诉服务器可以接受的文件格式。根据Accept头的不同,按照相应的顺序进行produces的匹配。Cookie
:HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器Host
:指定请求的服务器的域名和端口号Referer
:告诉服务器是从哪个网站链接过来的User-Agent
:用户代理:简称UA。内容包含发出请求的用户信息,使得服务器能够识别客户端使用的操作系统及版本、CPU类型、浏览器及版本、浏览器渲染引擎、浏览器语言、插件等。Authorization
:设置HTTP身份验证的凭证Connection
:keep-alive 表示是否需要持久连接Cache-Control
:指定请求和响应遵循的缓存机制 (重点)If-Modified-Since
:设置更新时间,从更新时间到服务端接受请求这段时间内如果资源没有改变,允许服务端返回304 Not Modified (重点)If-None-Match
:设置客户端ETag,如果和服务端接受请求生成的ETage相同,允许服务端返回304 Not Modified (重点)
更多请求头和响应头属性参考:Http消息头中常用的请求头和响应头
常见请求方法:
- GET:请求指定的页面信息,并返回实体主体。
- POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。
- HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。
- PUT:从客户端向服务器传送的数据取代指定的文档的内容。
- DELETE:请求服务器删除指定的页面。
get
与post
的区别:
get
请求报文包括请求行、请求头,而post
请求报文还包括请求体body,像登录时的账号密码就会添加在body中
响应状态码:
规则如下,
- 1xx:指示信息–表示请求已接收,继续处理。
- 2xx:成功–表示请求已被成功接收、理解、接受。
- 3xx:重定向–为完成请求,客户需进一步细化请求。
- 4xx:客户端错误–请求有语法错误或请求无法实现。
- 5xx:服务器端错误–服务器未能实现合法的请求。
具体如下,
- 200 ok(请求成功)
- 204 no content (请求成功,但是没有结果返回)
- 206 partial content (客户端请求一部分资源,服务端成功响应,返回一范围资源)
- 301 move permanently (永久性重定向)
- 302 found (临时性重定向)
- 303 see other (示由于请求对应的资源存在着另一个 URI,应使用 GET
方法定向获取请求的资源) - 304 not modified (表示在客户端采用带条件的访问某资源时,服务端找到了资源,但是这个请求的条件不符合。跟重定向无关)
- 307 temporary redirect (跟302一个意思)
- 400 bad request (请求报文存在语法错误)
- 401 unauthorized (需要认证(第一次返回)或者认证失败(第二次返回))
- 403 forbidden (请求被服务器拒绝了)
- 404 not found (服务器上无法找到请求的资源)
- 500 internal server error (服务端执行请求时发生了错误)
- 503 service unavailable (服务器正在超负载或者停机维护,无法处理请求)
特点:
- http协议支持客户端/服务端模式,也是一种请求/响应模式的协议。
- 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。
- 灵活:HTTP允许传输任意类型的数据对象。传输的类型由Content-Type加以标记。
- 无连接:限制每次连接只处理一个请求。服务器处理完请求,并收到客户的应答后,即断开连接,但是却不利于客户端与服务器保持会话连接,为了弥补这种不足,产生了两项记录http状态的技术,一个叫做Cookie,一个叫做Session。
- 无状态:无状态是指协议对于事务处理没有记忆,后续处理需要前面的信息,则必须重传。
缺点:
- 请求信息明文传输,容易被窃听截取。
- 数据的完整性未校验,容易被篡改。
- 没有验证对方身份,存在冒充危险。
因此,HTTPS协议便闪亮登场了
HTTPS
两个概念:
- SSL(Secure Socket Layer,安全套接字层)
- TLS(Transport Layer Security,传输层安全):其前身是 SSL,目前使用最广泛的是TLS 1.1、TLS 1.2
浏览器在使用HTTPS传输数据的流程:
- 首先客户端通过URL访问服务器建立SSL连接。
- 服务端收到客户端请求后,会将网站支持的证书信息(证书中包含公钥)传送一份给客户端。
- 客户端的服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
- 客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
- 服务器利用自己的私钥解密出会话密钥。
- 服务器利用会话密钥加密与客户端之间的通信。
缺点:
- HTTPS协议多次握手,导致页面的加载时间延长近50%;
- HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗;
- 申请SSL证书需要钱,功能越强大的证书费用越高;
- SSL涉及到的安全算法会消耗 CPU 资源,对服务器资源消耗较大。
总结
- HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理。
- HTTP和HTTPS使用连接方式不同,默认端口也不一样,http是80,https是443。