NetCat的使用1

作者在 2006-11-13 20:20:00 发布以下内容
 HttpClient中反复提到用NetCAt进行调试,下载NetCat一看,确实如其所述的小巧而功能强大,如瑞士军刀。
  NetCat是一个非常简单的Unix工具,可以读、写TCP或UDP网络连接(network connection)。它被设计成一个可靠的后端(back-end)工具,能被其它的程序程序或脚本直接地或容易地驱动。同时,它又是一个功能丰富的网络调试和开发工具,因为它可以建立你可能用到的几乎任何类型的连接,以及一些非常有意思的内建功能。NetCat,它的实际可运行的名字叫nc,应该早很就被提供,就象另一个没有公开但是标准的Unix工具。
  GNU也有一个netcat项目,但此处学习的不是GNU的那个。

  最简单的使用方法,”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秒发送一行
  9. 以16进制显示传送或接收的数据
  10. 允许其它程序服务建立连接,可选
  11. 对Telnet应答,可选

编译NetCat
==========
  编译NetCat是非常简单的。检查一下Makefile,找到符合你的系统类型的SYSTYPE如何拼写,然后运行“make ”,然后可执行的nc就会出现了。如果没有合适的SYSTYPE,用”generic”试试。
  其Makefile中有dos, ultrix, sunos, solaris-static, solaris, aix, linux, irix, osf, freebsd, bsdi, netbsd, hpux, unixware, aux, next, generic等SYSTYPE,其中generic不算系统类型,则dos其实并不支持。在本文一开始的NetCat的链接页面中,也有一个Windows版本的NetCat,是另一个人做的移植。
  Linux的sys/time.h并不真正支持FD_SETSIZE的表示,编译时会有一个无害的警告。在一些系统中编译时,可能会与signal()有关的指针类型警告,但不影响编译结果。

开发NetCat的功能
===============
  NetCat小巧且功能强大,描述它的功能就是象描述瑞士军刀的功能一样。
  如果没有提供命令行参数,NetCat会提示你从标准输入来输入命令参数,然后NetCat会在内部解析输入。用这种办法输入命令式参数,可以用来防止借助“ps”来查看你的命令行参数。
  主机参数可以是一个名字或一个IP地址。如果-n出现,则它接受IP地址,而不再对计算机的名字或域名进行解析。如果没有-n,但加上-v,则NetCat可进行正/反向域名解析,并警告the all-too-common problem of mismatched name in DNS。这会耗费稍多一点时间,但在某些情况下会有用处。如,你想知道某个IP的主机名,NetCat可省却你手工查找的时间。
  要建立对外的连接,必须提供一个端口号,可以是个数字,也可以/etc/services列表中的端口服务名。当-n出现时,则只有数字形式的端口可以接收。
  -v参数,可以将一些关于连接建立信息输出

网络安全 | 阅读 1550 次
文章评论,共0条
游客请输入验证码
浏览114732次