主题
网络基础
本篇定位
建立系统的网络知识框架:网络分层模型(OSI/TCP-IP)、IP 地址与子网划分、TCP/UDP、以太网与 MAC、Linux 网卡配置(nmcli/netplan)和网卡高可用。网络排障命令(ping、tcpdump、nmap、nc、traceroute、dig 等)见 网络命令速查。
一、网络基础概念
1.1 什么是计算机网络
把地理位置不同、具有独立功能的多台计算机及外部设备,通过通信线路和网络设备连接起来,在网络协议管理下实现资源共享和信息传递的系统。
1.2 网络范围分类
| 类型 | 全称 | 范围 |
|---|---|---|
| LAN 局域网 | Local Area Network | 小范围(办公室、机房、园区),通常 10km 内,一个单位 |
| MAN 城域网 | Metropolitan | 覆盖一个城市,连接多个局域网 |
| WAN 广域网 | Wide Area Network | 跨城市/国家,覆盖全球(Internet 即最大的广域网) |
1.3 网络拓扑
拓扑指节点之间的连接方式:
| 拓扑 | 特点 |
|---|---|
| 总线型 | 所有节点共用一条线路,省成本、易布线,但单点故障影响大 |
| 星型 | 节点都连到中心设备(交换机),易管理扩展,中心是关键 |
| 环型 | 节点首尾成环,数据单向传输 |
| 网状型 | 节点间多条链路互联,可靠性高、冗余好(广域网/数据中心) |
现代局域网主流是星型(经交换机),核心/骨干追求网状冗余。
1.4 网络组成
- 终端/主机:计算机、服务器、手机等;
- 网络设备:网卡、集线器(Hub)、交换机(Switch)、路由器(Router);
- 通信线路:网线、光纤、无线;
- 协议与软件:TCP/IP 等通信规则、操作系统、应用。
二、网络分层模型
2.1 为什么要分层
网络通信极其复杂,分层把整体功能拆成多个层次,每层只负责一类功能、通过标准接口与相邻层协作,实现解耦、标准化、独立演进、便于排障。
2.2 OSI 七层模型(理论标准)
从下到上:
| 层 | 名称 | 功能 | 数据单元 | 典型协议/设备 |
|---|---|---|---|---|
| 7 | 应用层 | 面向用户的网络服务 | 数据 Data | HTTP、DNS、DHCP、FTP、SMTP |
| 6 | 表示层 | 数据编码、加密、压缩 | — | SSL/TLS、JPEG |
| 5 | 会话层 | 建立/管理/断开会话 | — | — |
| 4 | 传输层 | 端到端传输、端口、可靠性 | 段 Segment | TCP、UDP |
| 3 | 网络层 | 寻址与路由选择 | 包 Packet | IP、ICMP、ARP、路由器 |
| 2 | 数据链路层 | 同一链路内帧传输、MAC | 帧 Frame | 以太网、MAC、交换机 |
| 1 | 物理层 | 比特流传输 | 比特 Bit | 网线、光纤、集线器 |
记忆口诀(从下到上):物、数、网、传、会、表、应。
2.3 TCP/IP 模型(实际标准)
实际互联网使用 TCP/IP 模型,教学中常用"五层模型"对照:
| OSI 七层 | TCP/IP 四层 | 五层教学模型 |
|---|---|---|
| 应用/表示/会话 | 应用层 | 应用层 |
| 传输 | 传输层 | 传输层 |
| 网络 | 网际层(IP) | 网络层 |
| 数据链路/物理 | 网络接口层 | 数据链路层 / 物理层 |
2.4 封装与解封装
发送数据时,数据从上到下逐层加首部(封装):应用数据 → 加 TCP 头成"段" → 加 IP 头成"包" → 加帧头帧尾成"帧" → 转成比特发出。接收时从下到上逐层去掉首部(解封装)。
应用数据
[TCP头][数据] ← 段 Segment
[IP头][TCP头][数据] ← 包 Packet
[帧头][IP头][TCP头][数据][帧尾] ← 帧 Frame三、网络层:IP 协议
3.1 IPv4 地址
IPv4 是 32 位地址,用点分十进制表示为 4 段(每段 0-255),如 192.168.1.10。
3.2 地址分类(有类编址)
| 类 | 范围 | 默认掩码 | 用途 |
|---|---|---|---|
| A | 1.0.0.0 – 126.x | /8 | 大型网络 |
| B | 128.0 – 191.255 | /16 | 中型网络 |
| C | 192.0 – 223.255 | /24 | 小型网络 |
| D | 224.0 – 239.255 | — | 组播 |
| E | 240.0 – 255.255 | — | 保留实验 |
私有地址(内网使用,不能在公网路由):
| 类 | 私有网段 | 范围 |
|---|---|---|
| A | 10.0.0.0/8 | 10.0.0.0 – 10.255.255.255 |
| B | 172.16.0.0/12 | 172.16.0.0 – 172.31.255.255 |
| C | 192.168.0.0/16 | 192.168.0.0 – 192.168.255.255 |
特殊地址:
| 地址 | 含义 |
|---|---|
| 127.0.0.0/8 | 回环地址(本机测试) |
| 0.0.0.0 | 本机所有地址 / 默认路由 |
| 255.255.255.255 | 受限广播 |
| 169.254.0.0/16 | link-local(DHCP 失败时自动配置) |
3.3 子网掩码与 CIDR
IP 地址 = 网络号 + 主机号,子网掩码用来区分二者。
- 掩码连续的 1 对应网络位,0 对应主机位;
- CIDR 用
/位数表示网络位,如192.168.1.10/24(前 24 位是网络号); /24掩码255.255.255.0,网络号192.168.1.0。
3.4 子网划分
通过借主机位把一个大网络切成多个小子网:
- 借
n位 → 分出2^n个子网; - 主机位剩
h位 → 每个子网2^h个地址,可用主机2^h - 2(减去网络地址和广播地址)。
示例:把 192.168.1.0/24 切成 /26(借 2 位):
| 子网 | 网络地址 | 可用主机范围 | 广播地址 |
|---|---|---|---|
| 1 | 192.168.1.0/26 | .1 – .62 | .63 |
| 2 | 192.168.1.64/26 | .65 – .126 | .127 |
| 3 | 192.168.1.128/26 | .129 – .190 | .191 |
| 4 | 192.168.1.192/26 | .193 – .254 | .255 |
每个 /26 有 64 个地址、62 个可用主机。
3.5 IPv6 简介
IPv4 地址已枯竭,IPv6 用 128 位,写成 8 组十六进制(冒号分隔),如 2001:0db8::1,地址空间极大、内置安全和自动配置,正在逐步普及。
3.6 ICMP 与 ARP
- ICMP(网际控制报文协议):用于网络诊断和差错报告,
ping(探测主机可达)和traceroute(追踪路径)基于 ICMP; - ARP(地址解析协议):在局域网内根据 IP 地址解析出对应的 MAC 地址(
arp -n、ip neigh)。
四、传输层:TCP 与 UDP
4.1 端口
传输层用端口号区分同一主机上的不同应用(0-65535),IP 定位主机、端口定位进程。
| 端口 | 服务 |
|---|---|
| 22 | SSH |
| 80 / 443 | HTTP / HTTPS |
| 53 | DNS |
| 21 / 20 | FTP |
| 25 / 110 / 143 | SMTP / POP3 / IMAP |
| 123 | NTP |
| 3306 / 6379 | MySQL / Redis |
| 67、68 | DHCP |
- 0-1023 为知名端口(需特权);1024-49151 注册端口;以上为动态端口。
4.2 TCP:面向连接、可靠
TCP 特点: 面向连接、可靠传输(确认重传)、有序、流量控制和拥塞控制,开销较大。
三次握手(建立连接):
客户端 服务端
│ ── SYN (seq=x) ───────────→ │ 客户端 SYN_SENT
│ ←── SYN+ACK (ack=x+1) ───── │ 服务端 SYN_RCVD
│ ── ACK (ack=y+1) ─────────→ │ 双方 ESTABLISHED四次挥手(断开连接):
主动方 被动方
│ ── FIN ───────────────────→ │
│ ←── ACK ─────────────────── │ 被动方 CLOSE_WAIT
│ ←── FIN ─────────────────── │
│ ── ACK ───────────────────→ │ 主动方 TIME_WAIT → CLOSED为什么握手 3 次、挥手 4 次
- 握手时服务端的 SYN 和 ACK 可以合并成一条,故 3 次;
- 挥手时被动方收到 FIN 后先回 ACK,但可能还有数据要发,等数据发完再发 FIN,ACK 和 FIN 分开发,故 4 次;
TIME_WAIT等待约 2MSL,确保最后的 ACK 到达、旧连接报文消散。
4.3 UDP:无连接、快
UDP 特点: 无连接、不保证可靠和顺序、无拥塞控制,首部小、延迟低、开销小,适合实时场景(DNS 查询、视频/语音、游戏)。
4.4 TCP vs UDP
| 对比 | TCP | UDP |
|---|---|---|
| 连接 | 面向连接(三次握手) | 无连接 |
| 可靠性 | 可靠(确认重传排序) | 不保证 |
| 传输方式 | 字节流 | 数据报 |
| 开销/速度 | 较大、较慢 | 小、快 |
| 头部 | 20 字节起 | 8 字节 |
| 场景 | 网页、文件、邮件、数据库 | DNS、直播、语音、游戏 |
五、数据链路层与以太网
5.1 MAC 地址
- MAC 地址是网卡的物理地址,48 位、十六进制,如
00:0c:29:8a:3b:1f,全球唯一,烧录在网卡上; - 局域网内数据帧靠 MAC 地址投递,ARP 负责 IP→MAC 解析。
5.2 以太网
以太网是主流的局域网技术(IEEE 802.3),通过交换机按 MAC 转发帧,采用 CSMA/CD 机制(早期共享介质)。
5.3 VLAN
VLAN(虚拟局域网,IEEE 802.1Q) 在交换机上把一个物理网络逻辑上划分为多个广播域,隔离不同部门/业务的二层流量,提升安全和管理灵活性,通过在帧中打 VLAN 标签实现。
5.4 通信方式
- 单播(Unicast):一对一;
- 广播(Broadcast):一对所有(目标 MAC 全 F);
- 组播(Multicast):一对一组(D 类 IP)。
六、网卡与网络配置
6.1 网卡命名
- 旧规则:
eth0、eth1; - systemd 可预测命名:
eno1(板载 onboard)、ens33(插槽 slot)、enp0s3(PCI 位置);wl开头为无线网卡。en= 以太网,o= 板载,s= 热插拔槽,p= PCI 总线位置。
6.2 查看网络信息
bash
ip addr # 或 ip a:查看网卡和 IP(替代 ifconfig)
ip route # 查看路由表/默认网关(替代 route -n)
ss -tunlp # 查看监听端口(替代 netstat)
ip neigh # ARP 表6.3 RHEL/Rocky:nmcli 配置
RHEL 系用 NetworkManager 管理网络,命令行工具 nmcli、文本界面 nmtui。
bash
nmcli connection show # 查看连接(con)
nmcli device status # 查看设备(d)
# 修改连接(静态 IP)
nmcli con mod ens33 \
ipv4.method manual \
ipv4.addresses 10.0.0.13/24 \
ipv4.gateway 10.0.0.2 \
ipv4.dns "223.5.5.5,114.114.114.114"
nmcli con up ens33 # 激活生效
# 自动获取(DHCP)
nmcli con mod ens33 ipv4.method auto && nmcli con up ens33- 新系统连接配置文件在
/etc/NetworkManager/system-connections/(keyfile 格式); - 旧版在
/etc/sysconfig/network-scripts/ifcfg-ens33。
6.4 Ubuntu:netplan 配置
Ubuntu 18.04+ 用 netplan 管理,配置文件在 /etc/netplan/*.yaml(YAML 严格缩进):
yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- 10.0.0.13/24
routes:
- to: default
via: 10.0.0.2
nameservers:
addresses: [223.5.5.5, 114.114.114.114]bash
sudo netplan generate
sudo netplan apply # 应用生效
# 桌面版用 NetworkManager 时 renderer: NetworkManagerDHCP 写法:eth0: {dhcp4: true}。
6.5 主机名
bash
hostname # 查看
sudo hostnamectl set-hostname hg-blog # 永久修改(写入 /etc/hostname)6.6 路由配置
bash
ip route # 查看默认路由
sudo ip route add default via 10.0.0.2 # 添加默认网关
sudo ip route add 192.168.2.0/24 via 10.0.0.254 # 添加静态路由
sudo ip route del 192.168.2.0/24 # 删除6.7 连通性诊断思路
排障遵循由近及远、分层排查:
- 看网卡/IP:
ip a; - ping 本机、ping 网关(二层/本地);
- ping 外网 IP(如
ping 223.5.5.5,测路由); - ping 域名(不通则 DNS 问题);
- 看端口/服务:
ss -tunlp、curl; - 抓包:
tcpdump。
完整命令参数见 网络命令速查。
七、网卡高可用(了解)
7.1 网卡绑定 Bond
把多块物理网卡绑定成一个逻辑接口,实现冗余(高可用)和/或带宽叠加。
| mode | 名称 | 说明 |
|---|---|---|
| 0 | balance-rr | 轮询,负载均衡+容错(需交换机配合) |
| 1 | active-backup | 主备,只有一块工作,故障切换(最常用、无需特殊交换机) |
| 2 | balance-xor | 基于 MAC 哈希 |
| 3 | broadcast | 广播,所有网卡发相同数据 |
| 4 | 802.3ad | LACP 动态链路聚合(需交换机支持) |
| 5 | balance-tlb | 发送负载均衡 |
| 6 | balance-alb | 收发负载均衡 |
7.2 team vs bond
- bond:传统内核绑定,成熟稳定;
- team:新一代链路聚合,用户态守护进程、模块化设计、支持更多负载策略和更好的性能监控;
- 新项目可评估 team,但 bond 资料更全、兼容性好,生产仍常用。
7.3 bridge 桥接
Linux 网桥(bridge) 工作在二层,像虚拟交换机把多个接口(含虚拟机/容器网卡)桥接在一起,虚拟化/容器场景常用(brctl、bridge link)。
面试自测
- LAN、MAN、WAN 的区别?常见网络拓扑有哪些?
- 说一下 OSI 七层及每层的典型协议和设备。
- TCP/IP 模型和 OSI 模型如何对应?
- 什么是数据封装和解封装?段、包、帧分别是哪一层的 PDU?
- IPv4 私有地址有哪些网段?
- 子网掩码/CIDR 的作用?借位划分子网如何计算可用主机数?
- 把 /24 划成 /26 得到几个子网、每个多少可用主机?
- ICMP、ARP 分别做什么?
- TCP 三次握手、四次挥手的过程?为什么握手三次、挥手四次?
- TIME_WAIT 状态的作用?
- TCP 和 UDP 的区别和各自适用场景?
- MAC 地址和 IP 地址的区别?VLAN 解决什么问题?
- RHEL 的 nmcli 和 Ubuntu 的 netplan 如何配置静态 IP?
- 网络不通的分层排查思路?
- bond mode 0、1、4 的区别?bond 和 team 有何不同?