2、TCP/IP基础回顾:OSI模型与TCP/IP协议栈、IP地址与子网划分、端口与套接字
2.1 核心原理:OSI七层模型与TCP/IP四层协议栈
网络故障排查的第一步,是准确判断问题发生在哪一层。OSI参考模型将网络通信划分为七个层次,而TCP/IP协议栈则将其归纳为四层。两者并非一一对应,但在排障实践中,我们通常以TCP/IP分层为骨架,以OSI分层为精细定位工具。
| OSI七层模型 | TCP/IP四层模型 | 典型协议与设备 | 常见故障现象 |
|---|---|---|---|
| 应用层(7) | 应用层 | HTTP、DNS、SMTP、FTP | 网页打不开、域名解析失败 |
| 表示层(6) | SSL/TLS、JPEG、ASCII | 证书错误、乱码 | |
| 会话层(5) | NetBIOS、RPC | 会话中断、连接重置 | |
| 传输层(4) | 传输层 | TCP、UDP | 端口不通、超时重传 |
| 网络层(3) | 网络层 | IP、ICMP、路由器 | 不可达、丢包、路由环路 |
| 数据链路层(2) | 网络接口层 | 以太网、ARP、交换机 | MAC冲突、ARP欺骗 |
| 物理层(1) | 网线、光纤、集线器 | 链路断开、信号衰减 |
2.2 IP地址与子网划分:排障的数学基础
IP地址是网络层的“门牌号”。IPv4地址为32位二进制数,通常以点分十进制表示。理解IP地址必须掌握三个核心概念:网络位、主机位和子网掩码。子网掩码中连续的1对应网络位,0对应主机位。
# 示例:192.168.1.0/24
IP 地址: 11000000.10101000.00000001.00000000
子网掩码: 11111111.11111111.11111111.00000000 → /24
网络地址: 192.168.1.0 (主机位全0)
广播地址: 192.168.1.255 (主机位全1)
可用主机: 192.168.1.1 ~ 192.168.1.254(共254个)
排障中常见的IP地址相关错误包括:子网掩码配置错误导致跨网段通信失败、IP地址冲突导致间歇性断网、默认网关错误导致无法访问外网。判断方法很简单:用 ipconfig(Windows)或 ifconfig/ip addr(Linux)查看本机配置,再用 ping 逐跳测试。
2.3 端口与套接字:定位服务的关键
端口号是传输层用于区分不同应用程序的16位数字(0~65535)。其中0~1023为知名端口,如HTTP=80、HTTPS=443、DNS=53、SSH=22;1024~49151为注册端口;49152~65535为动态/私有端口。套接字(Socket)是IP地址与端口号的组合,形式为 IP:端口,它唯一标识了网络中的一个通信端点。
一个完整的TCP连接由四元组唯一确定:源IP、源端口、目的IP、目的端口。排障时,我们经常需要查看本机监听的端口和已建立的连接:
# Linux 查看监听端口
ss -tlnp
# 或
netstat -tlnp
# Windows 查看端口占用
netstat -ano | findstr :8080
# 测试远程端口是否开放
telnet 192.168.1.100 8080
# 或使用 nc
nc -zv 192.168.1.100 8080
2.4 案例场景:一次典型的“无法访问网站”排障
假设用户反馈“浏览器打不开 http://www.example.com”,我们按分层思路快速定位:
- 物理/链路层:执行
ping 192.168.1.1(网关)。若不通,检查网线、Wi-Fi连接、ARP解析。 - 网络层:执行
ping 8.8.8.8。若不通,检查IP配置、路由表、默认网关。 - DNS解析:执行
nslookup www.example.com。若解析失败,检查DNS服务器设置(/etc/resolv.conf 或网络适配器)。 - 传输层:执行
telnet www.example.com 80。若端口不通,可能是防火墙拦截或服务未启动。 - 应用层:使用
curl -v http://www.example.com查看HTTP响应状态码,判断是404、500还是连接被重置。
2.5 误区与复盘:TCP/IP排障中的典型思维陷阱
| 误区 | 后果 | 正确做法 |
|---|---|---|
| 忽略子网掩码,只看IP是否在同一网段 | 误判两台主机“应该能通”,实际跨网段 | 始终用“IP与掩码”运算确认网络地址 |
| ping不通就断定“网络断了” | 某些服务器禁ping(防火墙丢弃ICMP),但HTTP服务正常 | 结合端口测试(telnet/nc)综合判断 |
| 只查本机IP,不查网关ARP | 网关IP冲突或ARP表错误导致“假连接” | 用 arp -a 检查网关MAC是否正常 |
| 端口不通就认为是防火墙问题 | 忽略了服务本身未监听(如Tomcat启动失败) | 先在本机 ss -tlnp 确认服务监听状态 |
复盘一次真实故障:某服务器无法从外网访问,内网正常。排查发现,服务器IP为192.168.1.10/24,网关为192.168.1.1,但防火墙默认策略将入站流量全部DROP,仅放行了22端口。管理员误以为“内网能通外网就能进”,忽略了防火墙的入站/出站方向差异。最终通过 iptables -L -n 查看规则链,添加放行80/443端口解决。这个案例提醒我们:TCP/IP排障不仅要看协议栈,还要结合主机防火墙、安全组等边界设备的策略综合判断。