2021-08-04 nc

nc基本使用

  nc(netcat)命令短小精干、功能强大,有着“瑞士军刀”的美誉。它主要被用来快速构建网络连接。我们可以让它以服务器方式运行,监听某个端口并接受客户连接,因此它可用来调试客户端程序。我们也可以使之以客户端方式运行,向服务器发起连接并接受发数据,因此它可以用来调试服务器程序,此时它有点像telnet程序。

  nc命令常用来的选项包括:

  • -i,设置数据包传送的时间间隔。
  • -l,以服务器方式运行,监听指定的端口。nc命令默认以服务器方式运行。
  • -k,重复接受并处理某个端口上的所有连接,必须与-l选项一起使用。
  • -n,使用IP地址表示主机,而不是主机名;使用数字表示端口号,而不是服务名称。
  • -p,当nc命令以客户端方式运行时,强制其使用指定的端口号。
  • -s,设置本地主机发送出的数据包的IP地址。
  • -C,将CR和LF两个字符作为行结束符。
  • -U,使用UNIX本地域协议通信。
  • -u,使用UDP协议。nc命令默认使用传输层协议是TCP。
  • -w,如果nc哭护短在指定的时间内未检测到任何输入,则退出。
  • -x,指定目标代理服务器的IP地址和端口号。
  • -z,扫描目标机器上的某个或某些服务是否开启(端口扫描)。比如,要扫描机器ernest-laptop上端口号在20~50之间的服务,可以使用如下命令:
$ nc -z ernest-laptop 20-50

  举例来说,我们可以使用如下方式来连接websrv服务器并向它发送数据:

$ nc -C 127.0.0.1 13579(服务器监听端口13579)
GET http://localhost/a.html HTTP/1.1(回车)
Host:localhost(回车)
(回车)
HTTP/1.1 404 Not Found
Content-Length: 49
Connection: close

The requested file was not found on this server.

  这里我们使用了-C选项,这样每次我们按下回车键向服务器发送一行数据时,nc客户端程序都会给服务器额外发送一个,而这正是websrv服务器期望的HTTP行结束符。发送完第三行数据之后,我们得到了服务器的响应,内容正是我们期望的:服务器没有找到被请求的资源文件a.html。可见,nc命令是一个很方便的快速测试工具,通过它我们能很快找出服务器的逻辑错误。

上一篇:查看linux服务状态


下一篇:【NC】单表档案参照