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.129
的138
端口。
当你发送数据后,你之前监听的nc会话应该能接收到这些数据,并在命令行中显示出来。
同样地,你也可以在nc会话中向外部主机发送数据。例如,你可以在nc会话中输入“Hello, World!”并按回车键,这将向与你nc会话连接的任何主机发送这个字符
下图坐左边显示是接收端,将消息“duzhongbo”发送到IP的138端口上,右边一直在监听138这个端口,一旦消息发过来便会立即接收。
通过在一个终端上监听某端口号:nc -l port
然后在另一个终端上连接该端口号: nc IP Port
总结:其实对于nc指令的用法来讲就是连个,一是进行端口扫描检查,二是利用其建立不同终端见的通信