实用的 Linux Netcat NC 命令示例
Netcat 或 nc 是用于调试和调查网络的网络实用程序。
此实用程序可用于创建 TCP/UDP 连接并对其进行调查。这个实用程序的最大用途是在我们需要处理 TCP/UDP 套接字的脚本中。
在本文中,我们将通过一些实际示例来了解 netcat 命令。
1. 服务器-客户端架构中的 Netcat
netcat 实用程序可以在服务器模式下在指定端口上运行,以侦听传入连接。
$ nc -l 2389
此外,它可以在客户端模式下尝试连接刚刚打开的端口(2389)
$ nc localhost 2389
现在,如果我们在客户端写一些文本,它会到达服务器端。这是证明:
$ nc localhost 2389
HI, server
在服务器运行的终端上:
$ nc -l 2389
HI, server
因此我们看到 netcat 实用程序可以用于客户端服务器套接字通信。
2.使用Netcat传输文件
netcat 实用程序也可用于传输文件。在客户端,假设我们有一个名为“testfile”的文件,其中包含:
$ cat testfile
hello test
在服务器端,我们有一个空文件“测试”
现在,我们将服务器运行为:
$ nc -l 2389 > test
并将客户端运行为:
cat testfile | nc localhost 2389
现在,当我们在服务器端看到“测试”文件时,我们看到:
$ cat test
hello test
所以我们看到文件数据是从客户端传输到服务器的。
3. Netcat 支持超时
在某些情况下,我们不希望连接永远保持打开状态。在这种情况下,通过“-w”开关,我们可以指定连接的超时时间。因此,在与 -w 标志一起指定的秒数之后,客户端和服务器之间的连接将终止。
服务器 :
nc -l 2389
客户 :
$ nc -w 10 localhost 2389
上面的连接将在 10 秒后终止。
注意:不要在服务器端使用 -w 标志和 -l 标志,因为在这种情况下 -w 标志不起作用,因此连接永远保持打开状态。
4. Netcat 支持 IPV6 连接
标志 -4 或 -6 指定 netcat 实用程序应使用哪种类型的地址。-4 强制 nc 使用 IPV4 地址,而 -6 强制 nc 使用 IPV6 地址。
服务器 :
$ nc -4 -l 2389
客户 :
$ nc -4 localhost 2389
现在,如果我们运行 netstat 命令,我们会看到:
$ netstat | grep 2389
tcp 0 0 localhost:2389 localhost:50851 ESTABLISHED
tcp 0 0 localhost:50851 localhost:2389 ESTABLISHED
上面输出中的第一个字段将包含后缀“6”,以防使用 IPV6 地址。因为在这种情况下它不是,所以服务器和客户端之间的连接是使用 IPV4 地址建立的。
现在,如果我们强制 nc 使用 IPV6 地址
服务器 :
$ nc -6 -l 2389
客户 :
$ nc -6 localhost 2389
现在,如果我们运行 netstat 命令,我们会看到:
$ netstat | grep 2389
tcp6 0 0 localhost:2389 localhost:33234 ESTABLISHED
tcp6 0 0 localhost:33234 localhost:2389 ESTABLISHED
所以现在带有 'tcp' 的后缀 '6' 表明 nc 现在正在使用 IPV6 地址。
5. 在 Netcat 中禁用从 STDIN 读取
此功能可以通过使用标志 -d 来实现。在以下示例中,我们在客户端使用了此标志。
服务器 :
$ nc -l 2389
客户 :
$ nc -d localhost 2389
Hi
文本 'Hi' 不会发送到服务器端,因为使用 -d 选项已禁用从标准输入读取。
6.强制Netcat服务器保持正常
如果 netcat 客户端连接到服务器,然后在一段时间后客户端断开连接,则通常 netcat 服务器也会终止。
服务器 :
$ nc -l 2389
客户 :
$ nc localhost 2389
^C
服务器 :
$ nc -l 2389
$
因此,在上面的示例中,我们看到一旦客户端断开连接,服务器也被终止。
这种行为可以通过在服务器端使用 -k 标志来控制,以强制服务器即使在客户端断开连接后也保持运行。
服务器 :
$ nc -k -l 2389
客户 :
$ nc localhost 2389
^C
服务器 :
$ nc -k -l 2389
所以我们看到,通过使用 -k 选项,即使客户端断开连接,服务器也会保持运行。
7.配置Netcat客户端在EOF后保持休眠
Netcat 客户端可以配置为在收到 EOF 后保持休眠。在正常情况下,如果 nc 客户端收到 EOF 字符,则它会立即终止,但如果使用 -q 标志,也可以控制此行为。此标志需要一个数字,该数字描述在客户端终止之前等待的秒数(在收到 EOF 之后)
客户端应该像这样启动:
nc -q 5 localhost 2389
现在,如果客户端收到 EOF,那么它将等待 5 秒后终止。
8. 使用带有 UDP 协议的 Netcat
默认情况下,nc 实用程序创建的所有套接字都是 TCP 协议,但此实用程序也适用于 UDP 协议。要启用 UDP 协议,使用 -u 标志。
服务器 :
$ nc -4 -u -l 2389
客户 :
$ nc -4 -u localhost 2389
现在,服务器和客户端都配置为使用 UDP 协议。这可以通过以下 netstat 命令来确认。所以我们看到这个连接现在使用的是UDP协议。
$ netstat | grep 2389
udp 0 0 localhost:42634 localhost:2389 ESTABLISHED
- 点赞
- 收藏
- 关注作者
评论(0)