本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在安全隧道中使用同步 TCP 连接
Amazon IoT 安全隧道支持每个数据流同时使用多个 TCP 连接。当您需要建立与远程设备的同步连接时,可以使用此功能。使用同步 TCP 连接可减小客户端发出多个请求时发生超时的几率。例如,当访问正在运行多个组件的 Web 服务器时,同步 TCP 连接可减少加载站点所需的时间。
注意
同时 TCP 连接的带宽限制为每秒 800 千字节。 Amazon Web Services 账户 Amazon IoT 安全隧道可以根据传入请求的数量为您配置此限制。
使用案例示例
假设您需要远程访问目标设备的本地 Web 服务器,并且该 Web 服务器上运行了多个组件。利用单一 TCP 连接,在尝试访问此 Web 服务器时,顺序加载会增加在站点上加载资源所花费的时间。同步 TCP 连接可以满足站点的资源要求来减少加载时间,从而减少访问时间。下图说明如何支持同步 TCP 连接,以便将数据流传输到远程设备上运行的 Web 服务器应用程序。
注意
如果要使用隧道访问远程设备上运行的多个应用程序,则可以使用隧道多路复用功能。有关更多信息,请参阅 在安全隧道中多路复用多个数据流。
![该插图显示了物联网云设置,包括源设备、本地代理、代理服务器和带有 Web 服务器应用程序的目标设备,通过 TCP 和 WSS 协议连接。](images/tcp-tunneling.png)
如何使用同步 TCP 连接
以下过程将为您演练如何使用同步 TCP 连接来访问远程设备上的 Web 浏览器。当客户端有多个请求时, Amazon IoT 安全隧道会自动设置同时的 TCP 连接来处理这些请求,从而缩短加载时间。
-
打开隧道
使用
OpenTunnel
API 操作或open-tunnel
CLI 命令打开隧道。通过将HTTP
指定为服务并指定与远程设备对应的 Amazon IoT 事物的名称来配置目标。您的 Web 服务器应用程序正在此远程设备上运行。您必须已经在 Amazon IoT 注册表中创建了物联网事物。有关更多信息,请参阅 如何使用注册表管理事物。aws iotsecuretunneling open-tunnel \ --destination-config thingName=
RemoteDevice1
,services=HTTP运行此命令将生成源和目标访问令牌,您将使用这些令牌运行本地代理。
{ "tunnelId": "
b2de92a3-b8ff-46c0-b0f2-afa28b00cecd
", "tunnelArn": "arn:aws:iot:us-west-2
:431600097591
:tunnel/b2de92a3-b8ff-46c0-b0f2-afa28b00cecd
", "sourceAccessToken":source_client_access_token
, "destinationAccessToken":destination_client_access_token
} -
配置和启动本地代理
在运行本地代理之前,请从中下载本地代理源代码,GitHub
然后针对您选择的平台进行构建。之后,您可以启动目标和源本地代理以连接到安全隧道,并开始使用远程 Web 服务器应用程序。 注意
要使用同步的 TCP 连接进行 Amazon IoT 安全隧道,必须升级到最新版本的本地代理。如果您使用 Amazon IoT 设备客户端配置本地代理,则此功能不可用。
// Start the destination local proxy ./localproxy -r
us-east-1
-d HTTP=80
-tdestination_client_access_token
// Start the source local proxy ./localproxy -rus-east-1
-s HTTP=5555
-tsource_client_access_token
有关配置和使用本地代理的更多信息,请参阅如何使用本地代理。
现在,您可以使用隧道访问 Web 服务器应用程序。 Amazon IoT 当客户端有多个请求时,安全隧道将自动设置和处理同时的 TCP 连接。