前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >物联网传输协议 - REST/HTTP

物联网传输协议 - REST/HTTP

作者头像
拿我格子衫来
发布2022-01-24 15:35:36
6240
发布2022-01-24 15:35:36
举报
文章被收录于专栏:TopFETopFE
物联网传输协议
物联网传输协议

在繁杂的物联网应用中,如何根据自己的业务需求,来选择合适且高效的应用层通信传输协议。是一个复杂且需要知识储备的事情。

接下来我们将讲解一下目前常见的一些物联网通信传输协议。

REST/HTTP

在物联网的应用层面,经常通过 REST/HTTP 开放物联网中资源,实现服务被其他应用所调用。其用于实现客户端和服务器之间交互的松耦合,降低了客户端和服务器之间的交互延迟。

快速入门

角色

在 HTTP 通信协议中和其他许多的协议相同,用于客户端和服务器之间的通信。

img.png
img.png
整体流程

HTTP 通信中,整体通信过程一定是由客户端发出请求,服务端来响应请求。

img_1.png
img_1.png
HTTP 协议无状态

HTTP 是一种无状态协议。也就是说请求和响应都不会做持久化处理。

img_2.png
img_2.png

HTTP 请求

我们需要先了解一下 HTTP 请求的格式与规范。

URI 定位资源

首先,如果我们想向服务端发送请求,我们就需要一个标志来知道向谁发送请求,毕竟互联网这么大,谁也不知道随机定位会去哪儿。

就像我们的电话号码一样,如果我想给朋友打一个电话,我就需要输入一串唯一的电话号码。

img_3.png
img_3.png
请求的方法

在请求时,我们要带上我们请求的方法,其主要为所做事情的一个分类缩写。用于精确区分具体功能,简化接口架构复杂性。 基于RESTful 的 HTTP API 请求方法解释如下:

  • GET - 用于获取资源
  • POST - 用于添加资源
  • PUT - 用于更新资源 ( 整体资源 )
  • PATCH - 用于更新资源( 资源内的部分 )
  • DELETE - 用于删除资源
HTTP请求报文结构

当客户端向服务端发送请求时,发送的HTTP 报文就叫做请求报文。

HTTP请求报文由 报文头部空行报文主体三部分组成。如图所示:

HTTP 报文
HTTP 报文
  • 报文头部包含请求行 ( 包含请求方法、HTTP版本和URI )、各种头部字段( 稍后讲解 )。
  • 空行( CR+LF )为一个区分头部和请求行的标志符号。
  • 报文主体包含一些所需要传输的数据或为空。

一个完整的HTTP GET 方法的请求报文如下:

 GET请求
GET请求

HTTP 响应

当服务端接收客户端发送的请求后,要根据业务情况进行返回响应报文。

HTTP 响应报文格式

HTTP 响应报文的格式和请求报文大体类似。也是由报文头部空行报文主体三部分组成。如图所示:

  • 报文头部包含响应状态行( 响应状态码和HTTP 版本 )

完成的HTTP 响应报文如下:

HTTP 规范响应状态码

HTTP 的状态码是服务端对客户端请求的返回结果,用来标记服务端对于该请求的处理情况。

一些日常常见的状态码:

  • 2xx
    • 200 OK / 请求成功
  • 3xx
    • 301 Moved Permanently / 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一。
    • 304 Not Modified / 如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。
  • 4xx
    • 400 Bad Request / 1. 语义有误,当前请求无法被服务器理解。 2. 请求参数有误。
    • 401 Unauthorized / 当前请求需要用户验证。
    • 403 Forbidden / 服务器已经理解请求,但是拒绝执行它。
    • 404 Not Found / 请求失败,请求所希望得到的资源未被在服务器上发现。
  • 5xx
    • 500 Internal Server Error / 服务器遇到了不知道如何处理的情况。
    • 503 Service Unavailable / 服务器没有准备好处理请求。 常见原因是服务器因维护或重载而停机。
    • 504 Gateway Timeout / 当服务器作为网关,不能及时得到响应时返回此错误代码。

推荐一个有意思的网站,如果你记不住一些状态码,可以去该网站查找。 https://http.cat/

HTTP 头部

在发送请求报文和接收响应报文时我们经常会发现报文头部会有许许多多的头部字段,接下来我们将会对一些常见的字段进行讲解。

字段结构

HTTP 头部字段时由名称和值构成的一个类似 K-V 结构,中间用冒号分隔。

字段名 : 字段值

通用头部字段

有一些字段在请求和响应中都会有,称其为通用头部字段。常见如下:

  • Cache-Control 控制缓存的行为
  • Connection 逐跳首部、连接的管理
  • Date 创建报文的日期时间
  • Pragma 报文指令
  • Trailer 报文末端的首部一览
  • Transfer-Encoding 指定报文主体的传输编码方式
  • Upgrade 升级为其他协议
  • Via 代理服务器的相关信息
  • Warning 错误通知
请求头部字段

客户端向服务端发送报文时携带的字段。主要用于标记一下语言、响应格式等信息。

  • Accept 用户代理可处理的媒体类型
  • Accept-Charset 优先的字符集
  • Accept-Encoding 优先的内容编码
  • Accept-Language 优先的语言(自然语言)
  • Authorization Web认证信息
  • Expect 期待服务器的特定行为
  • From 用户的电子邮箱地址
  • Host 请求资源所在服务器
响应头部字段

服务端向客户端响应报文所附加的字段。主要用于补充响应的附加内容等。

  • Accept-Ranges 是否接受字节范围请求
  • Age 推算资源创建经过时间
  • ETag 资源的匹配信息
  • Proxy-Authenticate 代理服务器对客户端的认证信息
实体头部字段

主要针对请求报文和响应报文的字段。补充了例如内容类型、内容长度等

  • Content-Encoding 实体主体适用的编码方式
  • Content-Type 实体主体的媒体类型
  • Expires 实体主体过期的日期时间
  • Content-Language 实体主体的自然语言
  • Content-Length 实体主体的大小(单位:字节)

HTTP 的优缺点

当大家大致了解HTTP协议后,我们将对其进行简单的总结。来分析一下 HTTP 协议的优缺点。

好的方面:

  • 简单、灵活和易于扩展
  • 拥有成熟的生态规范
  • 无状态协议。利于实现分布式集群化。

不好的方面:

  • 明文传输,所有数据可以轻松获取。
  • 无法效验通信双方的身份。导致恶意访问。
  • 无法证明报文的完整,有可能被篡改。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • REST/HTTP
    • 快速入门
      • 角色
      • 整体流程
      • HTTP 协议无状态
    • HTTP 请求
      • URI 定位资源
      • 请求的方法
      • HTTP请求报文结构
    • HTTP 响应
      • HTTP 响应报文格式
      • HTTP 规范响应状态码
    • HTTP 头部
      • 字段结构
      • 通用头部字段
      • 请求头部字段
      • 响应头部字段
      • 实体头部字段
    • HTTP 的优缺点
    相关产品与服务
    物联网
    腾讯连连是腾讯云物联网全新商业品牌,它涵盖一站式物联网平台 IoT Explorer,连连官方微信小程序和配套的小程序 SDK、插件和开源 App,并整合腾讯云内优势产品能力,如大数据、音视频、AI等。同时,它打通腾讯系 C 端内容资源,如QQ音乐、微信支付、微保、微众银行、医疗健康等生态应用入口。提供覆盖“云-管-边-端”的物联网基础设施,面向“消费物联”和 “产业物联”两大赛道提供全方位的物联网产品和解决方案,助力企业高效实现数字化转型。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档