# **一、OSI七层排查方式** ## **1. 物理层(Physical Layer)** **问题描述**:网络接口、硬件、链路问题,如网线损坏、网卡故障、光纤问题等。 **排查方法**: - **检查物理连接** ```bash ip link show # 查看网卡状态 ethtool eth0 # 获取网卡详细信息 mii-tool eth0 # 检查网卡速率和双工模式 dmesg | grep -i eth # 查看系统日志中的网卡错误 ``` - **网络连通性** ```bash ping -c 5 <目标IP> # 测试网络连通性 ``` --- ## **2. 数据链路层(Data Link Layer)** **问题描述**:MAC 地址冲突、VLAN 配置错误、ARP 解析失败等。 **排查方法**: - **检查 MAC 地址** ```bash ip link show # 查看网卡信息 ip -s link show eth0 # 查看流量统计 ``` - **ARP 相关问题** ```bash arp -a # 查看本地 ARP 表 ip neigh show # 查看邻居表(类似 ARP) arping -c 5 <目标IP> # 发送 ARP 请求检查目标是否响应 ``` --- ## **3. 网络层(Network Layer)** **问题描述**:IP 配置错误、路由异常、丢包、ICMP 受限等。 **排查方法**: - **检查 IP 配置** ```bash ip addr show # 查看 IP 地址 ip route show # 查看路由表 ``` - **排查连通性** ```bash ping -c 5 <目标IP> # 测试是否可达 traceroute <目标IP> # 跟踪数据包路径 mtr <目标IP> # 实时监测网络状况 ``` - **防火墙 & NAT** ```bash iptables -L -n -v # 查看防火墙规则 nft list ruleset # 如果使用 nftables,查看规则 ``` --- ## **4. 传输层(Transport Layer)** **问题描述**:端口未监听、TCP 连接失败、UDP 丢包、SYN flood 攻击等。 **排查方法**: - **端口状态检查** ```bash netstat -nlptu # 查看监听的端口 ss -nlptu # 替代 netstat,查看端口信息 lsof -i :80 # 查看占用 80 端口的进程 ``` - **连接测试** ```bash nc -vz <目标IP> <端口> # 测试 TCP 端口可用性 telnet <目标IP> <端口> # 测试 TCP 连接 hping3 -S -p <端口> <目标IP> # 发送 SYN 包,测试端口状态 ``` --- ## **5. 会话层(Session Layer)** **问题描述**:长连接断开、超时、TLS/SSL 失败等。 **排查方法**: - **TLS/SSL 诊断** ```bash openssl s_client -connect <目标IP>:443 # 测试 HTTPS 连接 ``` - **查看进程会话** ```bash ps aux | grep <服务名> # 查看进程是否存活 ``` --- ## **6. 表示层(Presentation Layer)** **问题描述**:数据格式不匹配、编码错误、证书解析失败等。 **排查方法**: - **检查证书** ```bash openssl x509 -in cert.pem -text -noout # 查看证书详情 ``` - **检查编码** ```bash file <文件> # 查看文件编码 iconv -f UTF-8 -t GBK <文件> # 转换编码 ``` --- ## **7. 应用层(Application Layer)** **问题描述**:服务未启动、HTTP 5XX、API 失败等。 **排查方法**: - **Web 请求** ```bash curl -I http://<目标IP>:80 # 测试 HTTP 头部 wget http://<目标IP>:80 # 直接下载页面 ``` - **日志排查** ```bash tail -f /var/log/nginx/access.log # 查看 Nginx 访问日志 journalctl -u <服务名> -f # 查看 systemd 运行日志 less /var/log/messages # 查看系统事件日志 ``` # 二、操作系统处理网络包发送解析 **如图**  ---