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的机器上

相关推荐
东皋长歌11 天前
netcat工具安装和使用
socket·nc·netcat
我是个假程序员1 个月前
NC65 portal端不适用单据模板,根据页面某个字段值的改变动态设置某些字段是否可编辑,是否必填以及表体行增加、行确认
nc
我是个假程序员1 年前
NC人力做人员离退休事件时,提示该人员有借款未还等错误
nc
我是个假程序员1 年前
NC65 树表型参照 搜索全部 按钮点击事件后获取sql的方法
nc