网管工具

Linux 下一些网管工具的使用:

  • netstat:net status;netstat -ano 可以查看 tcp,udp,unix domain socket的连接状态信息;
  • lsof: list open file;可以查看已经打开的文件,当然套接字也是一种文件类型;lsof -i:[tcp|udp] port 可以查看已经打开的 tcp或udp 端口,-i 是select
  • netcat (nc):也可以查看网络连接状态[
    1. -u 使用udp;默认 使用tcp
    2. -l 监听
    3. -v 输出详细信息 verbose information
    4. -z 端口扫描,不建立连接
      栗子:
      a. 检测某一udp端口是否开放:netcat -u -v -z [hostname:port]
      b. 开启某一udp端口:netcat -u -l port
  • telnet:telnet [hostname port] 不过telnet只能用于检测 tcp 连接

问题

当在使用netcat来测试网络连接时,
情境1:同一台主机,tcp连接

  • terminal 1: netcat -l 4444
  • terminal 2: netcat localhost 4444
    在任意 terminal下输入内容均能被正确的接收并显示

情景2:同一台主机,udp连接

  • terminal 1: netcat -u -l 4444
  • terminal 2: netcat -u localhost 4444
    在任意terminal 下输入内容均不能被正确接收与显示
    ?????
    考虑难道是udp协议问题,不会的;
    netstat -ano | grep “udp” 查看端口开着呢;
    查找资料发现有人遇到一样问题:
  • netcat -u lcalhost 4444 会将 localhost 解析到 ipv6 地址
    后来发现竟然在前面查看端口的时候只关注了ipv4的
    解决办法为:
  • netcat -4u localhost 4444
  • netcat -u 127.0.0.1 4444

ref:

  1. https://www.tecmint.com/10-lsof-command-examples-in-linux/
  2. https://superuser.com/questions/1238038/trouble-with-netcat-over-udp
  3. https://www.digitalocean.com/community/tutorials/how-to-use-netcat-to-establish-and-test-tcp-and-udp-connections-on-a-vps
  4. https://laoxiangchun.cn/

更多内容可关注本人博客:老香椿(https://laoxiangchun.cn/)

你可能感兴趣的:(Linux,linux,运维,后端)