
# Linux系统中TCP/UDP端口测试方法
#### 应用场景
本文主要用于介绍如何在Linux操作系统的实例中测试TCP、UDP端口的连通性，以便在异常场景下排查网络是否正常。
#### 测试TCP端口连通性
根据端口状态选择合适的方案：
- 待测试端口已被监听，可选方案一：使用Telnet测试已被监听端口
- 待测试端口未被监听，可选方案二：创建新的监听端口测试
具体方案介绍如下。
**方案一：使用Telnet测试已被监听端口**
1. 登录Linux操作系统的实例，详情参考[Linux ECS登录方式概述](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0013771089.html)。
2. 执行命令使用Telnet工具测试端口连通性，其中host_ip需要替换为目标节点的IP地址，port替换为待测试端口。 
   ```
   sudo telnet <host_ip> <port>
   ```
   连接成功时回显如下，具体内容可能会因操作系统不同而有所不同，但一般都会包含Connected to xxx内容。
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002557514947.png)
   
   
**方案二：创建新的监听端口测试**
准备两台Linux实例，分别作为服务端和客户端，测试时测试服务端创建的端口的连通性，客户端负责协助测试。
1. 登录Linux操作系统的实例，详情参考[Linux ECS登录方式概述](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0013771089.html)。
2. 在服务端执行命令确实节点的Python版本情况。 
   ```
   python -V
   ```
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002557482129.png)
   若提示报错说明未安装Python，需要部署Python，参考[搭建Python环境](https://support.huaweicloud.com/bestpractice-ecs/ecs_bp_6008.html)。
   
   
3. 在服务端执行命令，使用Python自带的Web服务器临时创建新的监听端口，其中port替换为待测试端口。 
   ```
   # Python 2.x版本执行
   sudo python -m SimpleHTTPServer <port>
   # Python 3.x版本执行
   sudo python3 -m http.server <port>
   ```
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002526285226.png "点击放大")
   
   
4. 在客户端执行命令，使用Telnet测试服务端创建的端口，监听端口连通性。 
   其中，host_ip替换为服务端IP地址，port替换为服务端创建的监听端口。
   ```
   sudo telnet <host_ip> <port>
   ```
   连接成功时回显如下，具体内容可能会因操作系统不同而有所不同，但一般都会包含Connected to xxx内容。
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002557485333.png)
   随意输入测试内容，如"test"，会提示页面报错，但可以在服务端看到关于输入的内容"test"的相关回显。
   客户端如下图：
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002557405229.png "点击放大")
   服务端如下图：
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002557405569.png "点击放大")
   
   
 
#### 测试UDP端口连通性
准备两台Linux实例，分别作为服务端和客户端，测试时测试服务端创建的端口的连通性，客户端负责协助测试。
1. 登录Linux操作系统的实例，详情参考[Linux ECS登录方式概述](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0013771089.html)。
2. 分别在客户端和服务端执行如下命令，检查是否安装nc程序。 
   ```
   which nc
   ```
   若回显如下说明已安装。
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002526315124.png)
   若未安装可根据操作系统不同使用Yum或apt-get安装，以yum为例，执行以下命令安装。
   ```
   sudo yum install -y nc
   ```
   
   
3. 在服务端执行命令，创建需要监听的端口，其中port替换为待测试端口。 
   ```
   sudo nc -uvlp <port>
   ```
   其中，参数u指的是UDP协议，v代表打印详细连接信息，l代表监听模式，等待传入连接或数据包，p指定端口号。
   执行成功回显如下。
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002557486239.png)
   
   
4. 在客户端执行命令，连接服务端的待测试端口，其中host_ip需要替换为服务端的IP地址，port替换为待测试端口。 
   ```
   sudo nc -u <host_ip> <port>
   ```
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002557642041.png)
   
   
5. 连接成功后，在客户端输入测试字符串"test"，观察服务端是否同步收到数据，如果同步收到数据说明端口连通性正常。 
   客户端回显如下：
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002557721993.png)
   服务端回显如下：
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002526722108.png)
   
   
 
