• linux环境下的nc(ncat的简写)命令用法和udp端口检测


    有时我们的服务程序采用udp与客户端进行通讯,但是总是接收不到客户端的请求,或者客户端总是接收不到服务器的响应,这个时候,我们需要确认时网络不通导致的,还是我们的服务程序故障引起的,特别是服务程序对应的网络端口状态是否正常,这个时候,我们就可以借助于linux环境下的nc命令进行辅助分析了。

    1. nc命令帮助输出

    1. # nc -help
    2. Ncat 7.50 ( https://nmap.org/ncat )
    3. Usage: ncat [options] [hostname] [port]
    4. Options taking a time assume seconds. Append 'ms' for milliseconds,
    5. 's' for seconds, 'm' for minutes, or 'h' for hours (e.g. 500ms).
    6. -4 Use IPv4 only
    7. -6 Use IPv6 only
    8. -U, --unixsock Use Unix domain sockets only
    9. -C, --crlf Use CRLF for EOL sequence
    10. -c, --sh-exec <command> Executes the given command via /bin/sh
    11. -e, --exec <command> Executes the given command
    12. --lua-exec <filename> Executes the given Lua script
    13. -g hop1[,hop2,...] Loose source routing hop points (8 max)
    14. -G <n> Loose source routing hop pointer (4, 8, 12, ...)
    15. -m, --max-conns <n> Maximum <n> simultaneous connections
    16. -h, --help Display this help screen
    17. -d, --delay <time> Wait between read/writes
    18. -o, --output <filename> Dump session data to a file
    19. -x, --hex-dump <filename> Dump session data as hex to a file
    20. -i, --idle-timeout <time> Idle read/write timeout
    21. -p, --source-port port Specify source port to use
    22. -s, --source addr Specify source address to use (doesn't affect -l)
    23. -l, --listen Bind and listen for incoming connections
    24. -k, --keep-open Accept multiple connections in listen mode
    25. -n, --nodns Do not resolve hostnames via DNS
    26. -t, --telnet Answer Telnet negotiations
    27. -u, --udp Use UDP instead of default TCP
    28. --sctp Use SCTP instead of default TCP
    29. -v, --verbose Set verbosity level (can be used several times)
    30. -w, --wait
    31. -z Zero-I/O mode, report connection status only
    32. --append-output Append rather than clobber specified output files
    33. --send-only Only send data, ignoring received; quit on EOF
    34. --recv-only Only receive data, never send anything
    35. --allow Allow only given hosts to connect to Ncat
    36. --allowfile A file of hosts allowed to connect to Ncat
    37. --deny Deny given hosts from connecting to Ncat
    38. --denyfile A file of hosts denied from connecting to Ncat
    39. --broker Enable Ncat's connection brokering mode
    40. --chat Start a simple Ncat chat server
    41. --proxy <addr[:port]> Specify address of host to proxy through
    42. --proxy-type <type> Specify proxy type ("http" or "socks4" or "socks5")
    43. --proxy-auth <auth> Authenticate with HTTP or SOCKS proxy server
    44. --ssl Connect or listen with SSL
    45. --ssl-cert Specify SSL certificate file (PEM) for listening
    46. --ssl-key Specify SSL private key (PEM) for listening
    47. --ssl-verify Verify trust and domain name of certificates
    48. --ssl-trustfile PEM file containing trusted SSL certificates
    49. --ssl-ciphers Cipherlist containing SSL ciphers to use
    50. --version Display Ncat's version information and exit
    51. See the ncat(1) manpage for full options, descriptions and usage examples

    2. 使用nc命令检测udp端口(正常端口)

    1. # nc -uzv 192.168.0.180 1812
    2. Ncat: Version 7.50 ( https://nmap.org/ncat )
    3. Ncat: Connected to 192.168.0.180:1812.
    4. Ncat: UDP packet sent successfully
    5. Ncat: 1 bytes sent, 0 bytes received in 2.02 seconds.
    6. #下面这样写也是一样的
    7. # nc -u -z -v 192.168.0.180 1812

     可以看到这里检测结果是,udp包发送成功,发送了一个字节,没有收到数据。

    这里的参数-u 表示udp协议。

    -z表示不进行io,只报告连接状态,测试一次连接后,就退出了,不发送数据。

    -v表示显示详细信息

    3. 使用nc命令检测udp端口(没有开启的端口)

    1. # nc -uzv 192.168.0.180 1813
    2. Ncat: Version 7.50 ( https://nmap.org/ncat )
    3. Ncat: Connected to 192.168.0.180:1813.
    4. Ncat: Connection refused.
    5. #下面这样写也是一样的
    6. # nc -u -z -v 192.168.0.180 1813

    可以看到这里的结果,连接被拒绝。说明端口没有开启或者是网络不通。

    4. 开启一个到udp端口的会话,可以持续发送消息

    1. ncat -uv 192.168.0.180 1812
    2. Ncat: Version 7.50 ( https://nmap.org/ncat )
    3. Ncat: Connected to 192.168.0.180:1812.

    5. 最简单的方式,只需要指定一个协议参数

    # ncat -u 192.168.0.180 1812

  • 相关阅读:
    Cassandra 设计最佳实践
    组件以及组件间的通讯
    SSM学习——springboot整合ssm(15)
    前端开发,自定义本地域名解析,更改host,模拟线上环境
    【重识云原生】第六章容器6.1.3节——Docker常用命令
    模型压缩-浅尝
    <网络安全>《85 微课堂<工业控制系统 - SIS安全仪表系统>》
    数据湖(二):什么是Hudi
    python动态生成变量名以及python函数的命名规则这样的疑问
    SpringCloud之gateway——流量控制组件Sentinel实战
  • 原文地址:https://blog.csdn.net/liaomingwu/article/details/138222705