在安全隧道中使用同步 TCP 连接 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

在安全隧道中使用同步 TCP 连接

对于每个数据流,Amazon IoT 安全隧道同时支持多个 TCP 连接。当您需要建立与远程设备的同步连接时,可以使用此功能。使用同步 TCP 连接可减小客户端发出多个请求时发生超时的几率。例如,当访问正在运行多个组件的 Web 服务器时,同步 TCP 连接可减少加载站点所需的时间。

注意

对于每个 Amazon Web Services 账户,同步 TCP 连接的带宽限制为每秒 800 KB。Amazon IoT 安全隧道会根据传入请求数为您配置此限制。

示例使用案例

假设您需要远程访问目标设备的本地 Web 服务器,并且该 Web 服务器上运行了多个组件。利用单一 TCP 连接,在尝试访问此 Web 服务器时,顺序加载会增加在站点上加载资源所花费的时间。同步 TCP 连接可以满足站点的资源要求来减少加载时间,从而减少访问时间。下图说明如何支持同步 TCP 连接,以便将数据流传输到远程设备上运行的 Web 服务器应用程序。

注意

如果要使用隧道访问远程设备上运行的多个应用程序,则可以使用隧道多路复用功能。有关更多信息,请参阅在安全隧道中多路复用多个数据流

如何使用同步 TCP 连接

以下过程将为您演练如何使用同步 TCP 连接来访问远程设备上的 Web 浏览器。当客户端发出多个请求时,Amazon IoT 安全隧道会自动设置同步 TCP 连接来处理这些请求,从而减少加载时间。

  1. 打开隧道

    使用 OpenTunnel API 操作或 open-tunnel CLI 命令打开隧道。通过将 HTTP 指定为服务并指定与远程设备对应的 Amazon IoT 事物的名称来配置目标。您的 Web 服务器应用程序正在此远程设备上运行。您必须已在 Amazon IoT 注册表中创建 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 }
  2. 配置和启动本地代理

    必须先从 GitHub 下载本地代理源代码并为您选择的平台构建本地代理,之后才能运行本地代理。之后,您可以启动目标和源本地代理以连接到安全隧道,并开始使用远程 Web 服务器应用程序。

    注意

    要让 Amazon IoT 安全隧道使用同步 TCP 连接,您必须升级到最新版本的本地代理。如果您使用 Amazon IoT 设备客户端配置本地代理,则此功能不可用。

    // Start the destination local proxy ./localproxy -r us-east-1 -d HTTP=80 -t destination_client_access_token // Start the source local proxy ./localproxy -r us-east-1 -s HTTP=5555 -t source_client_access_token

    有关配置和使用本地代理的更多信息,请参阅如何使用本地代理

现在,您可以使用隧道访问 Web 服务器应用程序。当客户端发出多个请求时,Amazon IoT 安全隧道将自动设置和处理同步 TCP 连接。