nc的用法

nc的用法

测试udp端口是否可用

如果是测试某个IP地址地址是否可以访问,通常会使用 ping 命令,执行之后如果可以到达就会得到数据反馈:

albert@home-pc:~$ ping 82.156.125.169
PING 82.156.125.169 (82.156.125.169) 56(84) bytes of data.
64 bytes from 82.156.125.169: icmp_seq=1 ttl=54 time=17.8 ms
64 bytes from 82.156.125.169: icmp_seq=2 ttl=54 time=39.9 ms
64 bytes from 82.156.125.169: icmp_seq=3 ttl=54 time=12.9 ms
64 bytes from 82.156.125.169: icmp_seq=4 ttl=54 time=6.81 ms
^C
--- 82.156.125.169 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3008ms
rtt min/avg/max/mdev = 6.816/19.397/39.961/12.502 ms

想要测试一个tcp端口是否可以访问,映入脑海的第一个命令应该是telnet,直接在IP后面加空格和端口就可以了:

albert@home-pc:~$ telnet 82.156.125.169 22
Trying 82.156.125.169...
Connected to 82.156.125.169.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.4

如果想测试UDP端口是否可达使用telnet就不行了,因为它是一种基于TCP的应用层协议,用来测试UDP端口会因为长时间没有反应而超时:

albert@home-pc:~$ telnet 82.156.125.169 666
Trying 82.156.125.169...
telnet: Unable to connect to remote host: Connection refused

这时用 nc 命令就可以解决了,命令格式为 nc -nvuz ip port

albert@home-pc:~$ nc -nvuz 82.156.125.169 666
Connection to 82.156.125.169 666 port [udp/*] succeeded!

端口扫描

这实际实际上是对上一个应用的扩展,使用 nc 命令可以指定一个端口范围,用来扫描多个端口是否可用:

albert@home-pc:~$ nc -nvz 82.156.125.169 20-24
nc: connect to 82.156.125.169 port 20 (tcp) failed: Connection refused
nc: connect to 82.156.125.169 port 21 (tcp) failed: Connection refused
Connection to 82.156.125.169 22 port [tcp/*] succeeded!
nc: connect to 82.156.125.169 port 23 (tcp) failed: Connection refused
nc: connect to 82.156.125.169 port 24 (tcp) failed: Connection refused

一对一聊天

使用 nc 命令可以监听一个端口作为服务器,然后在另一台机器上启动 nc 作为客户端发数据:

# 启动服务器
[root@VM-0-3-centos ~]# nc -l 1314
# 以下为接收到客户端发来的数据
12
client send msg


# 启动客户端
albert@home-pc:~$ nc 82.156.125.169 1314
# 以下为输入的数据
12
client send msg	
传输文件

这个用法是对上一种用法的扩展,通过重定向将文件内容通过网络传输:

# 服务端将socket内容保存到w文件中
[root@VM-0-3-centos ~]# nc -l 1314 > w.txt
albert@home-pc:~$ cat w.txt
w
-
r
x
d
# 客户端将w.txt文件内容发送给服务器
albert@home-pc:~$ nc 82.156.125.169 1314 < w.txt
albert@home-pc:~$

客户端运行完 nc 命令之后就会退出,服务器端的 nc 命令也会结束,w.txt 文件的内容就传送过去了。

端口转发

这其实也是传输数据的命令的一个变种,使用 -c 参数可以完成数据转发:

[root@VM-0-3-centos ~]# nc -l 520 -c "nc 82.156.125.169 1314"

执行命令之后,发送到本机 520 端口的数据就会被转发到 IP 为82.156.125.169的1314端口上了。

总结

nc -nvuz ip port 可以检测指定IP的UDP端口能否访问,如果是TCP端口去掉 -u 选项就可以了
nc -l port 可以启动一个本地服务器,接受发往指定端口的数据,并打印到控制台
nc -l port > filename 可以启动一个本地服务器,接受发往指定端口的数据,并保存到名为 filename 的文件中
nc -l port -c "nc ip new_port" 可以启动一个本地服务器,接受发往指定端口的数据,并转发到ip:new_port的机器上

相关推荐

  1. nc

    2024-01-08 10:46:02       36 阅读
  2. torch.nn.Parameter()

    2024-01-08 10:46:02       31 阅读
  3. QueryWrapper

    2024-01-08 10:46:02       15 阅读
  4. axios

    2024-01-08 10:46:02       12 阅读
  5. React <> </>

    2024-01-08 10:46:02       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-08 10:46:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-08 10:46:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-08 10:46:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-08 10:46:02       20 阅读

热门阅读

  1. Git常用命令diff和mv

    2024-01-08 10:46:02       33 阅读
  2. [Flutter]WindowsPlatform上运行遇到的问题总结

    2024-01-08 10:46:02       43 阅读
  3. Android 车联网——CarUserService介绍(十三)

    2024-01-08 10:46:02       29 阅读
  4. 随机森林(Random Forest)

    2024-01-08 10:46:02       40 阅读
  5. Elasticsearch8创建和使用Api-key

    2024-01-08 10:46:02       39 阅读
  6. 与指定数字相同的数的个数

    2024-01-08 10:46:02       36 阅读
  7. 聊聊jvm的mapped buffer的统计

    2024-01-08 10:46:02       38 阅读
  8. 动态规划(DP)---- 最长公共子序列

    2024-01-08 10:46:02       31 阅读
  9. Python实现观察者模式

    2024-01-08 10:46:02       34 阅读
  10. Qt中,信号与槽的原理及观察者模式的应用

    2024-01-08 10:46:02       26 阅读
  11. 企微群发宝:企业微信营销的新利器

    2024-01-08 10:46:02       42 阅读