

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在安全隧道中使用同步 TCP 连接
<a name="multiplexing-simultaneous-tcp"></a>

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

**注意**  
同时 TCP 连接的带宽限制为每秒 800 千字节。 AWS 账户 AWS IoT 安全隧道可以根据传入请求的数量为您配置此限制。

## 使用案例示例
<a name="tcp-use-case"></a>

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

**注意**  
如果要使用隧道访问远程设备上运行的多个应用程序，则可以使用隧道多路复用功能。有关更多信息，请参阅 [在安全隧道中多路复用多个数据流](multiplexing-multiple-streams.md)。

![\[显示物联网云设置的示意图，其中有源设备、本地代理、代理服务器、目标设备以及 Web 服务器应用程序，通过 TCP 和 WSS 协议连接。\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/images/tcp-tunneling.png)


## 如何使用同步 TCP 连接
<a name="multiple-tcp-tutorial"></a>

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

1. 

**打开隧道**

   使用 `OpenTunnel` API 操作或 `open-tunnel` CLI 命令打开隧道。通过将 `HTTP` 指定为服务并指定与远程设备对应的 AWS IoT 事物的名称来配置目标。您的 Web 服务器应用程序正在此远程设备上运行。您必须已经在 AWS IoT 注册表中创建了物联网事物。有关更多信息，请参阅 [使用注册表管理事物](thing-registry.md)。

   ```
   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
   }
   ```

1. 

**配置和启动本地代理**

   在运行本地代理之前，请从下载本地代理源代码[GitHub](https://github.com/aws-samples/aws-iot-securetunneling-localproxy)并将其构建到您选择的平台上。之后，您可以启动目标和源本地代理以连接到安全隧道，并开始使用远程 Web 服务器应用程序。
**注意**  
要使用同步的 TCP 连接进行 AWS IoT 安全隧道，必须升级到最新版本的本地代理。如果您使用 AWS 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
   ```

   有关配置和使用本地代理的更多信息，请参阅[如何使用本地代理](how-use-local-proxy.md)。

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