netcat

Table of Contents

1 nc简介

Netcat (often abbreviated to nc) is a computer networking service for reading from and writing to network connections using TCP or UDP.

The original version of netcat was a Unix program. The last version (1.10) was released in March 1996.
There are several implementations on POSIX systems, including rewrites from scratch like GNU netcat or OpenBSD netcat.

说明:nc的语法在不同的系统中可能有所不同,请仔细查阅man文档。

2 nc基本用法

nc的基本用法为:

nc [options] host port

默认nc使用TCP协议连接到指定的主机和端口。

2.1 使用UDP (-u)

如果要使用UDP协议,则可以指定 -u 选项。

nc -u host port

2.2 实例:retrieve the home page of a web site

如何得到网站的主页?

$ nc host.example.com 80
GET / HTTP/1.0


说明:按照HTTP协议要求,在"GET / HTTP/1.0"后面要输入两个换行。

也可以用下面的方法:

$ printf "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80

2.3 Port Scanning (-z)

可以用 -z 来进行端口扫描。如:

$ nc -z -v 127.0.0.1 1-1000
localhost [127.0.0.1] 631 (ipp) open
localhost [127.0.0.1] 111 (sunrpc) open
localhost [127.0.0.1] 25 (smtp) open
localhost [127.0.0.1] 22 (ssh) open

说明1: -v 为verbose模式。
说明2: 对UDP的端口扫描总会显示成功,所以 -z -u 一起使用没有用处。

2.4 Listen for connection (-l)

-l 可以使nc监听在某个端口,等待连接。

在终端1中,使nc监听在4444端口,等待连接。

$ nc -l 4444

打开另一个终端2,连接到端口4444。

$ nc localhost 4444

这时,两个终端可以相互通信了,输入文本后按回车即可把消息发送到对方。

2.4.1 实例:在两台电脑间传送文件

要把电脑A中的文件backup.iso传送到电脑B中。
可以在电脑A中运行下面命令:

$ cat backup.iso | nc -l 4444

在电脑B中运行下面命令即可得到电脑A(假设其IP为192.168.0.2)中的文件backup.iso:

$ nc 192.168.0.2 4444 > backup.iso

Author: cig01

Created: <2011-04-03 Sun 00:00>

Last updated: <2016-09-06 Tue 22:49>

Creator: Emacs 25.1.1 (Org mode 9.0.7)