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) 网线、光纤、集线器 链路断开、信号衰减
排障口诀:先物理,再链路,然后网络,接着传输,最后应用。从底层向上逐层排查,能避免在错误层次上浪费时间。
OSI 七层模型 7 应用层 HTTP / DNS / SMTP 6 表示层 SSL / 加密 / 编码 5 会话层 会话管理 / RPC 4 传输层 TCP / UDP / 端口 3 网络层 IP / ICMP / 路由 2 数据链路层 以太网 / ARP / MAC 1 物理层 网线 / 光纤 / 信号 TCP/IP 四层模型 应用层 HTTP · DNS · FTP · SMTP · SSH 对应 OSI 5/6/7 层 排障关注:进程状态、服务配置、证书 传输层 TCP(可靠) · UDP(尽力而为) 端口号 0~65535 网络层 IP 地址 · 子网 · 路由 · ICMP ping / traceroute 工作在此层 网络接口层 以太网 · Wi-Fi · ARP · MAC 发送:逐层封装 接收:逐层解封装 排障核心:先定位故障层次,再使用对应工具(ping→网络层,telnet→传输层,curl→应用层)

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 逐跳测试。

快速判断是否同网段:将两台主机的IP地址分别与子网掩码做“与”运算,若结果相同则同网段,可直接通信;否则需要经过网关转发。

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”,我们按分层思路快速定位:

  1. 物理/链路层:执行 ping 192.168.1.1(网关)。若不通,检查网线、Wi-Fi连接、ARP解析。
  2. 网络层:执行 ping 8.8.8.8。若不通,检查IP配置、路由表、默认网关。
  3. DNS解析:执行 nslookup www.example.com。若解析失败,检查DNS服务器设置(/etc/resolv.conf 或网络适配器)。
  4. 传输层:执行 telnet www.example.com 80。若端口不通,可能是防火墙拦截或服务未启动。
  5. 应用层:使用 curl -v http://www.example.com 查看HTTP响应状态码,判断是404、500还是连接被重置。
常见误区:不要一上来就抓包或重启路由器。90%的“无法上网”问题集中在IP配置错误、DNS设置异常和网关不可达三个原因。先 ping 127.0.0.1 确认本机协议栈正常,再 ping 网关确认链路,最后 ping 外网确认路由,这是最稳妥的排查顺序。

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排障不仅要看协议栈,还要结合主机防火墙、安全组等边界设备的策略综合判断。