Linux 中nc指令的使用总结

2023-09-12 10:58:58

nc指令概述

nc 是 Linux 系统中的 netcat 命令之简称,它是一个强大的网络工具,可以用于创建 TCP/UDP 套接字连接。常见的其用法模板可定位:nc [选项] [地址] [端口],它的用法如下图所示:

请添加图片描述

知道你英语差了一丢丢,小鸽鸽给你准备了中文版:

OpenBSD的netcat(Debian版本为1.206-1ubuntu1)的使用方法: 用法:nc [选项] [目标] [端口] 选项:
-4 使用IPv4
-6 使用IPv6
-b 允许广播
-C 发送CRLF作为行结束符
-D 启用调试套接字选项
-d 从stdin分离
-F 传递套接字fd
-h 此帮助文本
-I length TCP接收缓冲区长度
-i interval 发送行/扫描端口的延迟间隔
-k 保持传入套接字开启以进行多个连接
-l 监听模式,为了传入连接
-M ttl 发送的TTL /跳限
-m minttl 最小接收TTL/跳限
-N 在stdin出现EOF后关闭网络套接字
-n 禁止名称/端口解析
-O length TCP发送缓冲区长度
-P proxyuser 代理认证的用户名
-p port 为远程连接指定本地端口
-q secs 在stdin出现EOF后延迟后退出
-r 随机化远程端口
-S 启用TCP MD5签名选项
-s source 本地源地址
-T keyword TOS值
-t 回答TELNET协商
-U 使用UNIX域套接字
-u UDP模式
-V rtable 指定备用路由表
-v 详细信息
-W recvlimit 接收一定数量的数据包后终止
-w timeout 进行连接和最终网络读取的超时时间
-X proto 代理协议:“4”,“5”(SOCKS)或"connect"
-x addr[:port] 指定代理地址和端口
-Z DCCP模式
-z 零I / O模式[用于扫描]
端口号可以是单个或范围:lo-hi[包括]

用法一:端口扫描

语法:nc -vz localhost m-n
端口扫描既可以是单个端口也可以是多个端口,以上指令扫描的是m-n之间端口号,来验证这些端口中哪些是可通的、是可以连接的、开放的。此指令是想尝试连接到本地的 m 到 n 端口。对于每个成功的连接,它都会打印一个消息并退出。如果端口是关闭的或不可达的,它将不打印任何消息。使用 -vz 选项可以显示详细的输出并仅显示开放的端口。

😙首先通过netstat -an指令列出某设备或者说IP上所有开放的端口号

请添加图片描述

发现192.168.149.129的138端口号是开放的,我们通过指令nc -vz 来扫描130-145之间的所有端口号,除了138端口之外所有都显示connection refused

请添加图片描述

用法二:命令行中发送和接收数据

通过 nc,你可以在命令行中发送和接收数据,这在调试网络应用或进行一些简单的网络通信时非常有用。

首先,我们需要打开一个nc会话来监听我们的端口。这可以通过以下命令完成:nc -l 138

在这个命令中,“-l”参数表示“listen”138是我们想要监听的端口号。当我们运行这个命令时,nc会在指定端口上监听,等待接收数据。

然后,我们可以使用另一个nc命令从另一台机器向上述nc会话发送数据。假设你的Linux机器的IP是192.168.149.129,你可以在另一台机器上运行以下命令:

echo "Hello, World!" | nc 192.168.149.129 138

在这个命令中,“echo “Hello, World!””会产生“Hello, World!”这个字符串,然后通过管道将这个字符串传递给nc命令。nc命令会将这个字符串发送到你之前监听的192.168.149.129138端口。

当你发送数据后,你之前监听的nc会话应该能接收到这些数据,并在命令行中显示出来。

同样地,你也可以在nc会话中向外部主机发送数据。例如,你可以在nc会话中输入“Hello, World!”并按回车键,这将向与你nc会话连接的任何主机发送这个字符

下图坐左边显示是接收端,将消息“duzhongbo”发送到IP的138端口上,右边一直在监听138这个端口,一旦消息发过来便会立即接收。

请添加图片描述

用法三:建立双方通信

通过在一个终端上监听某端口号:nc -l port

然后在另一个终端上连接该端口号: nc IP Port

之后便可双方建立通信链路
请添加图片描述

总结:其实对于nc指令的用法来讲就是连个,一是进行端口扫描检查,二是利用其建立不同终端见的通信

更多推荐

Typescript中的逆变与协变

许多不是很熟悉TS的朋友对于逆变和协变的概念会感到莫名的恐惧,没关系。它们仅仅代表阐述表现的概念而已,放心我们并不会从概念入手而是通过实例来逐步为你揭开它的面纱。逆变(函数入参)首先,我们先来思考这样一个场景:leta!:{a:string;b:number};letb!:{a:string};b=a我们都清楚TS属于

时序数据库 TimescaleDB 安装与使用

TimescaleDB是一个时间序列数据库,建立在PostgreSQL之上。然而,不仅如此,它还是时间序列的关系数据库。使用TimescaleDB的开发人员将受益于专门构建的时间序列数据库以及经典的关系数据库(PostgreSQL),所有这些都具有完整的SQL支持。本文介绍TimescaleDB的CentOS7环境源码

关于RISC-V安全性的全面综述

目录摘要引言RISC-V安全综述通用平台的安全要求信任的根源与硬件安全模块OTP管理模块安全内存对称加密(如AES)引擎不对称加密[131](例如,公钥RSA)引擎HASH/HAMC引擎随机数/位生成(例如TRNG[136])引擎TrustedBootServicesRISC-V体系结构安全性的构建块RISC-V体系结

RISC-V Reader 笔记(六)RV32V

RV32V早期并行数据计算:采用SIMD单指令多数据,把一个64位宽寄存器拆成若干个32168位长度部分并行计算。这种方法前期看起来十分简单诱人。但是后来如果要扩展SIMD寄存器宽度,也要复杂化指令集,复杂开销越来越大。向量操作:把数据取出来放入长长的向量寄存器中,流水线并行运算后从向量寄存器中分别取回到内存。并且,时

构建高性能应用:Java与MongoDB的完美融合

AI绘画关于SD,MJ,GPT,SDXL百科全书面试题分享点我直达2023Python面试题2023最新面试合集链接2023大厂面试题PDF面试题PDF版本java、python面试题项目实战:AI文本OCR识别最佳实践AIGamma一键生成PPT工具直达链接玩转cloudStudio在线编码神器玩转GPUAI绘画、A

机器人如何有效采摘苹果?

摘要:本文利用动捕数据构建拟人运动模型,对比观察两种苹果采摘模式,并对系统性能进行全面评估,为提高机器人采摘效率提供创新方法。近期,一项关于苹果采摘机器人的有趣研究——"Designandevaluationofaroboticappleharvesterusingoptimizedpickingpatterns",在

C#网站代码防止漏洞和攻击 增强网站安全性方法

输入验证:永远不要信任用户提供的输入数据。始终对用户提交的数据进行验证和过滤,以防止恶意输入。使用正则表达式、白名单过滤或内置的.NET验证来验证输入。防止SQL注入:使用参数化查询或存储过程来执行数据库查询,而不是将用户输入直接嵌入SQL语句中。这可以有效防止SQL注入攻击。防止跨站脚本(XSS)攻击:始终对用户提交

SpringMVC之JSR303和拦截器

目录一.JSR3031.1.介绍1.2.为什么要使用JSR-3031.3.常用注解1.4.快速入门1.4.1.导入依赖1.4.2.配置校验规则1.4.3.编写方法校验1.4.4.测试二.拦截器2.1.什么是拦截器?2.2.拦截器与过滤器的区别2.3.拦截器的应用场景2.4.基础使用2.5.用户登录权限控制最后实战Spr

指针进阶笔试题

今天分享的是指针的笔试题,相信看完这篇文章对指针又会有深入的了解,让我们来学习吧。首先分享的是指针和数组的关系,我们都知道数组名是首元素的地址,那就让我们来看一下一维数组和指针的关系吧//一维数组inta[]={1,2,3,4};printf("%d\n",sizeof(a));printf("%d\n",sizeof

Java手写桶排序和算法案例拓展

Java手写桶排序和算法案例拓展1.算法思维导图解释实现思路原理#mermaid-svg-OFCWrsU78anzeD09{font-family:"trebuchetms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-OFCWrsU7

【Python】python -m pip install 和 pip install 的区别

文章目录一、pipinstall二、python-mpipinstall三、两者的总结一、pipinstall当你使用pipinstall命令时,你正在使用Python包管理器pip来安装Python包或模块。以下是关于pipinstall的详细理解:安装包:pipinstall<package>命令用于安装指定的Py

热文推荐