FreeBSD 中文社区 2025 第二季度问卷调查
FreeBSD 中文社区(CFC)
VitePress 镜像站QQ 群 787969044视频教程Ⅰ视频教程Ⅱ
  • FreeBSD 从入门到追忆
  • 中文期刊
  • 状态报告
  • 发行说明
  • 手册
  • 网络文章集锦
  • 笔记本支持报告
  • Port 开发者手册
  • 架构手册
  • 开发者手册
  • 中文 man 手册
  • 文章
  • 书籍
  • man
  • man1
    • Mail.1
    • addr2line.1
    • alias.1
    • alloc.1
    • apply.1
    • apropos.1
    • ar.1
    • at.1
    • atq.1
    • atrm.1
    • awk.1
    • basename.1
    • batch.1
    • bc.1
    • bg.1
    • bind.1
    • bindkey.1
    • break.1
    • breaksw.1
    • bsdcat.1
    • bsdtar.1
    • btsockstat.1
    • builtin.1
    • builtins.1
    • c++.1
    • case.1
    • cat.1
    • cc.1
    • chdir.1
    • chfn.1
    • chgrp.1
    • chkey.1
    • chmod.1
    • cksum.1
    • clang++.1
    • clang-cpp.1
    • cmp.1
    • colrm.1
    • column.1
    • comm.1
    • command.1
    • complete.1
    • continue.1
    • cp.1
    • cpp.1
    • crypt.1
    • csh.1
    • ctfdump.1
    • cut.1
    • date.1
    • dd.1
    • default.1
    • df.1
    • dialog.1
    • diff.1
    • diff3.1
    • dirname.1
    • dirs.1
    • do.1
    • done.1
    • dtrace.1
    • du.1
    • echo.1
    • echotc.1
    • edit.1
    • ee.1
    • egrep.1
    • elfdump.1
    • elif.1
    • else.1
    • end.1
    • endif.1
    • endsw.1
    • enigma.1
    • env.1
    • esac.1
    • eval.1
    • exec.1
    • exit.1
    • export.1
    • fc.1
    • fg.1
    • fgrep.1
    • fi.1
    • filetest.1
    • find.1
    • for.1
    • foreach.1
    • fsync.1
    • ftp.1
    • fuser.1
    • gate-ftp.1
    • getopts.1
    • glob.1
    • goto.1
    • grep.1
    • groups.1
    • gunzip.1
    • gzcat.1
    • gzip.1
    • hash.1
    • hashstat.1
    • head.1
    • history.1
    • host.1
    • hostname.1
    • hup.1
    • ibv_asyncwatch.1
    • ibv_devices.1
    • ibv_devinfo.1
    • ibv_ud_pingpong.1
    • id.1
    • ident.1
    • if.1
    • intro.1
    • introduction.1
    • jobid.1
    • jobs.1
    • kdump.1
    • kenv.1
    • keylogin.1
    • keylogout.1
    • kill.1
    • killall.1
    • ktrace.1
    • last.1
    • lastcomm.1
    • ld.1
    • ld.lld.1
    • ldd.1
    • ldd32.1
    • less.1
    • lessecho.1
    • limit.1
    • limits.1
    • link.1
    • llvm-addr2line.1
    • llvm-ranlib.1
    • ln.1
    • locate.1
    • lockstat.1
    • log.1
    • logger.1
    • login.1
    • logname.1
    • logout.1
    • look.1
    • lorder.1
    • ls-F.1
    • ls.1
    • lsvfs.1
    • lzcat.1
    • lzma.1
    • lzmadec.1
    • lzmainfo.1
    • mailx.1
    • make.1
    • man.1
    • mandoc.1
    • manpath.1
    • md5.1
    • mdocml.1
    • mkdir.1
    • mkfilters.1
    • more.1
    • mv.1
    • nawk.1
    • nc.1
    • netstat.1
    • newaliases.1
    • nice.1
    • notify.1
    • onintr.1
    • pagesize.1
    • passwd.1
    • paste.1
    • pax.1
    • perror.1
    • pftp.1
    • popd.1
    • printenv.1
    • ps.1
    • pushd.1
    • pwd.1
    • qemu.1
    • ranlib.1
    • read.1
    • readelf.1
    • readlink.1
    • readonly.1
    • realpath.1
    • ree.1
    • rehash.1
    • repeat.1
    • rev.1
    • revoke.1
    • rgrep.1
    • rm.1
    • rmd16.1
    • rmdir.1
    • rping.1
    • ruptime.1
    • rwho.1
    • sched.1
    • scp.1
    • sdiff.1
    • sed.1
    • seq.1
    • set.1
    • setenv.1
    • settc.1
    • setty.1
    • setvar.1
    • sftp.1
    • sh.1
    • sha1.1
    • sha224.1
    • sha256.1
    • sha384.1
    • sha512.1
    • sha512t256.1
    • shift.1
    • skein1024.1
    • skein256.1
    • skein512.1
    • slogin.1
    • sockstat.1
    • sort.1
    • source.1
    • split.1
    • ssh-copy-id.1
    • ssh-keygen.1
    • ssh.1
    • stat.1
    • stop.1
    • su.1
    • suspend.1
    • svnlite.1
    • switch.1
    • systat.1
    • tail.1
    • tar.1
    • tcpdump.1
    • tcsh.1
    • telltc.1
    • telnet.1
    • then.1
    • time.1
    • timeout.1
    • times.1
    • top.1
    • touch.1
    • trap.1
    • truncate.1
    • truss.1
    • type.1
    • ulimit.1
    • umask.1
    • unalias.1
    • uname.1
    • uncomplete.1
    • unhash.1
    • uniq.1
    • unlimit.1
    • unlink.1
    • unlzma.1
    • unset.1
    • unsetenv.1
    • until.1
    • unxz.1
    • uptime.1
    • users.1
    • uuidgen.1
    • view.1
    • w.1
    • wait.1
    • wall.1
    • wc.1
    • whatis.1
    • where.1
    • whereis.1
    • which.1
    • while.1
    • who.1
    • whoami.1
    • xargs.1
    • xz.1
    • xzcat.1
    • xzdec.1
    • xzdiff.1
    • yes.1
    • yppasswd.1
    • zcat.1
    • zcmp.1
    • zdiff.1
    • zforce.1
    • zless.1
    • zmore.1
    • znew.1
  • man4
    • ow.4
    • ow_temp.4
    • owc.4
  • man5
    • device.hints.5
  • man7
    • hire
  • man8
    • adduser.8
    • authpf-noip.8
    • authpf.8
    • autounmountd.8
    • beastie.4th.8
    • bhyve.8
    • bhyvectl.8
    • bhyveload.8
    • blacklistctl.8
    • boot.8
    • boot0cfg.8
    • boot_i386.8
    • bsdconfig.8
    • camcontrol.8
    • check-password.4th.8
    • chown.8
    • chroot.8
    • config.8
    • crash.8
    • crashinfo.8
    • devctl.8
    • devinfo.8
    • devmatch.8
    • diskinfo.8
    • dmesg.8
    • fastboot.8
    • fasthalt.8
    • freebsd-update.8
    • fstyp.8
    • ftp-proxy.8
    • ftpd.8
    • gpart.8
    • gpioctl.8
    • gptboot.8
    • gptzfsboot.8
    • growfs.8
    • halt.8
    • i2c.8
    • ifconfig.8
    • inetd.8
    • init.8
    • intro.8
    • iostat.8
    • ipfw.8
    • jail.8
    • jexec.8
    • jls.8
    • kldconfig.8
    • kldload.8
    • kldstat.8
    • kldunload.8
    • kldxref.8
    • lastlogin.8
    • loader.4th.8
    • loader.8
    • loader.efi.8
    • mail.local.8
    • mailstats.8
    • menu.4th.8
    • mount.8
    • mount_cd9660.8
    • mount_msdosfs.8
    • moused.8
    • mtree.8
    • natd.8
    • nmtree.8
    • ntptime.8
    • password.lua.8
    • periodic.8
    • ping.8
    • pkg.8
    • pmccontrol.8
    • pmcstat.8
    • powerd.8
    • poweroff.8
    • pw.8
    • pwm.8
    • quot.8
    • rarpd.8
    • rc.8
    • rc.d.8
    • rc.firewall.8
    • rc.local.8
    • rc.network.8
    • rc.pccard.8
    • rc.resume.8
    • rc.serial.8
    • rc.shutdown.8
    • rc.subr.8
    • rcorder.8
    • reboot.8
    • renice.8
    • rescue.8
    • rmuser.8
    • route.8
    • route6d.8
    • routed.8
    • rpc.rusersd.8
    • service.8
    • shutdown.8
    • spi.8
    • ssh-keysign.8
    • sysctl.8
    • sysrc.8
    • tcpdrop.8
    • tftpd.8
    • tzsetup.8
    • umount.8
    • vmstat.8
    • watchdog.8
    • watchdogd.8
    • zfs.8
由 GitBook 提供支持
LogoLogo

FreeBSD 中文社区(CFC) 2025

在本页
  • 名称
  • 概要
  • 描述
  • 客户端/服务器模型
  • 数据传输
  • 与服务器交谈
  • 端口扫描
  • 实例
  • 退出状态
  • 参见
  • 作者
  • 注意事项
在GitHub上编辑
导出为 PDF
  1. man1

nc.1

上一页nawk.1下一页netstat.1

最后更新于1年前

NC(1)

NC(1)

FreeBSD General Commands Manual

NC(1)

nc —

任意 TCP 和 UDP 连接和监听

nc [-46DdEFhklMNnrStUuvz] [-e IPsec_policy] [-I length] [-i interval] [--no-tcpopt] [--sctp] [-O length] [-P proxy_username] [-p source_port] [-s source] [-T toskeyword] [-V rtable] [-w timeout] [-X proxy_protocol] [-x proxy_address[:port]] [destination] [port]

nc (或 netcat) 实用程序几乎用于任何涉及 TCP、UDP 或 UNIX-domain 套接字的事情。 它可以打开 TCP 连接、发送 UDP 数据包、侦听任意 TCP 和 UDP 端口、进行端口扫描以及处理 IPv4 和 IPv6。 与 telnet(1) 不同 nc 可以很好地编写脚本,并将错误消息分离到标准错误中,而不是像 telnet(1) 那样将它们发送到标准输出。

常见用途包括:

  • 简单的 TCP 代理

  • 基于 shell 脚本的 HTTP 客户端和服务器

  • 网络守护进程测试

  • 用于 ssh(1) 的 SOCKS 或 HTTP ProxyCommand

  • 还有很多很多

选项如下:

强制 nc 仅使用 IPv4 地址。

强制 nc 仅使用 IPv6 地址。

在套接字上启用调试。

不要尝试从标准输入读取。

“-e 'in ipsec esp/transport//require' -e 'out ipsec esp/transport//require'” 的快捷方式,可在两个方向启用 IPsec ESP 传输模式。

如果 IPsec 支持可用,则可以使用 ipsec_set_policy(3) 中描述的语法指定要使用的 IPsec 策略。 该标志最多可以指定两次,因为通常每个方向都需要一个策略。

使用 sendmsg(2) 将第一个连接的套接字传递到标准输出并退出。 这与 -X 一起使用非常有用,可以让 nc 使用代理执行连接设置,然后将其余连接留给另一个程序(例如,使用 ssh_config(5) ProxyUseFdpass 选项的 ssh(1) )。

打印出 nc 帮助。

指定 TCP 接收缓冲区的大小。

指定发送和接收的文本行之间的延迟时间间隔。 还会导致连接到多个端口之间的延迟时间。

强制 nc 在其当前连接完成后继续侦听另一个连接。 在没有 -l 选项的情况下使用此选项是错误的。 与 -u 选项一起使用时,服务器套接字不连接,它可以接收来自多个主机的 UDP 数据报。

用于指定 nc 应侦听传入连接而不是启动与远程主机的连接。 将此选项与 -p, -s 或 -z 选项结合使用是错误的。 此外,使用 -w 选项指定的任何超时都将被忽略。

使用 stats(3) 框架收集每个连接的 TCP 统计信息,并在连接关闭后以 JSON 格式将它们打印到 stderr(4) 。

shutdown(2) 输入 EOF 后的网络套接字。 一些服务器需要这个来完成他们的工作。

不要对任何指定的地址、主机名或端口进行任何 DNS 或服务查找。

通过设置布尔 TCP_NOOPT 套接字选项来禁用套接字上的 TCP 选项。

使用 SCTP 代替 TCP 的默认选项。

指定 TCP 发送缓冲区的大小。

指定要呈现给需要身份验证的代理服务器的用户名。 如果未指定用户名,则不会尝试身份验证。 目前仅 HTTP CONNECT 代理支持代理身份验证。

指定 nc 应使用的源端口,受权限限制和可用性限制。 将此选项与 -l 选项结合使用是错误的。

指定应随机选择源和/或目标端口,而不是在一个范围内或按系统分配它们的顺序顺序选择。

启用 RFC 2385 TCP MD5 签名选项。

指定用于发送数据包的接口的 IP。 对于 UNIX-domain 域数据报套接字,指定要创建和使用的本地临时套接字文件,以便可以接收数据报。 将此选项与 -l 选项结合使用是错误的。

更改 IPv4 TOS 值。 toskeyword 可以是 critical, inetcontrol, lowdelay, netcontrol, throughput, reliability, 或 DiffServ 代码点之一: ef, af11 ... af43, cs0 ... cs7; 或十六进制或十进制的数字。

导致 nc 向 RFC 854 DO 和 WILL 请求发送 RFC 854 DON'T 和 WON'T 响应。 这使得使用 nc 编写 telnet 会话脚本成为可能。

指定使用 UNIX-domain 套接字。

使用 UDP 而不是 TCP 的默认选项。 对于 UNIX-domain 套接字,使用数据报套接字而不是流套接字。 如果使用 UNIX-domain 套接字,则在 /tmp 中创建一个临时接收套接字,除非给出 -s 标志。

设置要使用的路由表 (“FIB”) 。

让 nc 给出更详细的输出。

timeout 秒后无法建立或空闲超时的连接。 -w 标志对 -l 选项没有影响,即 nc 将永远监听连接,无论有无 -w 标志。默认为无超时。

请求 nc 在与代理服务器通信时应使用指定的协议。 支持的协议是 “4” (SOCKS v.4), “5” (SOCKS v.5) 和 “connect” (HTTPS 代理)。 如果未指定协议,则使用 SOCKS 版本 5。

请求 nc 应使用 proxy_address 和 port 处的代理连接到 destination 。 如果未指定 port ,则使用代理协议的知名端口(SOCKS 为 1080,HTTPS 为 3128)。

指定 nc 应该只扫描监听守护进程,而不向它们发送任何数据。 将此选项与 -l 选项结合使用是错误的。

destination 可以是数字 IP 地址或符号主机名(除非给出 -n 选项)。 通常,必须指定目的地,除非给出 -l 选项(在这种情况下使用本地主机)。 对于 UNIX-domain 套接字,目标是必需的,并且是要连接到的套接字路径(或者如果给出 -l 选项则侦听)。

port 可以是单个整数或端口范围。范围的格式为 nn-mm。 通常,必须指定目标端口,除非给出 -U 选项。

使用 nc 构建一个非常基本的客户端/服务器模型非常简单。 在一个控制台上,启动 nc 在特定端口上侦听连接。 例如:

$ nc -l 1234

nc 现在正在端口 1234 上侦听连接。 在第二个控制台 (或第二台机器) 上,连接到正在监听的机器和端口:

$ nc 127.0.0.1 1234

现在应该在端口之间建立连接。 在第二个控制台输入的任何内容都将连接到第一个控制台,反之亦然。 建立连接后, nc 并不真正关心哪一侧被用作 ‘server’ 以及哪一侧被用作 ‘client’ 。 可以使用 EOF (‘^D’) 终止连接。

可以扩展上一节中的示例以构建基本的数据传输模型。 输入到连接一端的任何信息都将输出到另一端,并且可以轻松捕获输入和输出以模拟文件传输。

首先使用 nc 侦听特定端口,并将输出捕获到文件中:

$ nc -l 1234 > filename.out

使用第二台机器,连接到正在监听的 nc 进程,将要传输的文件提供给它:

$ nc -N host.example.com 1234 < filename.in

传输文件后,连接将自动关闭。

有时 “by hand” 而不是通过用户界面与服务器交谈是有用的。 当可能需要验证服务器响应客户端发出的命令而发送的数据时,它可以帮助进行故障排除。 例如,要检索网站的主页:

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

请注意,这还会显示 Web 服务器发送的标头。 如有必要,可以使用 sed(1) 等工具过滤它们。

当用户知道服务器所需的请求格式时,可以构建更复杂的示例。 作为另一个示例,可以使用以下方式将电子邮件提交到 SMTP 服务器:

了解目标机器上哪些端口已打开并正在运行服务可能很有用。 -z 标志可用于告诉 nc 报告打开的端口,而不是启动连接。 例如:

$ 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!

指定端口范围以将搜索限制为端口 20 - 30。

或者,了解哪些服务器软件正在运行以及哪些版本可能会很有用。 此信息通常包含在问候横幅中。 为了检索这些,必须首先建立连接,然后在检索到横幅后断开连接。 这可以通过使用 -w 标志指定一个小的超时来完成,或者通过向服务器发出 “QUIT” 命令来完成:

$ echo "QUIT" | nc host.example.com 20-30 SSH-1.99-OpenSSH_3.6.1p2 Protocol mismatch. 220 host.example.com IMS SMTP Receiver Version 0.84 Ready

打开到 host.example.com 的 42 端口的 TCP 连接,使用端口 31337 作为源端口,超时 5 秒:

$ nc -p 31337 -w 5 host.example.com 42

打开与 host.example.com 的 53 端口的 UDP 连接:

$ nc -u host.example.com 53

使用 10.1.2.3 作为连接本地端的 IP,打开与 host.example.com 的端口 42 的 TCP 连接:

$ nc -s 10.1.2.3 host.example.com 42

使用 IPsec ESP 打开与 host.example.com 的端口 42 的 TCP 连接,用于传入和传出流量。

$ nc -E host.example.com 42

使用 IPsec ESP 打开与 host.example.com 端口 42 的 TCP 连接,仅用于传出流量。

$ nc -e 'out ipsec esp/transport//require' host.example.com 42

创建并侦听 UNIX-domain 流套接字:

$ nc -lU /var/tmp/dsocket

通过位于 10.2.3.4 的 HTTP 代理,端口 8080 连接到 host.example.com 的端口 42。 这个例子也可以被 ssh(1) 使用;有关更多信息,请参阅 ssh_config(5) 中的 ProxyCommand 指令。

$ nc -x10.2.3.4:8080 -Xconnect host.example.com 42

再次使用相同的示例,如果代理需要,这次使用用户名 “ruser” 启用代理身份验证:

$ nc -x10.2.3.4:8080 -Xconnect -Pruser host.example.com 42

The nc utility exits 0 on success, and >0 if an error occurs.

cat(1), setfib(1), ssh(1), tcp(4)

无论目标机器的状态如何,使用 -uz 标志组合的 UDP 端口扫描将始终报告成功。 但是,结合目标机器或中间设备上的流量嗅探器, -uz 组合可能对通信诊断有用。 请注意,生成的 UDP 流量可能会受到硬件资源和/或配置设置的限制。

July 10, 2020

FreeBSD 13.1-RELEASE

length

interval

length

proxy_username

source_port

source

toskeyword

rtable

timeout

proxy_protocol

proxy_address[:port]

$ nc localhost 25 << EOF HELO host.example.com MAIL FROM: RCPT TO: DATA Body of email. . QUIT EOF

原始实现由 *Hobbit* <> 。- 由 Eric Jackson <> 重写,支持 IPv6。

user@host.example.com
user2@host.example.com
hobbit@avian.org
ericj@monkey.org
名称
概要
描述
-4
-6
-D
-d
-E
-e
-F
-h
-I
-i
-k
-l
-M
-N
-n
--no-tcpopt
--sctp
-O
-P
-p
-r
-S
-s
-T
-t
-U
-u
-V
-v
-w
-X
-x
-z
客户端/服务器模型
数据传输
与服务器交谈
端口扫描
实例
退出状态
参见
作者
注意事项