HTTP、HTTPS

1、HTTP协议

在这里插入图片描述

超文本传输协议(HTTP,HyperText Transfer Protocol)是Web的应用层协议,常基于TCP/IP协议传输数据,所有的WWW文件都必须遵守这个标准。

1.1 HTTP的工作过程

HTTP由请求和响应构成,是一个标准的客户端—服务器模型(C/S)。HTTP协议永远都是客户端发起请求,服务器回送响应。

  • 地址解析。域名系统(DNS)解析域名得到主机的IP地址
  • 封装成HTTP请求报文
  • 封装成数据报,建立TCP连接(TCP的三次握手)
  • 客户端发送请求命令。 建立连接后,客户端向服务器发送一个请求
  • 服务器响应。服务器接到请求后,给予相应的响应信息
  • 服务器关闭TCP连接。一般Web服务器向浏览器发送了请求数据后,要关闭TCP连接
  • 客户端解析报文,解析HTML代码,并渲染
    在这里插入图片描述

参考:https://blog.csdn.net/JAck_chen0309/article/details/105020259

1.2 HTTP协议的特点

  • 无连接:TCP是HTTP的支撑协议。HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接,比如某个客户机在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,所以每次需要重新响应请求,需要耗费不必要的时间和流量。HTTP/1.1 支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗(在HTTP/1.1中,一个连接可用于一次或多次请求/响应交换,比如,一个包含有许多图像的网页文件的多个请求和应答可以在一个连接中传输,但每个单独的网页文件的请求和应答仍然需要使用各自的连接)

    • 非持久连接:每个连接处理一个请求-响应事务。
    • 持久连接(keep-alive: true):每个连接可以处理多个请求-响应事务。持久连接情况下,服务器发出响应后让TCP连接继续打开着,同一对客户/服务器之间的后续请求和响应可以通过这个连接发送。
    • HTTP/1.0 使用非持久连接---------------- HTTP/1.1 默认使用持久连接。
  • 不安全:在通信过程中使用明文、请求和响应不会对通信方进行确认,因此,无法保护数据的完整性

  • 基于请求和应答:浏览器向服务器发送请求,服务器对请求作出应答

    HTTP 协议包括哪些请求?

    • GET:从服务器上请求由URL所表示的信息
    • POST:向服务器传送数据
    • PUT:从客户端向服务器传送的数据取代指定的文档的内容
    • DELETE:请求服务器删除指定的页面

    POST与GET的区别:

    • 都包含请求头请求行,post多了请求body。
    • GET多用来查询,请求参数放在url之后(放在请求行中,以 ?分割URL和传输数据,多个参数用 & 连接),不会对服务器上的内容产生作用。POST用来提交(如把账号密码放入body中),可能改变服务器上的资源(点赞就是post请求)。
    • GET是直接添加到URL后面的,直接就可以在URL中看到内容,而POST是放在报文内部的,用户无法直接看到。
    • GET提交的数据长度是有限制的,因为URL长度有限制,具体的长度限制视浏览器而定。而POST没有。
  • 无状态:对客户端没有状态存储的能力,对事物处理没有“记忆”能力(不会保留用户的喜好,登录的账号与密码),比如访问一个网站需要反复进行登录操作

    针对HTTP无状态的这一缺点,提出了2种解决策略:

    • HTTP/1.1持久连接(HTTP keep-alive)方法,只要任意一端没有明确提出断开连接,则保持TCP连接状态,在请求首部字段中的Connection: keep-alive即为表明使用了持久连接
    • 通过Cookie/Session技术
1.2.1 Cookie与Session
  • session中保存的是对象,cookie中保存的是字符串

  • cookie数据存放在客户的浏览器上,session数据放在服务器上

  • session保存在服务器,客户端不知道其中的信息;cookie保存在客户端,服务器能够知道其中的信息

  • cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑*到安全应当使用session

  • session会在一定时间内保存在服务器上,当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie

  • 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie

1.3 HTTP请求报文与相应报文

HTTP请求报文与响应报文:
在这里插入图片描述

其中,对于请求报文的解释如下:
在这里插入图片描述

1.4 HTTP状态码

在这里插入图片描述
面试官问你HTTP状态码,你敢答吗?

2、HTTPS

2.1 HTTPS的通信过程

https通信时,首先建立ssl层的连接,客户端将ssl版本号和加密组件发到服务器端,服务器端收到后对ssl版本号和加密组件进行匹配,同时将CA证书及密钥发送到客户端。客户端对证书进行验证,验证通过后使用非对称加密对数据通信时的密钥进行协商。协商后获得一致的对称加密密钥。然后使用对称加密算法进行TCP连接,后续的过程跟http的过程一致。三次握手,数据交换,四次挥手,通信结束。

  • 客户端和服务器端通过TCP建立连接。
  • 客户端向服务器发送HTTPS请求。
  • 服务器响应请求,并将数字证书发送给客户端,数字证书包括公共秘钥、域名、申请证书的公司。
  • 客户端收到服务器端的数字证书之后,会验证数字证书的合法性。
  • 如果公钥合格,那么客户端会生成一个用于进行对称加密的密钥client key,并用服务器的公钥对客户端密钥进行非对称加密。
  • 客户端会发起HTTPS中的第二个HTTP请求,将加密之后的客户端密钥发送给服务器。
  • 服务器接收到客户端发来的密文之后,会用私钥对其进行非对称解密,得到客户端秘钥。并使用客户端秘钥进行对称加密,生成密文并发送。
  • 客户端收到密文,并使用客户端秘钥进行解密,渲染网页。
    在这里插入图片描述

2.2 HTTPS协议的特点

  • http和https使用连接方式不同,默认端口也不一样,http是80,https是443。
  • HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):一般理解为HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密(HTTPS是加密的安全传输,用到了对称加密和非对称加密):
    在这里插入图片描述

2.3 HTTPS非对称加密

3、HTTP与HTTPS的区别

  • 安全性上,HTTPS是安全超文本协议,在HTTP基础上有更强的安全性。简单来说,HTTPS是使用TLS/SSL加密的HTTP协议
  • 申请证书上,HTTPS需要使用CA证书
  • 传输协议上, HTTP是超文本传输协议,明文传输;HTTPS是具有安全性的 SSL 加密传输协议
  • 连接方式与端口上,http的连接简单,是无状态的,端口是 80; https 在http的基础上使用了ssl协议进行加密传输,端口是 443
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还能坚持

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值