网络基础: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)或操作系统内部消化,不必单独处理。
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):客户端临时分配,用于主动发起连接。
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个)。
/24 就是“前24位是网络号”,忽略了主机位全0代表网络地址、全1代表广播地址这两个特殊地址不可分配给主机。案例:企业网络规划实战
某公司申请到 172.16.0.0/16 网段,需为四个部门划分独立子网:研发部500台、市场部200台、财务部100台、服务器区50台。规划步骤如下:
- 按最大需求排序:研发部500台 → 需主机位9位(2⁹-2=510),前缀
/23;市场部200台 → 需8位(254),前缀/24;财务部100台 → 需7位(126),前缀/25;服务器区50台 → 需6位(62),前缀/26。 - 从大到小依次分配:研发部
172.16.0.0/23(可用范围 .0.1~.1.254);市场部172.16.2.0/24;财务部172.16.3.0/25;服务器区172.16.3.128/26。 - 验证隔离:各子网间通信需通过路由器转发,配置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 观察路径中每一跳的延迟,可快速定位是本地子网问题还是骨干网问题。