logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

nc - TCP/IP swiss army knife

Author

       This manual page was written by  Joey  Hess  <joeyh@debian.org>  and  Robert  Woodcock  <rcw@debian.org>,
       cribbing heavily from Netcat's README file.

       Netcat was written by a guy we know as the Hobbit <hobbit@avian.org>.

                                                                                                           NC(1)

Bugs

       Efforts have been made to have netcat "do the right thing" in all its various modes.  If you believe that
       it is doing the wrong thing under whatever circumstances, please notify me and tell me how you  think  it
       should  behave.   If  netcat  is  not  able  to  do some task you think up, minor tweaks to the code will
       probably fix that.   It  provides  a  basic  and  easily-modified  template  for  writing  other  network
       applications, and I certainly encourage people to make custom mods and send in any improvements they make
       to it. Continued feedback from the Internet community is always welcome!

Description

netcat  is a simple Unix utility which reads and writes data across network connections, using TCP or UDP
       protocol. It is designed to be a reliable "back-end" tool that can be used directly or easily  driven  by
       other  programs  and  scripts.   At the same time, it is a feature-rich network debugging and exploration
       tool, since it can create almost any kind of connection you would need and has several interesting built-
       in capabilities.  Netcat, or "nc" as the actual program is named, should have been supplied long  ago  as
       another one of those cryptic but standard Unix tools.

       In  the  simplest  usage,  "nc  host port" creates a TCP connection to the given port on the given target
       host.  Your standard input is then sent to the host, and anything that comes back across  the  connection
       is  sent  to your standard output.  This continues indefinitely, until the network side of the connection
       shuts down.  Note that this behavior is different from most other applications which shut everything down
       and exit after an end-of-file on the standard input.

       Netcat can also function as a server, by listening for inbound connections on arbitrary  ports  and  then
       doing  the  same  reading  and writing.  With minor limitations, netcat doesn't really care if it runs in
       "client" or "server" mode -- it still shovels data back and forth until there isn't  any  more  left.  In
       either mode, shutdown can be forced after a configurable time of inactivity on the network side.

       And it can do this via UDP too, so netcat is possibly the "udp telnet-like" application you always wanted
       for  testing  your UDP-mode servers.  UDP, as the "U" implies, gives less reliable data transmission than
       TCP connections and some systems may have trouble sending large amounts of data that way, but it's  still
       a useful capability to have.

       You  may  be asking "why not just use telnet to connect to arbitrary ports?" Valid question, and here are
       some reasons.  Telnet has the "standard input EOF" problem, so one must introduce  calculated  delays  in
       driving  scripts  to  allow network output to finish.  This is the main reason netcat stays running until
       the *network* side closes.  Telnet  also  will  not  transfer  arbitrary  binary  data,  because  certain
       characters  are  interpreted  as  telnet  options and are thus removed from the data stream.  Telnet also
       emits some of its diagnostic messages to standard output, where  netcat  keeps  such  things  religiously
       separated  from  its  *output*  and will never modify any of the real data in transit unless you *really*
       want it to.  And of course telnet is incapable  of  listening  for  inbound  connections,  or  using  UDP
       instead.   Netcat  doesn't have any of these limitations, is much smaller and faster than telnet, and has
       many other advantages.

Examples

       For    several    netcat    recipes,    please    see   /usr/share/doc/netcat-traditional/README.gz   and
       /usr/share/doc/netcat-traditional/README.Debian.gz.

Name

       nc - TCP/IP swiss army knife

Notes

       Some  port  names  in  /etc/services  contain  hyphens -- netcat currently will not correctly parse those
       unless you escape the hyphens with backslashes (e.g. "netcat localhost 'ftp\-data'").

Options

-cstring    specify shell commands to exec after connect (use with caution).  The string  is  passed  to
                    /bin/sh  -c for execution.  See the -e option if you don't have a working /bin/sh (Note that
                    POSIX-conformant system must have one).

       -efilename  specify filename to exec after connect (use with caution).  See the -c option  for  enhanced
                    functionality.

       -ggateway   source-routing hop point[s], up to 8

       -Gnum       source-routing pointer: 4, 8, 12, ...

       -h           display help

       -isecs      delay interval for lines sent, ports scanned

       -l           listen mode, for inbound connects

       -n           numeric-only IP addresses, no DNS

       -ofile      hex dump of traffic

       -pport      local port number (port numbers can be individual or ranges: lo-hi [inclusive])

       -qseconds   after  EOF  on  stdin,  wait  the  specified  number of seconds and then quit. If seconds is
                    negative, wait forever.

       -b           allow UDP broadcasts

       -r           randomize local and remote ports

       -saddr      local source address

       -t           enable telnet negotiation

       -u           UDP mode

       -v           verbose [use twice to be more verbose]

       -wsecs      timeout for connects and final net reads

       -C           Send CRLF as line-ending

       -z           zero-I/O mode [used for scanning]

       -Ttype      set TOS flag  (type  may  be  one  of  "Minimize-Delay",  "Maximize-Throughput",  "Maximize-
                    Reliability", or "Minimize-Cost".)

Synopsis

nc[-options]hostnameport[s][ports]...nc-l-pport[-options][hostname][port]

See Also