nc命令的学习

通过nc命令,可以打开tcp连接、发送udp包或监听任意的tcp端口、进行端口扫描。

常见选项:
-4:强制只使用IPv4
-6:强制只使用IPv6
-D:开启debug
-d:不从stdin中读取信息
-i interval:指定text文件的发送和接收的时间间隔。同时也指定多个port之间的连接时间间隔
-k:要求nc在一个连接完成后等待另一个连接而不是直接关闭
-l:用于指定nc需要监听某个端口
-n:用于指定不进行DNS解析
-p source_port:用于指定nc监听的源端口
-r:用于指定源或目的端口是随机取的
-S:允许使用RFC 2385 TCP MD5签名
-s source_ip_address:用于指定发送数据包的IP地址
-T Tos:用于指定连接的ToS
-C:发送CRLF左右行的结尾
-U:自定Unix Domain Sockets
-u:使用UDP而不是默认的TCP
-v:输出更加详细的信息
-w timeout:指定连接超时时间。比如一个连接连上来后timeout指定的时间里没有操作就可以超时断开。对对-l的监听没有用。
-X proxy_version:指定proxy的版本。可以使socks v4/socks v5和https代理。
-x proxy_address[:port]:指定代理服务器的地址
-z:指定nc只是扫描监听的后台进程,而不发送任何的数据给这些监听中的进程

例子:
1.最简单的客户机服务器模式
在主机A上发起监听:

[root@COMPUTE01 ~]#  nc -l 1234

在主机B上进行连接:

[root@COMPUTE02 ~]#  nc 192.168.19.96 1234

然后在两个窗口中任意一个窗口的输出都能在另一个窗口中接收到。如果要结束的话输入ctrl+D
2.数据传输
其实就是使用了上面的例子,不过这里的输入是从文件输入,而输出是从文件输出:
在主机A上发起监听,并重定向输出:

[root@COMPUTE01 ~]#  nc -l 1234 > filename.out

在主机B上进行连接,并重定向输入:

[root@COMPUTE02 ~]#  nc 192.168.19.96 1234 < filename.in

3.发送HTTP请求
比如通过下面这个管道的例子:

[root@COMPUTE02 ~]#  echo -n "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80

4.端口检测
nc可以进行端口检测,比如下面的例子检测一台主机的20~100的端口中有几个是开着的(记得用-w加个超时时间):

[root@COMPUTE02 ~]# nc -z 192.168.19.96 20-100 -w 5
Connection to 192.168.19.96 22 port [tcp/ssh] succeeded!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*