文章目录
- 查看和配置网络接口-ifconfig
- 查看路由表条目-route
- 查看网络连接情况-netstat
- [获取 socket 统计信息-ss](#获取 socket 统计信息-ss)
- ss命令与netstat命令的对比
- 拓展:套接字(Socket)
- 拓展:文件描述符(FD)
本篇讲解:ifconfig、route、netstat、ss几个常用的基础命令。
查看和配置网络接口-ifconfig
简介
ifconfig
命令用于查看和配置网络接口的详细信息。可以显示网络接口的当前状态、设置 IP 地址、子网掩码、广播地址,以及启用或禁用网络接口。
格式
查看所有活动的网络接口信息
- 直接执行 ifconfig
查看指定网络接口信息
bash
ifconfig [网络接口] [选项]
选项(参数)
-a
:显示所有网络接口的信息,包括未启用的接口。<网络接口>
:指定要查看或配置的网络接口(如eth0
,ens33
等)。up
:启用指定的网络接口。down
:禁用指定的网络接口。<IP地址> [netmask <子网掩码>]
:为指定的网络接口配置 IP 地址和子网掩码。<IP地址>/<子网掩码长度>
:以斜杠表示法配置 IP 地址和子网掩码长度(如192.168.1.10/24
)。<网络接口:虚拟接口编号>
:配置虚拟网络接口(如ens33:0
),用于分配多个 IP 地址。
示例
显示网络接口 eth0
的详细信息。
bash
ifconfig eth0
为网络接口 eth0
配置 IP 地址 192.168.1.10
和子网掩码 255.255.255.0
。
bash
ifconfig eth0 192.168.1.10 netmask 255.255.255.0
或者
ifconfig eth0 192.168.1.10/24
配置虚拟网络接口 ens33:0
的 IP 地址为 192.168.1.11
。
bash
ifconfig ens33:0 192.168.1.11
开启和关闭虚拟网络接口 ens33:0
(重新激活网卡)。
bash
ifconfig ens33:0 up
ifconfig ens33:0 down
示例输出
bash
[root@localhost ~]# ifconfig ens33
ens33 flags=4163 <UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.4.11 netmask 255.255.255.0 broadcast 192.168.4.255
inet6 fe80:9106:d38b:670d:1a89 prefixlen 64 scopeid Ox20<link>
ether 00:0c:29:3a:81:cc txqueuelen 1000 (Ethernet)
...//省略部分内容
查看路由表条目-route
简介
route
命令用于查看或设置主机中的路由表信息。路由表是决定网络流量如何从源到达目的地的关键数据结构。
route
命令用于查看或设置主机中的路由表信息。路由表是决定网络流量如何从源到达目的地的关键数据结构。
格式
bash
route [选项]
选项(参数)
- -n:以数字形式显示路由表信息,避免将 IP 地址解析为主机名,从而加快输出速度。
示例
bash
route -n
此命令以数字形式显示当前主机的路由表,包括目的地、网关、子网掩码、接口等信息。
查看网络连接情况-netstat
简介
netstat
命令用于显示主机中所有活动的网络连接、路由表、接口统计信息、伪装连接、多播成员等。它可以用于检查网络接口和路由表、监控传入和传出的网络连接,以及执行端口扫描等任务。
格式
bash
netstat [选项]
选项(参数)
- -a:显示所有活动的网络连接信息,包括监听和非监听状态的服务端口。
- -n:以数字形式显示相关的主机地址和端口信息,不进行域名解析。
- -r:显示路由表信息。
- -l:仅显示处于监听(Listening)状态的网络连接及端口信息。
- -t:查看 TCP(传输控制协议)相关的连接信息。
- -u:显示 UDP(用户数据报协议)协议相关的连接信息。
- -p:显示与网络连接相关联的进程号和进程名称信息(需要 root 权限)。
示例
bash
netstat -antp | grep <端口号>
此命令显示主机中所有 TCP 连接,并通过 grep
过滤出特定端口号的连接信息。
获取 socket 统计信息-ss
介绍
ss
命令用于查看和管理网络连接情况,主要用于获取 socket 统计信息。
它能够显示类似于 netstat
命令的输出内容,但具备更高效的性能和更详细的信息。
ss
命令的优势在于能够显示更多关于 TCP 和连接状态的详细信息,特别是在服务器的 socket 连接数量非常大时,ss
命令的执行速度远超 netstat
和 cat /proc/net/tcp
。
ss
命令之所以快速,是因为它利用了 TCP 协议栈中的 tcp_diag
模块,该模块用于分析和统计,并从 Linux 内核中获取第一手信息,从而确保了 ss
命令的快捷高效。
ss
命令是 Linux CentOS 7 中 iproute
软件包的一部分,并已默认安装。
格式
bash
ss [选项]
常用选项
- -a:显示所有套接字(包括监听和非监听状态)。
- -l:仅显示监听状态的套接字。
- -n:以数字形式显示地址和端口号,不进行名称解析。
- -t:显示 TCP 协议相关的连接。
- -u:显示 UDP 协议相关的连接。
- -p:显示与套接字关联的进程信息(需要 root 权限)。
- -r:显示路由表信息。
- -s:显示套接字的统计信息。
- -4:仅显示 IPv4 套接字信息。
- -6:仅显示 IPv6 套接字信息。
示例
显示所有 TCP 连接的信息。
bash
ss -t
显示所有 UDP 连接的信息。
bash
ss -u
显示裸套接字相关的连接。
bash
ss -w
显示 UNIX 套接字相关的连接。
bash
ss -x
ss命令与netstat命令的对比
相同点
- 查看网络连接信息 :
ss
和netstat
都可以用于查看主机上的网络连接信息,包括 TCP 和 UDP 套接字、监听端口等。 - 查看 PID 和程序/进程名:这两个命令都可以显示与网络连接相关联的进程 ID(PID)和程序/进程名称(需要 root 权限)。
不同点
- 信息来源 :
ss
主要通过tcp_diag
模块直接从内核中的 socket 获取统计信息,从而提供更详细的 TCP 和连接状态信息,性能也更高效。netstat
通过解析/proc
文件系统来获取网络连接信息,处理大量连接时速度较慢。 - 查看内存使用情况 :
ss
可以显示每个套接字的内存使用情况。
拓展:套接字(Socket)
简介
Socket 是计算机网络中的一种通信端点,用于在两个程序之间进行数据传输。它可以在不同的主机之间或者同一主机内的不同进程之间建立通信连接。Socket 是网络通信的基础,无论是 TCP 还是 UDP 协议,底层都依赖于 Socket 进行数据的传输和接收。一个用户连接即是一个Socket。
工作原理
Socket 通信通常包括以下几个步骤:
- 创建 Socket:应用程序通过操作系统提供的 API 创建一个 Socket,指定通信的协议类型(如 TCP 或 UDP)。
- 绑定(Bind):服务器端的 Socket 需要绑定到一个特定的 IP 地址和端口号,以便监听客户端的连接请求。
- 监听(Listen):服务器端的 Socket 开始监听绑定的端口,等待客户端的连接。
- 连接(Connect):客户端通过 Socket 连接到服务器端的指定 IP 地址和端口号。
- 数据传输:一旦连接建立,双方可以通过 Socket 进行双向的数据传输。
- 关闭(Close):数据传输完成后,双方都可以关闭 Socket 以释放资源。
Socket类型
- TCP Socket:使用传输控制协议(TCP),提供可靠的、面向连接的通信。数据通过流的方式传输,确保数据的完整性和顺序性。
- UDP Socket:使用用户数据报协议(UDP),提供不可靠的、无连接的通信。数据以数据报的方式传输,没有保证数据到达的顺序和完整性。
- Raw Socket:直接使用底层协议(如 IP 协议),通常用于开发网络协议或进行网络分析和测试。
应用场景
Socket 广泛用于各种网络应用,如 Web 服务器、邮件服务器、聊天应用程序、在线游戏等。是构建网络服务和实现客户端-服务器模型的重要工具。
拓展:文件描述符(FD)
文件描述符(FD)是操作系统内核为每个打开的文件、套接字或其他输入输出资源分配的一个非负整数,用于标识该资源。在 UNIX 和 Linux 系统中,几乎所有的输入输出操作都是通过文件描述符进行的。
FD的工作原理
- 打开文件:当进程打开一个文件或创建一个套接字时,操作系统会返回一个文件描述符,作为该文件或资源的句柄。
- 资源操作:程序通过文件描述符对相应的文件或资源进行读写操作,而不是直接使用文件名或路径。
- 关闭文件:当进程不再需要使用某个文件或资源时,可以通过关闭文件描述符来释放系统资源。
常见的文件描述符
- 标准输入(stdin) :文件描述符为
0
,默认连接到键盘输入。 - 标准输出(stdout) :文件描述符为
1
,默认连接到终端输出。 - 标准错误(stderr) :文件描述符为
2
,默认连接到终端输出错误信息。
文件描述符的应用
- 重定向:可以将文件描述符指向其他文件或设备,例如将标准输出重定向到文件。
- 套接字:网络通信中的每个连接通常都有一个与之对应的文件描述符,用于数据的发送和接收。
- 进程间通信:通过管道或 FIFO 等机制,不同进程间可以使用文件描述符进行数据传递。
文件描述符在系统资源管理中起着关键作用,正确管理文件描述符有助于避免资源泄露和系统不稳定。