Linux端口与ss命令详解

1、端口

端口是设备与外界通讯交流的出入口,用于标识设备上不同的网络服务或者程序。

IP地址 = 大楼的地址(比如:192.168.88.100)

端口 = 大楼里的房间号(比如:22、80、3306)

程序 = 在房间里工作的人

端口的作用:

标识网络服务:通过端口可以唯一标识设备上的不同网络服务或程序

实现多路复用:允许同一台设备上的多个程序同时与网络进行通信

确保通信准确性:在IP地址的基础上,通过端口进一步锁定具体的程序

2、物理端口和虚拟端口

物理端口即计算机硬件上的可见接口,用于连接外部设备,如USB接口等。

虚拟端口是计算机内部的端口,不可见,用于操作系统与外部程序之间的交互。

通信过程

  • 计算机A上的程序通过某个端口发出访问请求
  • 访问请求包含目标计算机B的IP地址和目标程序的端口号
  • 计算机B收到请求后,通过端口号将数据发送到对应的程序

IP地址 + 端口号 = 唯一标识网络中的某个程序

例子:192.168.88.100:22 表示IP地址为192.168.88.100的计算机上的22号端口

3、Linux中的端口分类

Ⅰ、公认端口:

  • 范围:1 - 1023
  • 用途:用于系统内置或知名程序的预留使用
  • 特点:由IANA(互联网号码分配局)统一分配和管理
  • 常见例子
    • SSH服务:22端口
    • HTTP服务:80端口
    • HTTPS服务:443端口
    • FTP服务:21端口
    • Telnet服务:23端口

Ⅱ、注册端口:

  • 范围:1024 - 49151
  • 用途:用于松散绑定程序或服务
  • 特点:可以由用户程序自由使用,但需要在IANA注册
  • 常见例子
    • MySQL数据库:3306端口
    • Tomcat服务器:8080端口
    • Redis服务:6379端口
    • MongoDB服务:27017端口

Ⅲ、动态端口:

  • 范围:49152 - 65535
  • 用途:用于临时使用,不固定绑定程序
  • 特点:当程序对外发起网络连接时临时分配使用

4、ss命令

ss(Socket Statistics)是Linux系统中用于查看网络连接、端口状态等信息的现代命令行工具,来自iproute2包。它是netstat命令的替代者,速度更快、输出更简洁,是Rocky Linux 9推荐使用的工具。

格式:ss [选项]

常用选项

选项 功能描述 记忆技巧
-t 只显示TCP连接 t = TCP
-u 只显示UDP连接 u = UDP
-l 只显示监听状态的端口 l = Listen(监听)
-n 以数字形式显示地址和端口号(不解析域名) n = Number(数字)
-p 显示建立连接的进程ID和进程名 p = Process(进程)
-a 显示所有连接和监听端口 a = All(所有)
-s 显示网络统计摘要 s = Summary(摘要)
-r 显示路由表 r = Route(路由)

常用组合:

# 查看所有TCP监听端口和对应的进程(最常用!)
ss -tlnp

# 查看所有UDP监听端口和对应的进程
ss -ulnp

# 查看所有连接和监听端口
ss -anp

# 查看网络统计摘要
ss -s

TCP连接监听端口输出解析:

  • State:连接状态,LISTEN表示监听状态(等待连接)
  • Recv-Q:接收队列中的字节数,可以理解为"已经收到但还没被程序读取的数据"
    • 💡 类比:就像快递员送到家门口但还没拆开的包裹
  • Send-Q:发送队列中的字节数,可以理解为"已经发送但对方还没确认的数据"
    • 💡 类比:就像已经寄出但对方还没签收的快递
  • Local Address:Port:本地地址和端口(监听的地址)
  • Peer Address:Port:远程地址和端口(连接的客户端地址)
  • Process:进程信息(包含进程名、PID和文件描述符)

UDP端口输出示例:(UDP是无连接协议,所以没有"建立连接"的概念,状态永远是UNCONN)

  • StateUNCONN表示UDP无连接状态(UDP是无连接协议)
  • Recv-Q:接收队列中的字节数
  • Send-Q:发送队列中的字节数
  • Local Address:Port:本地地址和端口
  • Peer Address:Port:远程地址和端口(UDP为*表示任意地址)
  • Process:进程信息

网络统计摘要:(适合快速查看服务器整体网络状态,适合排查性能问题)

  • Total:总的连接数
  • TCP:TCP连接统计
    • estab:已建立的连接数
    • closed:已关闭的连接数
    • timewait:TIME_WAIT状态的连接数
  • Transport:传输协议类型统计

常用操作:

查看指定端口:ss -nlp | grep xx

查看特定进程的连接: ss -anp | grep sshd

查看特定状态的连接:ss -ant state listening

查看特定地址的连接:ss -an | grep 192.168.88.100

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐