HTTP协议 HTTPS协议 MQTT协议介绍

2024-09-08 03:28
文章标签 介绍 协议 http https mqtt

本文主要是介绍HTTP协议 HTTPS协议 MQTT协议介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一.HTTP协议

1. HTTP 协议介绍

基本介绍:

协议: 

注意:

2. HTTP 协议的工作过程

基础术语:

客户端: 主动发起网络请求的一端

服务器: 被动接收网络请求的一端

请求: 客户端给服务器发送的数据

响应: 服务器给客户端返回的数据

HTTP 协议的重要特点: 一发一收,一问一答

注意: 网络编程中,除了一发一收之外,还有其它的模式

二.HTTPS协议

1. HTTPS 是什么

2. “加密”是什么

加密相关术语:

明文:要传输的原始的消息

密文:通过一定的规则将明文变换后的内容

加密:将明文变成密文

解密:将密文变成明文

密钥:在加密和解密的过程中,往往需要一个或多个中间的数据来辅助该过程,这样的数据称为密钥

为什么需要 HTTPS,为什么需要加密?

3.HTTP 和 HTTPS 的区别

(1) 端口 : 

(2) 安全性。

(3) 效率:

(4) 成本:

三.MQTT协议介绍与应用

介绍

特性

1,使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。

2,对负载内容屏蔽的消息传输。

3,使用TCP/IP提供网络连接。

4,有三种消息发布服务质量:

5,小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量。

6,使用Last Will和Testament特性通知有关各方客户端异常中断的机制。

实现方式

MQTT传输的消息分为:主题(Topic)和负载(payload)两部分:

1,Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload);

2,payload,可以理解为消息的内容,是指订阅者具体要使用的内容。

应用


一.HTTP协议

1. HTTP 协议介绍

基本介绍:

HTTP(Hyper Text Transfer Protocol): 全称超文本传输协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议

HTTP 是一种应用层协议,是基于 TCP/IP 通信协议来传递数据的,其中 HTTP1.0、HTTP1.1、HTTP2.0 均为 TCP 实现,HTTP3.0 基于 UDP 实现。现主流使用 HTTP1.0 和 HTTP3.0

协议: 

为了使数据在网络上从源头到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议,它最终体现为在网络上传输的数据包的格式

(通俗点讲,协议就是要保证网络通信的双方,能够互相对接上号。就像是两个人传递纸条通过互相指定的暗号,如果发送天亮了,表示可以打游戏了等等)

注意:

当我们访问一些网页时,是显示通过 HTTPS 来进行通信的,并且当下大多数的网页都是通过 HTTPS 来进行通信的,因为 HTTPS 在 HTTP 的基础上做了一个加密的工作。HTTPS 将在本文末尾具体介绍

2. HTTP 协议的工作过程

当我们在浏览器输入一个网址,此时浏览器就会给对应的服务器发送一个 HTTP 请求,对应的服务器收到这个请求之后,经过计算处理,就会返回一个 HTTP 响应。并且当我们访问一个网站时,可能涉及不止一次的 HTTP 请求和响应的交互过程

基础术语:
客户端: 主动发起网络请求的一端
服务器: 被动接收网络请求的一端
请求: 客户端给服务器发送的数据
响应: 服务器给客户端返回的数据
HTTP 协议的重要特点: 一发一收,一问一答

注意: 网络编程中,除了一发一收之外,还有其它的模式

多发一收:例如上传大文件

一发多收:例如看直播时,搜索一个词条可以得到多个视频源

多发多收:例如串流(steam link、moonlight 等等)

二.HTTPS协议

1. HTTPS 是什么

HTTPS (Hyper Text Transfer Protocol over SecureSocket Layer):

HTTPS 是一种应用层协议,是一种透过计算机网络进行安全通信的传输协议。

HTTPS 经由 HTTP 进行通信,但是在 HTTP 的基础上引入了一个加密层,使用 SSL/TLS 来加密数据包

HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。

HTTPS 默认工作在 TCP 协议443端口

2. “加密”是什么

加密相关术语:
明文:要传输的原始的消息
密文:通过一定的规则将明文变换后的内容
加密:将明文变成密文
解密:将密文变成明文
密钥:在加密和解密的过程中,往往需要一个或多个中间的数据来辅助该过程,这样的数据称为密钥
为什么需要 HTTPS,为什么需要加密?

前几年有一个运营商劫持事件,由于我们通过网络传输的任何数据都会经过运营商的网络设备(路由器、交换机等),那么运营商的网络设备就可以解析出我们传输的数据内容,并进行篡改。

比如你要在下某个软件,当你点击下载时,其实就是在给服务器发送一个 HTTP 请求,获取到的 HTTP 响应本应该包含该软件的下载链接,但是经过运营商劫持后,就可以将这个响应给篡改成其它软件的下载链接,使得篡改者可以获取非法的利益。

上述的例子不止运营商可以劫持,一些黑客或非法人员都可以通过这种手段来窃取用户隐私或者篡改内容。

故 HTTPS 的出现,使用密文传输进一步的保证了用户的信息安全

3.HTTP 和 HTTPS 的区别

(1) 端口 : 

HTTP默认使⽤端口80,⽽HTTPS的默认使⽤端口443。

(2) 安全性。
(3) 效率:

HTTPS协议多次握手,导致页面的加载时间是HTTP的2-100倍;

HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗;

SSL涉及到的安全算法会消耗 CPU 资源,对服务器资源消耗较大(可以使用SSL加速器进行加速)。

(4) 成本:

申请SSL证书需要钱,功能越强大的证书费用越高。

三.MQTT协议介绍与应用

介绍

MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。

MQTT是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件,以解决当前繁重的资料传输协议,如:HTTP。

MQTT作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

特性

1,使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。
2,对负载内容屏蔽的消息传输。
3,使用TCP/IP提供网络连接。
4,有三种消息发布服务质量:

“至多一次”,消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。

“至少一次”,确保消息到达,但消息重复可能会发生。

“只有一次”,确保消息到达一次。在一些要求比较严格的计费系统中,可以使用此级别。

5,小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量。
6,使用Last Will和Testament特性通知有关各方客户端异常中断的机制。

Last Will:即遗言机制,用于通知同一主题下的其他设备发送遗言的设备已经断开了连接。

Testament:遗嘱机制,功能类似于Last Will。

实现方式

实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。

其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。

MQTT传输的消息分为:主题(Topic)和负载(payload)两部分

1,Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload);
2,payload,可以理解为消息的内容,是指订阅者具体要使用的内容。

客户端可以建立与服务器的连接,订阅主题、接受消息、发布消息等

服务器可以是一个应用程序或一台设备。用于接受来自客户端的网络连接,接受发布的消息、转发订阅相关主题的客户端的消息、等

应用

应用首先需要 MQTT服务器,其次需要客户端

然后要客户端跟服务器进行连接

连接之后就可以 订阅主题 收到该主题发布的信息 ,向特定主题发布信息

这篇关于HTTP协议 HTTPS协议 MQTT协议介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1146977

相关文章

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

Go语言中最便捷的http请求包resty的使用详解

《Go语言中最便捷的http请求包resty的使用详解》go语言虽然自身就有net/http包,但是说实话用起来没那么好用,resty包是go语言中一个非常受欢迎的http请求处理包,下面我们一起来学... 目录安装一、一个简单的get二、带查询参数三、设置请求头、body四、设置表单数据五、处理响应六、超

JAVA SE包装类和泛型详细介绍及说明方法

《JAVASE包装类和泛型详细介绍及说明方法》:本文主要介绍JAVASE包装类和泛型的相关资料,包括基本数据类型与包装类的对应关系,以及装箱和拆箱的概念,并重点讲解了自动装箱和自动拆箱的机制,文... 目录1. 包装类1.1 基本数据类型和对应的包装类1.2 装箱和拆箱1.3 自动装箱和自动拆箱2. 泛型2

如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件

《如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件》本文介绍了如何使用Docker部署FTP服务器和Nginx,并通过HTTP访问FTP中的文件,通过将FTP数据目录挂载到N... 目录docker部署FTP和Nginx并通过HTTP访问FTP里的文件1. 部署 FTP 服务器 (

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

springMVC返回Http响应的实现

《springMVC返回Http响应的实现》本文主要介绍了在SpringBoot中使用@Controller、@ResponseBody和@RestController注解进行HTTP响应返回的方法,... 目录一、返回页面二、@Controller和@ResponseBody与RestController

nginx生成自签名SSL证书配置HTTPS的实现

《nginx生成自签名SSL证书配置HTTPS的实现》本文主要介绍在Nginx中生成自签名SSL证书并配置HTTPS,包括安装Nginx、创建证书、配置证书以及测试访问,具有一定的参考价值,感兴趣的可... 目录一、安装nginx二、创建证书三、配置证书并验证四、测试一、安装nginxnginx必须有"-