1. nc命令
nc
命令和网络通信有关,nc
之间可以通信,也可以和其它网络工具通信,可以使用nc -h
查看帮助。Window下也可以下载或源码编译nc.exe
,参考https://github.com/int0x33/nc.exe/。
-l
监听模式,即服务端。-p
指定监听的端口。-n
后面参数解释为IP,不是域名。-u
UDP模式,默认为TCP协议。
2. 命令行数据传输
服务端
nc -l -p 10000
- 开启监听后,等待客户端连接,当第一个客户端连接成功后,
nc
将不再监听,也即监听端口被释放了,可以换个窗口使用nc -l -p 10000
验证。- 建立连接前,用户输入的数据会被缓存(输入回车才会真正缓存)。
- 建立连接后,会直接将缓存数据发送给客户端。
- 建立连接后,用户输入的数据(使用回车键结束),会被发送给客户端,包含换行符。
- 建立连接后,客户端的数据会直接显示到屏幕。
- 客户端关闭后,
nc
程序将退出。
客户端
nc -n 192.168.1.100 10000
- 若连接失败,直接退出,返回1。
- 连接成功,用户输入的数据(使用回车键结束),会被发送给服务端,包含换行符。
- 建立连接后,服务端的数据会直接显示到屏幕。
- 服务端关闭后,
nc
程序将退出。
3. 文件传输
不论文本还是二进制文件都可以使用管道和重定向符号,可以实现使用nc
来发送和接收文件。无论是服务端发文件,还是客户端发文件,文件发送完毕,nc
即退出,相应的接收端也会退出。
3.1 服务端向客户端发送文件
服务端
cat aa.txt | nc -l -p 10000 或 nc -l -p 10000 < aa.txt
客户端
nc -n 192.168.1.100 10000 > aa.txt
3.2 客户端向服务端发送文件
服务端
nc -l -p 10000 > aa.txt
客户端
cat aa.txt | nc -n 192.168.1.100 10000 或 nc -n 192.168.1.100 10000 < aa.txt
4. 数据转发
nc
命令可以使用管道连接起来,实现数据转发的效果。转发端
可以是两个服务端
,也可以是两个客户端
,或者是混合,但用户需保证,必须先创建服务端
才能连接对应的客户端
。
4.1 单向数据中转
中转端(先执行)
nc -l -p 10000 | nc -l -p 10001
客户端1(发送数据或文件)
nc -n 192.168.1.100 10000 或 cat 1.txt | nc -n 192.168.1.10000
客户端2(接收数据或文件)
nc -n 192.168.1.100 10001 或 nc -n 192.168.1.10001 > 2.txt
4.2 双向数据转发
下面的环境中,在客户端1输入的数据会在客户端2
上显示,在客户端2
上输入的数据会在客户端1
上显示。数据都是先抵达中转端
,然后通过管道重定向数据。
客户端1(先执行)
nc -l -p 10000
中转端
mkfifo a.fifo cat a.fifo | nc -n 192.168.1.100 10000 | nc -l -p 10001 > a.fifo
客户端2
nc -n 192.168.1.100 10001