Linux 下一些网管工具的使用:
netstat
:net status;netstat -ano 可以查看 tcp,udp,unix domain socket的连接状态信息;lsof
: list open file;可以查看已经打开的文件,当然套接字也是一种文件类型;lsof -i:[tcp|udp] port 可以查看已经打开的 tcp或udp 端口,-i 是selectnetcat (nc)
:也可以查看网络连接状态[- -u 使用udp;默认 使用tcp
- -l 监听
- -v 输出详细信息 verbose information
- -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:
- https://www.tecmint.com/10-lsof-command-examples-in-linux/
- https://superuser.com/questions/1238038/trouble-with-netcat-over-udp
- https://www.digitalocean.com/community/tutorials/how-to-use-netcat-to-establish-and-test-tcp-and-udp-connections-on-a-vps
- https://laoxiangchun.cn/
更多内容可关注本人博客:老香椿(https://laoxiangchun.cn/)