5 分钟带你学会享有瑞士军刀之称的网络调试神器 Netcat,从此网络故障诊断不再愁!

小编 2026-06-30 阅读:630 评论:0
Netcat(或 NC )是一个命令行实用程序,它使用 TCP 或 UDP 协议跨网络连接读取和写入数据。它是网络和系统管理员中最强大的工具之一,被视为网络工具的瑞士军刀。Netcat 是跨平台的,可用于 Linux、macOS、Windo...
Netcat(或 NC )是一个命令行实用程序,它使用 TCP 或 UDP 协议跨网络连接读取和写入数据。它是网络和系统管理员中最强大的工具之一,被视为网络工具的瑞士军刀。

Netcat 是跨平台的,可用于 LinuxmacOSWindowsBSD。你可以使用 Netcat 调试和监视网络连接、扫描打开的端口、传输数据、作为代理等等。Netcat 软件包已预安装在 macOS 和大多数 Linux 发行版(如:Ubuntu)上。

Netcat 语法

Netcat 命令的最基本语法采用以下形式:

nc [options] host port

在 Ubuntu 上,您可以使用 netcat 或 nc。它们都是 Netcat 的 openBSD 版本的符号链接。

默认情况下,Netcat 将尝试启动与指定主机和端口的 TCP 连接。如果要建立 UDP 连接,请使用以下 -u 选项:

$ nc -u host port

端口扫描

扫描端口是 Netcat 最常见的用途之一。您可以扫描单个端口或端口范围。

例如,要扫描范围为 20-80 的开放端口,可以使用以下命令:

$ nc -z -v 10.10.8.8 20-80

-z 选项将告诉 nc 你仅扫描打开的端口,而不向其发送任何数据,并使用 -v 提供更多详细信息。

输出将如下所示:

nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused
nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused
Connection to 10.10.8.8 22 port [tcp/ssh] succeeded!
nc: connect to 10.10.8.8 port 23 (tcp) failed: Connection refused
...
nc: connect to 10.10.8.8 port 79 (tcp) failed: Connection refused
Connection to 10.10.8.8 80 port [tcp/http] succeeded!

如果只想打印带有开放端口的行,则可以使用 grep 命令过滤结果。

$ nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded
Connection to 10.10.8.8 22 port [tcp/ssh] succeeded!
Connection to 10.10.8.8 80 port [tcp/http] succeeded!

你也可以使用 Netcat 查找服务器软件及其版本。例如,如果你在默认的 SSH 端口 22 上向服务器发送 EXIT 命令:

$ echo "EXIT" | nc 10.10.8.8 22

将输出如下所示:

SSH-2.0-OpenSSH_7.6p1 Ubuntu-4
Protocol mismatch.

要扫描 UDP 端口,只需将 -u 选项添加到命令中,如下所示:

$ nc -z -v -u 10.10.8.8 20-80

在大多数情况下,对于复杂的端口扫描,Nmap 是比 Netcat 更好的工具。

通过 Netcat 发送文件

通过创建基本的客户端/服务器模型,可以使用 Netcat 将数据从一台主机传输到另一台主机。

通过将 Netcat 在接收主机上的特定端口上监听(使用 -l 选项),然后与其他主机建立常规 TCP 连接并通过该主机发送文件。

在接收时,运行以下命令,它将打开端口 5555 进行传入连接,并将输出重定向到文件:

$ nc -l 5555 > file_name

从发送主机连接到接收主机并发送文件:

$ nc receiving.host.com 5555 < file_name

如果要传输目录,可以使用 tar 在源主机上归档目录,并在目标主机上提取归档。

在接收主机上,设置 Netcat 工具以监听端口 5555 上的传入连接。传入数据通过管道传递到 tar 命令,该命令将提取存档:

$ nc -l 5555 | tar xzvf -

在发送主机上的目录通过连接到 nc 接收主机上的监听进程来发送数据:

$ tar czvf - /path/to/dir | nc receiving.host.com 5555

您可以在两端观察传输进度。完成后,键入 CTRL+C 以关闭连接。

创建一个简单的聊天服务器

在两个或多个主机之间创建在线聊天的过程与传输文件的方法是基本相同的。

在第一台主机上启动一个 Netcat 进程以侦听端口 5555:

$ nc -l 5555

在第二台主机上,运行以下命令以连接到侦听端口:

$ nc first.host.com 5555

现在,如果你键入一条消息并按回车,它将同时显示在两台主机上。

要关闭连接,请键入 CTRL+C

执行 HTTP 请求

尽管有许多更好的 HTTP 请求工具,例如:curl,你也可以使用 Netcat 将各种请求发送到远程服务器。

例如,要从 OpenBSD 网站检索 Netcat 的手册页,请输入:

$ printf "GET /nc.1 HTTP/1.1
Host: man.openbsd.org

" | nc man.openbsd.org 80

请求完成后,包括 HTTP 标头和 HTML 代码的完整响应将在终端中打印。

结论

在本教程中,你学习了如何使用 Netcat 实用程序建立和测试 TCP 和 UDP 连接。如果你需要更多信息,请访问 Netcat 手册页,并阅读有关 Netcat 命令的所有其他强大选项的信息。

来源:myfreax 原文:https://url.cn/5MTjaKh 题图:来自谷歌图片搜索 版权:本文版权归原作者所有 投稿:欢迎投稿,邮箱: editor@hi-linux.com

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表