http和https详解

http和https都是一种网络通信协议

什么是协议

网络协议是计算机之间为了实现网络通信而达成的一种“约定”或者”规则“,有了这种”约定“,不同厂商的生产设备,以及不同操作系统组成的计算机之间,就可以实现通信

什么是http和https

HTTP(超文本传输协议)和HTTPS(安全超文本传输协议),它们是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。HTPP有多个版本,目前广泛使用的是HTTP/1.1版本

HTTP是一个用于分布式、协作式、超媒体信息系统的应用层协议,它允许用户通过互联网进行信息的请求和传输。HTTP是万维网数据通信的基础。HTTPS是HTTP的安全版本,它在HTTP的基础上加入了SSL/TLS协议,用于在客户端和服务器之间建立加密的通信通道

HTTP是一个基于TCP/IP通信协议来传递数据的协议,一般用于B/S架构。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求

[图片]

http和https的特点和缺点

http的特点:

  • 无状态性:服务器不保存任何关于客户端请求的信息。于事务处理没有记忆,后续处理需要前面的信息,则必须重传
  • 简单性:协议简单,易于实现。只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST
  • 灵活:HTTP允许传输任意类型的数据对象。传输的类型由Content-Type加以标记
  • 无连接:限制每次连接只处理一个请求。服务器处理完请求,并收到客户的应答后,即断开连接,但是却不利于客户端与服务器保持会话连接,为了弥补这种不足,产生了两项记录http状态的技术,一个叫做Cookie,一个叫做Session

缺点:

  • 不安全:数据以明文形式传输,容易遭受中间人攻击。
  • 无验证:没有对通信双方进行身份验证

https的特点:

  • 加密:数据传输过程中进行加密,保护数据不被窃听。
  • 身份验证:通过证书验证服务器的身份,防止中间人攻击。
  • 完整性:确保数据在传输过程中不被篡改
    唯一缺点可能就是需要加解密消耗部分资源,但是在考虑安全的场景下这一部分消耗完全是可接受的

浏览器在使用HTTPS传输数据的流程是什么

首先客户端通过URL访问服务器建立SSL连接
服务端收到客户端请求后,会将网站支持的证书信息(证书中包含公钥)传送一份给客户端
客户端的服务器开始协商SSL连接的安全等级,也就是信息加密的等级
客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站
服务器利用自己的私钥解密出会话密钥
服务器利用会话密钥加密与客户端之间的通信
[图片]

SSL是什么

SSL(Secure Sockets Layer)是一种安全协议,用于在互联网上建立加密的链接,确保数据在客户端和服务器之间安全传输。SSL由网景公司(Netscape)在1990年代中期开发,后来由IETF(互联网工程任务组)标准化为TLS(Transport Layer Security),但SSL的名称仍然被广泛使用。

SSL的主要功能:
  1. 加密:SSL使用加密算法来加密传输的数据,防止数据在传输过程中被窃听或篡改。
  2. 身份验证:SSL通过数字证书来验证服务器(以及可选地验证客户端)的身份,确保用户连接到的是他们预期的服务器。
  3. 数据完整性:SSL使用消息摘要算法来确保数据在传输过程中没有被篡改。
SSL/TLS的工作流程:
  1. 握手阶段:客户端和服务器通过SSL握手过程来协商加密算法、生成会话密钥,并进行身份验证。
  2. 证书验证:服务器向客户端发送其SSL证书,客户端验证证书的有效性,包括证书是否过期、证书颁发机构是否可信等。
  3. 密钥交换:使用公钥加密技术,客户端和服务器交换密钥信息,以便生成会话密钥。
  4. 加密通信:一旦会话密钥生成,客户端和服务器将使用该密钥来加密和解密它们之间传输的数据。
  5. 结束握手:完成加密通信的准备工作后,客户端和服务器开始加密数据传输。
SSL/TLS的版本:
  • SSL 1.0, 2.0, 3.0:早期版本,存在一些安全问题,现在已不再推荐使用。
  • TLS 1.0, 1.1, 1.2:是SSL的后续版本,提供了增强的安全特性和更好的性能。
  • TLS 1.3:最新的主要版本,提供了更好的性能和安全性,例如减少握手的往返次数,提供更强的加密算法等。
SSL的应用场景:
  • HTTPS:通过SSL/TLS加密HTTP通信,保护网页浏览的安全。
  • 电子邮件:SSL/TLS用于加密SMTP、IMAP和POP3等电子邮件协议。
  • VPN:虚拟私人网络使用SSL/TLS来加密网络流量。
  • FTP:安全文件传输协议(SFTP)使用SSL/TLS来加密文件传输过程。
    SSL/TLS是现代网络安全的基石,为各种在线通信提供了必要的加密和身份验证机制。随着网络安全意识的提高,SSL/TLS的使用变得越来越普遍。

URL和URI的区别

HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接
URI:Uniform Resource Identifier 统一资源标识符
URL:Uniform Resource Location 统一资源定位符
URI 是用来标示 一个具体的资源的,我们可以通过 URI 知道一个资源是什么。
URL 则是用来定位具体的资源的,标示了一个具体的资源位置。互联网上的每个文件都有一个唯一的URL
在这里插入图片描述

HTTP报文组成

HTTP(超文本传输协议)的报文是客户端和服务器之间通信的基本单元。HTTP报文分为两种:请求报文和响应报文

请求报文(Request Message)
  1. 请求行(Request Line)
  • 方法(Method):指定要执行的操作,如GET、POST、PUT、DELETE等
  • 资源路径(Resource Path):请求的资源的路径,通常是URL的一部分
  • HTTP版本(HTTP Version):使用的HTTP协议的版本,如HTTP/1.1或HTTP/2
  1. 请求头(Request Headers)
  • 包含多个键值对,提供请求的附加信息,如:
    • Host:请求的服务器的域名
    • User-Agent:发出请求的浏览器或客户端信息
    • Accept:客户端能够处理的媒体类型
    • Accept-Language:客户端偏好的语言
    • Accept-Encoding:客户端能够处理的压缩格式。
    • Connection:连接的类型,如持久连接或非持久连接。
    • Cookie:存储在客户端的cookie信息
  1. 空行(Empty Line)
  • 请求头和请求体之间的分隔符,表示请求头结束
  1. 请求体(Request Body,可选)
  • 包含发送给服务器的数据,如表单数据、JSON对象等。并非所有HTTP方法都需要请求体
    在这里插入图片描述
响应报文(Response Message)
  1. 状态行(Status Line)
  • HTTP版本(HTTP Version):响应使用的HTTP协议版本
  • 状态码(Status Code):表示请求结果的三位数字代码,如200表示成功,404表示未找到
  • 原因短语(Reason Phrase):状态码的简短描述,如"OK"或"Not Found"
  1. 响应头(Response Headers)
  • 类似于请求头,包含多个键值对,提供响应的附加信息,如:
    • Content-Type:响应体的媒体类型
    • Content-Length:响应体的长度
    • Set-Cookie:设置客户端cookie的指令
    • Cache-Control:控制响应的缓存行为
  1. 空行(Empty Line)
  • 响应头和响应体之间的分隔符,表示响应头结束
  1. 响应体(Response Body,可选)
  • 包含服务器返回的数据,如HTML文档、图片、视频等。响应体的大小和内容取决于请求的资源类型和服务器的配置
    [图片]

常见的请求方法

GET:请求指定的页面信息,并返回实体主体
POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改
HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
PUT:从客户端向服务器传送的数据取代指定的文档的内容
DELETE:请求服务器删除指定的页面

响应状态码

访问一个网页时,浏览器会向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 - 服务器当前不能处理客户端的请求,一段时间后可能恢复正常

  • 24
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值