Linux 命令之 - nc
命令简介
nc
(NetCat)是一个功能丰富的网络工具,可用于通过 TCP 或 UDP 协议读写网络数据。它最初被设计为一个简单的 Unix 工具,用于在两台计算机之间建立 TCP 或 UDP 连接并传输数据。随着时间的推移,nc
已成为一个非常强大的网络工具,可用于各种网络任务,如端口扫描、传输文件、探测防火墙规则等。
命令格式
1 | nc [选项] [目标主机] [端口号] |
参数说明
命令实例
基本用法
1.作为 TCP 客户端
1 | nc example.com 80 |
这将尝试连接到 example.com
的 80 端口(HTTP 端口)。连接成功后,您可以直接在终端发送 HTTP 请求。
2.监听 TCP 端口
1 | nc -l -p 8000 |
这将在本地机器上监听 8000 端口上的 TCP 连接。连接成功后,您可以在终端中发送和接收数据。
3.扫描 TCP 端口
1 | nc -zv example.com 80-85 |
这将扫描 example.com
上的 80、81、82、83、84 和 85 端口是否开放。
4.传输文件
1 | # 发送端 |
这将在发送端监听 8000 端口,并将 file.txt
的内容发送给连接到该端口的任何客户端。在接收端,将连接到发送端的 8000 端口,并将接收到的数据写入 received_file.txt
。
扩展用法
1.作为 HTTP 服务器
1 | printf 'HTTP/1.1 200 OK\n\nHello, World!' | nc -l -p 8080 |
这将在本地机器上启动一个简单的 HTTP 服务器,监听 8080 端口。当有客户端连接到该端口时,服务器将响应 “Hello, World!”。
2.作为 Proxy 服务器
1 | # 在本地机器上启动代理服务器 |
这将在本地机器上启动一个简单的代理服务器,监听 8080 端口。当客户端连接到该端口时,代理服务器将建立与 example.com
的连接。客户端可以通过连接到本地 8080 端口来访问 example.com
。
高级用法
1.端口扫描器
1 |
|
这是一个简单的端口扫描器脚本,使用 nc
命令和 Bash 脚本。它扫描目标主机上指定的端口范围和单个端口,并报告每个端口的开放或关闭状态。
2.聊天服务器
1 | # 在服务器端启动聊天服务器 |
这将在服务器端启动一个简单的聊天服务器,监听 8000 端口。客户端可以连接到该端口,并发送消息。服务器将回显客户端发送的消息,并将其记录到 chat.log
文件中。
3.加密通信
1 | # 在服务器端启动加密通信服务 |
这将在服务器端启动一个加密通信服务,使用 openssl
命令对数据进行 Base64 编码。客户端可以连接到该服务,并使用 openssl
命令对数据进行解码。这种方式可以实现基本的数据加密传输。
以上是关于 nc
命令的详细文档,包括命令简介、语法格式、参数使用说明、演示实例以及扩展和高级使用方法。nc
是一个非常强大和灵活的网络工具,可用于各种网络任务,包括端口扫描、传输文件、探测防火墙规则等。掌握 nc
命令的使用方法对于网络管理员和运维工程师非常有帮助。