nc - arbitrary TCP and UDP connections and listens 对任意TCP、UDP的连接与监听
参数说明:更多详细的信息可以参考man nc页面
[root@rhel6164 ~]# nc -h
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]
[-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version]
[-x proxy_address[:port]] [hostname] [port[s]]
Command Summary:
-4 Use IPv4
-6 Use IPv6
-D Enable the debug socket option
-d Detach from stdin
-h This help text
-i secs Delay interval for lines sent, ports scanned
-k Keep inbound sockets open for multiple connects
-l Listen mode, for inbound connects
-n Suppress name/port resolutions
-p port Specify local port for remote connects
-r Randomize remote ports
-S Enable the TCP MD5 signature option
-s addr Local source address
-T ToS Set IP Type of Service
-C Send CRLF as line-ending
-t Answer TELNET negotiation
-U Use UNIX domain socket
-u UDP mode
-v Verbose
-w secs Timeout for connects and final net reads
-X proto Proxy protocol: "4", "5" (SOCKS) or "connect"
-x addr[:port] Specify proxy address and port
-z Zero-I/O mode [used for scanning]
Port numbers can be individual or ranges: lo-hi [inclusive]
例子:
建立简单的服务器端/客服端进行基本的通信
[root@rhel6164 ~]# nc -l 1234 #打开并监听1234端口,等待客户端过来连接,没有权限要求,一般权限的账户也可以
[root@rhel6164 ~]# nc localhost 1234 #在另一个session里面,连接本机的1234端口,然后两个session就可以通信了
数据传输
$ nc -l 1234 > filename.out #使用1234端口来进行文件的传输,filename.out可以将远文件进行重命名,注意,1234要与后面的重定向符中间要后空格,不然就会把1234当成文件描述符
$ nc host.example.com 1234 < filename.in #host.example.com就是上面的主机名,filename.in就是要传输的文件
端口扫描
$ nc -z host.example.com 20-30
Connection to host.example.com 22 port [tcp/ssh] succeeded!
Connection to host.example.com 25 port [tcp/smtp] succeeded!