HTTP与HTTPS
1. HTTP
- http:超文本传输协议(hypertext transfer protocol),用于请求web网页,是以明文的的方式传输,默认端口是80(ftp:21 https:433)。
- http请求: 在客户端浏览器与服务器建立TCP连接后,浏览器向服务器发送http请求(请求方法:GET、POST、PUT等),之后服务器进行响应。
- 常见的请求:
- GET:从服务器获取资源
- POST:对应GET,向服务器提交数据进行处理请求
- PUT: 用来传输文件,文件内容放进报文主体中
- HEAD:和GET类似,但是不反回请求的实体数据,只会返回响应头
- 不同版本:
- http/0.9: GET
- http/1.0:增加POST、HEAD
- http/1.1:增加PUT、允许持久连接,共用一个TCP连接,多个请求不能同时接受发送数据。
- http/2 :引入并发队列,缓解阻塞问题
- 常见请求状态码:
- 200:成功状态码
- 403:服务器禁止访问
- 404:NOT FOUND 服务器无法正常提供信息且不知道原因
- 405: 方法不允许
- 408:请求超时
- 500:错误码,但不知道是什么错误。
- 502: “bad gateway”,服务器作为网关或者代理是发生的错误,服务器自生工作正常,但访问后端服务器是发生了错误,具体错误原因不知道。
- 503:”service unavaliable“ 服务器当前很忙,无法提供响应服务。
- cookie机制:HTTP是无状态、无记忆的,cookie就是让其有记忆功能。cookie由浏览器负责存储,常见应用是身份识别和广告追踪
- Session:Session是服务器为每个访问这个服务器的客户端用户创建的一个容器。这个容器中存储的数据能够在多个request之间实现共享。而且,这个容器只属于当前这个用户。
- HTTP代理:相当于服务器为请求方,相对于请求方为服务器,负责代理转发请求
2.HTTPS
- HTTPS:安全套接字层超文本传输协议(hypertext transfer protocol over secure socket layer)。可以理解成HTTP+ SSL(安全套接字层)/TLS(传输层安全)。SSL和TLS依靠证书来验证服务器的身份,并在浏览器和服务器之间建立加密的通信信道。
- 原理:浏览器与服务器建立TCP连接后,浏览器向服务器请求建立HTTPS会话,并提供客户端支持的加密算法和散列函数,服务器选择双方都支持的最强的加密算法和散列函数并通知浏览器,并将自己的证书发送给浏览器,其中包含了服务器的公钥。浏览器验证服务器证书的真实性。浏览器使用服务器的公钥来加密随机数,只有服务器的对应的私钥才能对加密的随机数进行解密。这一组加密的随机数就是服务器和浏览器的共享密钥,使用对称加密系统和消息认证码对后续消息进行加密和验证。一旦建立了安全信道,就可以开始正常的HTTP通信。
3. HTTPS的优缺点
- 优点:
- HTTPS可以认证用户和服务器,保证数据被传输到对的用户和服务器
- 采用加密传输,防止传输数据的泄露
- 缺点:
- SSL证书需要申请购买,增加了成本
- HTTPS会话建立要经过一系列的验证,比较耗时。
- HTTPS需要一部分服务器资源进行计算。
如有错误欢迎指正!