proxy - 了解 CoAP 代理
问题描述
根据 CoAP 规范RFC7252第 5.7 节,存在两种类型的 CoAP 代理,即正向代理和反向代理。与此定义正交的代理可以是 CoAP-CoAP 或 HTTP-CoAP 代理。
根据这些定义,我有以下问题:
- 必须使用每种代理类型(正向代理、反向代理、CoAP-CoAP 和 HTTP-CoAP)的用例是什么?
- 这些用例中的代理究竟是什么?
- 每个代理需要 CoAP 消息的哪一部分来完成其任务?(我假设代理会查看一些 CoAP 选项?)
- 在哪里运行代理?在边界路由器上?
如果有人可以提供除了上述问题的答案之外,还可以提供良好的敬意和示例,那就太好了。
解决方案
代理时间的一些用例是:
- 转发代理:逃避限制性防火墙(例如,因为传出连接被阻止,除非它们通过代理);当 CoAP-over-WebSocket 服务器用作转发代理时,其中的一个特殊情况是从浏览器内访问 CoAP 上的资源。
- 反向代理:与正向代理大致相同,但方向相反(即,如果服务器位于防火墙网络中,则可以在防火墙上运行反向代理,以选择性地允许请求进入)。此外,反向代理可用于不受约束的服务器端的负载平衡。
- HTTP-CoAP-代理:从没有良好 CoAP 支持的编程环境访问 CoAP 设备(例如,如果您的监控系统支持轮询 HTTP 服务器,HC 代理很容易允许监控您的 CoAP 服务器)。
- CoAP-HTTP 代理:使大型网络上的服务可用于受限设备(例如查询天气预报)。这通常用途有限,因为这些 Web 服务不使用适用于受限设备的数据格式。
这在不同情况下几乎没有变化;除了明显的(交叉代理来回转换 CoAP 和 HTTP 消息)外,正向和反向代理的区别仅在于它们是对带有 Proxy-* 选项(通常是 Proxy-Scheme)设置的消息(正向代理)做出反应,还是对那些没有(反向代理)。
所有代理都需要检查完整的消息(即所有标题字段并查看所有选项)。大多数标头字段(令牌、消息 ID、mtype 在某种程度上)和几个选项(例如观察)是逐跳的,即。服务器对它们进行操作并为转发的请求创建新值。如果消息中有任何代理需要理解但不需要理解的内容(即未知的代理不安全选项),它会拒绝转发。
这完全取决于应用程序,但在大多数常见示例中,这将是某种边界路由器;可以是 6LoWPAN 场景中的 6LBR,也可以是更大设置的防火墙。在 CoAP-over-WebSocket 端点和 CoAP 世界的其他部分之间进行路由的情况下,CoAP-over-WebSocket 服务器通常运行在同一台机器上,该机器也为使用套接字的 Web 应用程序提供服务。
推荐阅读
- python - 使用 argparse 进行部分解析
- javascript - 如何捕获我尚未在正则表达式中匹配的“其他所有内容”?
- java - Java 正则表达式匹配维基百科链接
- node.js - 为什么我的 React 应用无法获取我的 Express API?
- javascript - 全局液体变量在 JS 文件中不起作用
- selenium-webdriver - 是否可以在正在运行的 WebDriver-Instance 中更改代理?
- javascript - 在 Mocha 中,Delete router 不会捕获 400 错误,并且 catch 块中的代码仍然未被发现
- python - 如何使用 t.ppf()?有哪些论据?
- excel - 如何将A列中的数组项打印到多列
- python - PYMONGO-更新列表中的特定项目