作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注我,我尽量把自己会的都分享给大家,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
Linux服务器作为一个常用的网络服务器,主要的作用就是向客户端提供网络服务,所以我们需要熟练掌握网络相关的命令,用于探测对端网络是否畅通,用于检查本地网络进程是否正常,以及可以通过命令去远端服务器进行下载文件,或者请求对方接口。
主要从以下几个方面来介绍:
1.给Linux服务器配置IP
2.探测对方网络连通性(ping & telnet)
3.下载对方文件(wget)
4.请求对方服务器(curl)
5.检查本地服务状态(netstat)本章节
6.检查本地服务状态(ss)
7.网络小结
NETSTAT
说这个命令之前,需要先说一个问题,就是Linux作为一台网络上最常用的服务器,他如何才能通过网络向其他人提供服务服务?包括我们前面说到的2个命令wget
, curl
,都是客户端命令,他们的目的都是为了去请求服务端地址,而他们的服务端,就必须通过监听端口实现服务暴露,比如常见的http对应的80,https对应的443,和ssh连接默认的22端口等。如果我们自己的Linux服务器需要对外提供服务,就需要通过监听端口来实现。而netstat 命令就可以用于查看本地监听的情况。
netstat
是一个非常强大的网络诊断工具,它可以提供丰富的网络相关信息。它的基本语法如下:
netstat [options]
下面是一些常用的 netstat 选项及其作用:
-
查看活动连接
-
-a
: 显示所有连接和监听端口 -
-n
: 以数字形式显示地址和端口 -
-t
: 仅显示 TCP 协议的连接 -
-u
: 仅显示 UDP 协议的连接 -
-x
: 仅显示 UNIX 域套接字连接
-
-
查看监听端口
-
-l
: 仅显示正在监听的连接 -
-i
: 显示网络接口信息
-
-
查看进程信息
-
-p
: 显示与每个连接相关的进程 ID 和进程名称
-
-
查看统计信息
-
-s
: 显示各种协议的统计信息
-
-
查看路由表
-
-r
: 显示内核路由表
-
-
输出格式控制
-
-e
: 显示扩展信息 -
-A <family>
: 仅显示指定地址族的连接 -
-o
: 显示计时器信息
-
-
其他选项
-
-c
: 持续刷新输出 -
-v
: 显示版本信息
-
比如,如果您想查看系统上所有的 TCP 连接,可以使用:
netstat -antp
这将显示所有活动的 TCP 连接,包括远程地址、本地地址、状态和相关进程信息。
如果您想查看某个进程正在使用的网络连接,可以使用:
netstat -antp | grep 12345
这将只显示与进程 ID 为 12345 的进程相关的网络连接。
基础知识
在网络连接里面有一个概念叫五元组或者简化版的四元组(源 IP 地址,源端口号,目标 IP 地址,目标端口号,协议类型),一般除去协议类型就是四元组。
比如:我从linux服务器,请求一个地址123.150.76.218:80 ,那么在网络连接里面就就存在类似下面的一个连接,当然这里还有更多的信息,这里不展开。
[root@localhost ~]# netstat -lnap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 192.168.179.102:50276 123.150.76.218:80 TIME_WAIT -
源IP:192.168.179.102
源端口:50276
目标IP:123.150.76.218
目标端口:80
协议:TCP
总结
1.netstat
这个命令是我们用于查看本地网络连接情况最常用的命令之一。
2.netstat
这个命令在网络连接很多的情况下,是有性能问题的,替代方案就是下一章我们会讲的ss
命令。如果只是本地检查端口就算卡也还好,如果用于脚本里面检查服务情况,就可能会出现预期以外的问题。
3.在最小化安装的系统里面是没有这个命令的,需要安装net-tools这个包才会自带这个命令。
4.netstat
最常用的用法,就是使用本机查看网络连接情况。
#xxx可以是端口号,也可以进程号,也可以是进程名字
netstat -lnp |grep xxx
#如果某个进程无法访问网络,可以通过这样来检查网络连接,是否已经建立网络连接。
#具体细节涉及到TCP网络协议栈的问题,这里暂时不展开。
netstat -lanp |grep xxx
关注微信公众号《运维小路》获取更多内容。