Linux系统中如何验证网络端口通不通

f7c7ec3e63aea4489e08a44cc4b0bd05.gif

责编:中文妹 | 来源:嗨 hello world

链接:https://blog.csdn.net/chengxue_liuliuliu/article/details/128202286

a537eb7075a3c9d3a23384362786ec4f.jpeg

前言

我们在 linux 系统网络调试中经常会遇到需要测试验证对应的端口是否正常的场景, 接下来讲解一下常用的方法。

相关命令详解

具体的用法

telnet serverIP port

注意事项是 serverIP 和 port 之间需要用空格分开

具体的操作:

端口不通的时候:

ggd@ubuntu:~$ telnet 192.168.70.1 20
Trying 192.168.70.1...
telnet: Unable to connect to remote host: Connection refused
ggd@ubuntu:~$

端口开启的时候:

ggd@ubuntu:~$ telnet 192.168.70.1 8080
Trying 192.168.70.1...
Connected to 192.168.70.1.
Escape character is '^]'.

需要注意的是 Connected to 192.168.70.1. 表示对应的端口是通的

telnet 测试端口连通之后, 还有惊喜

853c66e98fe777133cb5162951ff63ab.png

大家通过上图可以了解, 当通过 telnet 命令连通对应的端口之后,可以通过终端给对应的服务器发送消息, 另外同时也可以接收服务器发送的消息

如何退出 telnet 命令

大家在测试端口的时候如果对应的端口连通之后, 此时该命令处于阻塞状态, 不知道该怎么退出

第一种方法
先按 ctrl + ]
然后再按 ctrl + D
第二种方法
先按 ctrl + ]
然后再输入quit

nc 命令

具体用法

nc -v serverIP port

-v 即为将命令执行信息详细输出

端口不通的时候:

ggd@ubuntu:~$ nc -v 192.168.70.1 20
nc: connect to 192.168.70.1 port 20 (tcp) failed: Connection refused
ggd@ubuntu:~$

端口开启的时候:

ggd@ubuntu:~$ nc -v 192.168.70.1 8080
Connection to 192.168.70.1 8080 port [tcp/http-alt] succeeded!

nc 命令连通端口之后也是具备可以发送和接收信息的功能

050b1aef39a8904980760e9c541c5f02.png

如何退出 nc 命令

ctrl + D 或者 ctrl + C 都可以结束

nc 命令很强大

nc 命令 号称 网络工具中的瑞士军刀, 测试端口是否通断只是牛刀小试

nc 命令 还可以 实现 端口扫描、文件传输、在线聊天、验证 UDP 端口后续有机会再出文章详细讲解

命令很强大但是有可能受环境限制

为了适应环境, 功能简配

大家看到上面针对 telnet 或者 nc 命令都是在虚拟机上执行的,但是有的时候,排查问题的时候是在开发板上进行的, 正因为在开发板上, 所以我们移植的 busybox 版本有所不同, 因此 telnet 和 nc 支持的命令参数有可能不全或者执行对应的命令之后没有相关的信息可供参考

深处逆境, 总有办法绝处逢生

虽然 telnet 和 nc 功能简配, 但是最基础的功能还是有的, 我们此时可以再结合 netstat 来实现我们的端口测试
话不多说直接上操作

端口不通的时候

40cffe7c0500c0c9a7baef01d5fe0390.png

telnet 和 nc 都有对应的提示信息, 有这样的提醒我们感到很欣慰,因为这个信息能直观的看到端口是不通的

端口正常的时候

f928407c11ac5a63d2202d9d4198b204.png3019f530d554a42b24a3e4c6c64f2ccc.png

通过上图可以看出, 执行完命令之后处于阻塞状态, 但是我们此时不能下结论说这个端口没问题,我们需要用真实的证据来证明, 此时就用到了netstat -atpn 命令

bf904852dad84a0ecaf66ff5fe85384f.png

注意看红框和黄色箭头的标注, 我们需要在 Foreign Address 和 PID/Program name 找到我们测试的 IP、端口 和对应的进程名称, 然后查看 State 状态是否是 ESTABLISHED状态,如果是ESTABLISHED 表明端口正常如果不是该状态表示端口不通。另外,搜索公众号Linux就该这样学后台回复“猴子”,获取一份惊喜礼包。

简单介绍一下 netstat 命令

该命令是是一个监控 TCP/IP 网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息

netstat 命令参数介绍

-a: 显示所有连接的 Socket
-t: 展示 TCP 连接相关的信息
-p: 就是显示指定协议的信息
-n: 直接使用 IP, 不经过域名服务器 (优点: 程序响应快, 缺点: 只能看到 IP, 看不到域名信息)

netstat 状态介绍

简单介绍一下 state 几种常见的状态 ,描述的时候 TCP 在各个时期的状态

服务器的监听状态:

LISTENING: 监听来自客户端的 TCP 的连接请求, 只有 TCP 服务器的时候才会有这样的状态

TCP 连接时候的三次握手状态时候的

  • 1.SYN-SENT: 发送连接请求后等待匹配的连接请求,客户端发送连接请求

  • 2.SYN-RECEIVED: 再收到和发送一个连接请求后等待对方对连接请求的确认,对方发送回来的确认连接信息

TCP 连接成功的状态

ESTABLISHED: 一个完整的 TCP 连接建立成功

TCP 断开连接四次挥手时候的状态

  • 1.FIN-WAIT-1: 等待 TCP 连接中断请求

  • 2.FIN-WAIT-2:TCP 等待连接中断请求信息

  • 3.CLOSE-WAIT: 等待从本地用户发来的连接中断请求信息

  • 4.CLOSING: 等待 TCP 对连接中断的确认信息

  • 5.LAST-ACK: 等待原来的发向 TCP 的连接中断请求的确认信息

  • 6.TIME-WAIT: 等待一段时间用来确保 TCP 接收到连接中断请求的确认信息

  • 7.CLOSED: 没有任何连接状态

 
 

8b3985cda15df12eaea99dd3a20f90c1.gif

 
 

10T 技术资源大放送!包括但不限于:Linux、虚拟化、容器、云计算、网络、Python、Go 等。在 开源Linux 公众号内回复 10T,即可免费获取!

Linux学习指南
有收获,点个在看
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值