2024年4月27日发(作者:)

NetCat的使用

NetCat是一个非常简单的Unix工具,可以读、写TCP或UDP网络连接(network

connection)。它被设计成一个可靠的后端(back-end)工具,能被其它的程序程序或脚本

直接地或容易地驱动。同时,它又是一个功能丰富的网络调试和开发工具,因为它可以建

立你可能用到的几乎任何类型的连接,以及一些非常有意思的内建功能。NetCat,它的实

际可运行的名字叫nc,应该早很就被提供,就象另一个没有公开但是标准的Unix工具。

最简单的使用方法,”nc host port”,能建立一个TCP连接,连向指定的主机和端口。

接下来,你的从标准输入中输入的任何内容都会被发送到指定的主机,任何通过连接返回

来的信息都被显示在你的标准输出上。这个连接会一直持续下去,至到连接两端的程序关

闭连接。注意,这种行为不同于大多数网络程序,它们会在从标准输入读到一个文件结束

符后退出。

NetCat还可以当服务器使用,监听任意指定端口的连接请求(inbound connection),

并可做同样的读写操作。除了较小限制外,它实际并不关心自己以“客户端”模式还是“服

务器”模式运行,它都会来回运送全部数据。在任何一种模式下,都可以设置一个非活动

时间来强行关闭连接。

它还可以通过UDP来完成这些功能,因此它就象一个telnet那样的UDP程序,用来

测试你的UDP服务器。正如它的“U”所指的,UDP跟TCP相比是一种不可靠的数据传

输,一些系统在使用UDP传送大量数据时会遇到麻烦,但它还有一些用途。

你可能会问“为什么不用telnet来连接任意的端口”?问题提得好(valid),这儿有一

些理由。Telnet有“标准输入文件结束符(standard input EOF)”问题,所以需要在脚本

中延迟计算以便等待网络输出结束。这就是netcat持续运行直到连接被关闭的主要原因。

Telnet也不能传输任意的二进制数据,因为一些特定的字符会被解释为Telnet的参数而被

从数据流中去除。Telnet还将它的一些诊断信息显示到标准输出上,而NetCat会将这信

息与它的输出分开以不改变真实数据的传输,除非你要求它这么做。当然了,Telnet也不

能监听端口,也不能使用UDP。NetCat没有这些限制,比Telnet更小巧和快捷,而且还

有一些其它的功能。

NetCat的一些主要功能:

1. 支持连出和连入(outbound and inbound connection),TCP和UDP,任意源和

目的端口

2. 全部DNS正向/反向检查,给出恰当的警告

3. 使用任何源端口

4. 使用任何本地设置的网络资源地址

5. 内建端口扫描功能,带有随机数发生器

6. 内建loose source-routing功能

7. 可能标准输入读取命令行参数

8. 慢发送模式,每N秒发送一行