网络基础:OSI模型与TCP/IP模型、IP地址与端口、子网划分与CIDR

核心原理:两套分层模型的对照与取舍

网络通信的复杂性决定了它必须被分层处理。每一层只解决特定问题,并为上层提供清晰的服务接口。OSI参考模型(开放系统互连)由国际标准化组织提出,共分7层;而TCP/IP模型是互联网实际运行的事实标准,简化为4层。两者并非一一对应,但存在明确的映射关系。理解这种映射,是后续分析网络报文、排查故障的思维底座。

OSI七层模型TCP/IP四层模型典型协议与设备核心职责
应用层(7)应用层HTTP、FTP、DNS、SMTP为应用程序提供网络服务接口
表示层(6)SSL/TLS、JPEG、ASCII数据格式转换、加密、压缩
会话层(5)NetBIOS、RPC建立、管理、终止会话连接
传输层(4)传输层TCP、UDP端到端连接、端口寻址、流量控制
网络层(3)网络层IP、ICMP、路由器逻辑寻址、路由选择、分组转发
数据链路层(2)网络接口层以太网、交换机、MAC地址物理寻址、帧封装、差错检测
物理层(1)网线、光纤、集线器比特流传输、电气信号定义

实际开发中,我们最常打交道的只有四层:应用层(写业务代码)、传输层(选择TCP或UDP)、网络层(IP地址与路由)、网络接口层(MAC帧)。OSI的5、6层功能在TCP/IP中已被应用层协议(如TLS)或操作系统内部消化,不必单独处理。

记忆锚点:数据封装时,每层会添加自己的头部。发送方从上往下逐层加头,接收方从下往上逐层拆头。抓包工具(如Wireshark)展示的正是这种分层结构。
OSI 七层模型 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 TCP/IP 四层模型 应用层 HTTP · DNS · FTP TLS/SSL · SSH 数据格式 + 会话管理 (合并OSI 5/6/7层) 传输层 TCP · UDP · 端口 网络层 IP · ICMP · 路由 网络接口层 以太网 · MAC · 物理介质 数据封装过程 原始数据(应用层) TCP头 数据段(传输层) IP头 数据报(网络层) 帧头 帧(数据链路层) 10110110 01011100 ...(物理层比特流) 发送端:逐层封装(加头) 接收端:逐层解封装(去头) 端口号:传输层寻址 IP定位主机,端口定位进程 例:192.168.1.10:8080 0-1023 知名端口 · 1024-49151 注册端口 · 49152-65535 动态端口

IP地址与端口:网络通信的“门牌号”与“房间号”

IP地址负责在网络中找到一台主机,相当于“门牌号”;端口号负责在主机上找到具体进程,相当于“房间号”。一个完整的通信端点由 IP地址:端口号 二元组唯一标识。IPv4地址为32位二进制数,通常用点分十进制表示,例如 192.168.1.100。IPv6则扩展到128位,用冒号十六进制表示。

端口号是16位无符号整数,范围0~65535。其中:

  • 知名端口(0~1023):绑定固定服务,如HTTP=80、HTTPS=443、DNS=53、SSH=22。
  • 注册端口(1024~49151):供用户进程或服务使用,如MySQL=3306、Redis=6379。
  • 动态/私有端口(49152~65535):客户端临时分配,用于主动发起连接。
Socket编程视角:服务端调用 bind() 绑定固定端口,客户端调用 connect() 时操作系统自动分配一个临时端口。抓包时看到的 src port 和 dst port 正是这一机制的体现。

子网划分与CIDR:从“有类”到“无类”的演进

早期IP地址按首字节划分为A、B、C类,这种“有类寻址”浪费严重。例如一个B类地址段可容纳65534台主机,但多数机构用不了这么多。CIDR(无类域间路由)打破了固定分类,用 IP前缀/前缀长度 的形式灵活分配地址。前缀长度表示网络位的个数,剩余位为主机位。

子网划分的核心操作是借主机位作为子网位。例如 192.168.1.0/24 默认有256个地址,若需划分4个子网,则需借2位主机位,子网掩码变为 /26(255.255.255.192),每个子网含64个地址(可用主机62个)。

常见误区:子网掩码不是“IP地址的一部分”,而是独立的32位值。判断两台主机是否在同一子网,需将各自的IP与掩码做“与”运算,结果相同则同网段。初学者常误以为 /24 就是“前24位是网络号”,忽略了主机位全0代表网络地址、全1代表广播地址这两个特殊地址不可分配给主机。

案例:企业网络规划实战

某公司申请到 172.16.0.0/16 网段,需为四个部门划分独立子网:研发部500台、市场部200台、财务部100台、服务器区50台。规划步骤如下:

  1. 按最大需求排序:研发部500台 → 需主机位9位(2⁹-2=510),前缀 /23;市场部200台 → 需8位(254),前缀 /24;财务部100台 → 需7位(126),前缀 /25;服务器区50台 → 需6位(62),前缀 /26。
  2. 从大到小依次分配:研发部 172.16.0.0/23(可用范围 .0.1~.1.254);市场部 172.16.2.0/24;财务部 172.16.3.0/25;服务器区 172.16.3.128/26。
  3. 验证隔离:各子网间通信需通过路由器转发,配置ACL控制访问权限。
# Linux下查看本机IP与路由
ip addr show
ip route show

# 计算子网掩码(示例:/26)
# 二进制:11111111.11111111.11111111.11000000
# 十进制:255.255.255.192
# 可用主机数 = 2^(32-26) - 2 = 62

误区与复盘:网络基础中的“隐形陷阱”

  • 误区1:认为“端口越多越好”。实际端口是稀缺资源,一个进程默认只能绑定一个端口,多服务需用不同端口或复用机制(如SO_REUSEPORT)。
  • 误区2:混淆“公网IP”与“私网IP”。私网段(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)不可在公网路由,访问外网需NAT转换。
  • 误区3:子网划分后忘记保留网络地址和广播地址。例如 /30 子网只有2个可用IP,常用于点对点链路。
  • 误区4:抓包时看到目标MAC为广播地址(FF:FF:FF:FF:FF:FF)就认为是网络故障。ARP请求正是通过广播寻找目标IP对应的MAC地址,这是正常机制。
复盘建议:用 ping 测试连通性时,先确认两端IP与掩码是否同网段;不同网段则检查网关配置。用 traceroute 观察路径中每一跳的延迟,可快速定位是本地子网问题还是骨干网问题。