Linux网络架构与进程管控详解
网络分层模型对比
计算机网络通信依赖两种主流分层架构:OSI七层参考模型与TCP/IP四层模型。前者由国际标准化组织提出,侧重于理论框架设计;后者源于ARPANET实践,成为互联网实际运行的基础。
采用分层设计的核心价值在于模块化治理——将庞杂的通信流程拆解为功能明确的层级,各层独立演进且通过标准接口交互。这种解耦机制大幅降低了网络故障定位与协议开发的复杂度。
OSI模型层级功能映射
| 层级 | 名称 | 核心职责 | 典型设备/实例 |
|---|---|---|---|
| 7 | 应用层 | 直接面向用户提供网络服务接口 | 浏览器、邮件客户端、即时通讯软件 |
| 6 | 表示层 | 数据格式转换、加密解密、压缩解压 | SSL/TLS加密、JPEG/MPEG编解码 |
| 5 | 会话层 | 建立、维护、终止应用程序间的会话连接 | RPC远程调用、NetBIOS |
| 4 | 传输层 | 端到端可靠或不可靠数据传输 | 防火墙、负载均衡器 |
| 3 | 网络层 | 逻辑寻址与路由选择 | 路由器、三层交换机 |
| 2 | 数据链路层 | 物理寻址(MAC)、帧封装、差错检测 | 网卡、二层交换机 |
| 1 | 物理层 | 比特流传输、电气特性定义 | 集线器、网线、光纤 |
实际部署中TCP/IP模型更为普及,原因在于OSI的会话层与表示层功能单薄,而数据链路层和网络层又过于臃肿。TCP/IP将OSI的上三层合并为应用层,下两层合并为网络接口层,形成更精简的四层结构。
核心网络协议速查
- DNS:域名与IP地址的分布式解析系统
- DHCP:自动化IP地址分配与管理
- SNMP:网络设备监控与管理的标准协议
- HTTP/HTTPS:Web内容传输,后者增加TLS加密层
- FTP/TFTP:文件传输,后者为轻量级无认证版本
- SMTP:电子邮件推送协议
- TELNET/SSH:远程终端访问,SSH提供加密通道
- ICMP:网络诊断与控制报文,ping命令的实现基础
传输层协议差异
| 特性 | TCP | UDP |
|---|---|---|
| 连接模式 | 面向连接,三次握手建立会话 | 无连接,直接发送数据 |
| 可靠性 | 确认应答、重传机制、流量控制 | 不保证送达,无重传 |
| 传输顺序 | 按序交付,自动重组 | 不保证顺序 |
| 资源开销 | 头部20字节,状态维护消耗大 | 头部仅8字节,轻量级 |
| 典型场景 | 文件传输、网页浏览、数据库交互 | 实时音视频、DNS查询、物联网上报 |
常用端口对照
| 端口 | 服务 | 说明 |
|---|---|---|
| 21 | ftp | 文件传输控制通道 |
| 22 | ssh | 加密远程登录 |
| 23 | telnet | 明文远程登录(已淘汰) |
| 25 | smtp | 邮件发送服务 |
| 53 | dns | 域名解析(TCP/UDP双栈) |
| 80 | http | 超文本传输 |
| 443 | https | 加密Web通信 |
系统端口定义存储于/etc/services,可通过检索该文件查询非常规端口对应的服务。
虚拟网络模式解析
桥接模式
虚拟机作为独立网络节点存在,拥有与宿主机同网段的IP地址。特性:可访问外网、与局域网任意主机互通、宿主机与虚拟机双向可达。
NAT模式
虚拟机共享宿主机IP进行地址转换,依赖VMware的vmnet8虚拟网卡。特性:可访问外网、仅与宿主机单向通信、局域网其他主机不可直接访问虚拟机。
仅主机模式
虚拟机与宿主机及同模式虚拟机构成隔离网络。特性:无外网访问能力、宿主机与虚拟机互通、同宿主机下虚拟机间可通信。
网络配置实操
查看网络接口状态
$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 ...
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> ...
link/ether 00:0c:29:13:a1:49
inet 192.168.4.190/24 brd 192.168.4.255 scope global eth0
持久化网卡配置
编辑/etc/sysconfig/network-scripts/ifcfg-eth0:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.21.129
NETMASK=255.255.255.0
GATEWAY=192.168.21.2
DNS1=8.8.8.8
DNS2=8.8.4.4
TYPE=Ethernet
临时添加辅助IP
$ ip address add 192.168.4.191/24 dev eth0
套接字连接状态监控
ss命令替代传统netstat,常用组合:
| 选项 | 功能 |
|---|---|
| -t | TCP协议筛选 |
| -u | UDP协议筛选 |
| -n | 数字格式显示端口 |
| -l | 仅监听状态 |
| -a | 全部连接 |
| -p | 显示关联进程 |
$ ss -tnlp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
进程管理机制
程序是静态的二进制文件,进程则是程序的运行实例,具有完整的生命周期:创建、就绪、运行、阻塞、终止。
进程创建机制
Linux通过fork()系统调用实现进程派生。父进程复制自身地址空间生成子进程,子进程继承父进程环境变量、打开的文件描述符等属性,但获得独立的进程标识符(PID)。
系统首个进程PID为1:CentOS 6及之前为init,CentOS 7起替换为systemd。
僵尸进程成因
子进程终止后,内核保留其退出状态供父进程查询。若父进程未调用wait()或waitpid()回收,子进程残留的描述符将持续占用系统资源,形成僵尸状态(Z)。
进程状态码解读
| 状态 | 含义 |
|---|---|
| R | 运行或就绪,占用/等待CPU |
| S | 可中断睡眠,等待事件完成 |
| D | 不可中断睡眠,通常为IO操作 |
| T | 被信号暂停或调试跟踪 |
| Z | 僵尸进程,等待父进程收尸 |
附加修饰符:<高优先级、N低优先级、s会话首领、l多线程、+前台进程组。
进程查看命令
ps aux 输出字段说明:
- USER:进程启动用户
- PID:进程唯一标识
- %CPU/%MEM:资源占用百分比
- VSZ:虚拟内存大小(KB)
- RSS:常驻物理内存(KB)
- TTY:关联终端
- STAT:状态码组合
- START:启动时间
- TIME:累计CPU时间
- COMMAND:执行命令
$ ps aux | head -5
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 125328 3832 ? Ss 09:20 0:01 /usr/lib/systemd/systemd
root 2 0.0 0.0 0 0 ? S 09:20 0:00 [kthreadd]
方括号包裹的为内核线程。
系统负载评估
$ uptime
14:30:00 up 5 days, 2 users, load average: 0.52, 0.58, 0.55
load average表示1/5/15分钟内可运行与不可中断状态的平均进程数。评估标准:单核负载≤3为健康,≥5则性能吃紧。双核系统负载6即满载。
动态进程监控
top交互式视图解析:
top - 14:35:00 up 5 days, 3 users, load average: 0.50, 0.55, 0.52
Tasks: 120 total, 1 running, 119 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.0 us, 1.0 sy, 0.0 ni, 96.5 id, 0.5 wa, 0.0 hi, 0.0 si
MiB Mem : 2048.0 total, 512.0 free, 768.0 used, 768.0 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used
关键指标:us(用户空间)、sy(内核空间)、id(空闲)、wa(IO等待)。内存行显示总量、空闲、已用、缓存占用。
文件与端口关联分析
lsof列举进程打开的文件句柄、网络连接:
$ lsof -i :22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1523 root 3u IPv4 28521 0t0 TCP *:ssh (LISTEN)
sshd 1523 root 4u IPv6 28530 0t0 TCP *:ssh (LISTEN)
常用场景:定位端口占用进程、查看进程打开的文件、追踪删除但仍被引用的文件。