网络通信基础
一、网络模型
1. OSI 七层模型
| 层 | 名称 | 功能 | 协议示例 |
|---|---|---|---|
| 7 | 应用层 | 用户接口、应用程序 | HTTP、FTP、SMTP、DNS |
| 6 | 表示层 | 数据格式转换、加密 | SSL、TLS、JPEG、MPEG |
| 5 | 会话层 | 会话管理、同步 | SQL、RPC、NetBIOS |
| 4 | 传输层 | 端到端通信、可靠性 | TCP、UDP |
| 3 | 网络层 | 路由转发、IP 寻址 | IP、ICMP、ARP |
| 2 | 数据链路层 | 帧传输、错误检测 | Ethernet、PPP、Wi-Fi |
| 1 | 物理层 | 比特流传输 | 双绞线、光纤、无线电 |
记忆口诀: 应表会传网数物(应用、表示、会话、传输、网络、数据链路、物理)
2. TCP/IP 四层模型
| 层 | 对应 OSI | 功能 | 协议 |
|---|---|---|---|
| 应用层 | 5-7 | 应用程序接口 | HTTP、FTP、DNS、SMTP |
| 传输层 | 4 | 端到端通信 | TCP、UDP |
| 网络层 | 3 | IP 寻址和路由 | IP、ICMP、ARP |
| 网络接口层 | 1-2 | 物理和数据链路 | Ethernet、Wi-Fi |
TCP/IP 模型更实用,是实际网络通信的基础。
3. 数据封装过程
应用层数据
↓
传输层(添加 TCP/UDP 头)
↓
网络层(添加 IP 头)
↓
数据链路层(添加 MAC 头)
↓
物理层(转换为电信号/光信号)示例:
HTTP 请求
↓ 添加 TCP 头
TCP 段
↓ 添加 IP 头
IP 数据包
↓ 添加以太网头
以太网帧
↓ 转换为比特流
物理信号二、IP 协议
1. IP 地址
IPv4 地址:
- 32 位,4 个字节
- 格式:
192.168.1.1 - 范围:
0.0.0.0到255.255.255.255 - 约 42 亿个地址
IPv6 地址:
- 128 位,16 个字节
- 格式:
2001:0db8:85a3:0000:0000:8a2e:0370:7334 - 几乎无限的地址空间
IP 地址分类:
- A 类:
1.0.0.0-126.255.255.255(大型网络) - B 类:
128.0.0.0-191.255.255.255(中型网络) - C 类:
192.0.0.0-223.255.255.255(小型网络) - D 类:
224.0.0.0-239.255.255.255(组播) - E 类:
240.0.0.0-255.255.255.255(保留)
私有 IP 地址:
10.0.0.0/8-10.0.0.0到10.255.255.255172.16.0.0/12-172.16.0.0到172.31.255.255192.168.0.0/16-192.168.0.0到192.168.255.255
2. 子网掩码
作用: 区分网络地址和主机地址
示例:
IP 地址:192.168.1.100
子网掩码:255.255.255.0
网络地址:192.168.1.0
主机地址:0.0.0.100CIDR 表示法:
192.168.1.0/24- 前 24 位是网络地址10.0.0.0/8- 前 8 位是网络地址
3. 路由
路由表:
- 决定数据包如何转发
- 包含目标网络、下一跳地址、接口等信息
路由类型:
- 直连路由 - 同一网段
- 静态路由 - 手动配置
- 动态路由 - 通过路由协议学习(RIP、OSPF、BGP)
三、DNS(域名系统)
1. DNS 的作用
将域名转换为 IP 地址:
www.example.com → 192.0.2.12. DNS 查询过程
1. 浏览器查询本地 DNS 缓存
2. 查询 hosts 文件
3. 查询本地 DNS 服务器(递归查询)
4. 本地 DNS 服务器查询根域名服务器
5. 根域名服务器返回 .com 域名服务器地址
6. 查询 .com 域名服务器
7. .com 域名服务器返回 example.com 域名服务器地址
8. 查询 example.com 域名服务器
9. 返回 www.example.com 的 IP 地址3. DNS 记录类型
| 类型 | 说明 | 示例 |
|---|---|---|
| A | IPv4 地址 | example.com A 192.0.2.1 |
| AAAA | IPv6 地址 | example.com AAAA 2001:db8::1 |
| CNAME | 别名 | www.example.com CNAME example.com |
| MX | 邮件服务器 | example.com MX 10 mail.example.com |
| TXT | 文本记录 | example.com TXT "v=spf1 ..." |
| NS | 域名服务器 | example.com NS ns1.example.com |
4. DNS 缓存
缓存层级:
- 浏览器缓存
- 操作系统缓存
- 路由器缓存
- ISP DNS 服务器缓存
TTL(Time To Live): 缓存过期时间
四、网络设备
1. 交换机(Switch)
功能:
- 工作在数据链路层(Layer 2)
- 根据 MAC 地址转发数据帧
- 隔离冲突域
工作原理:
- 学习 MAC 地址和端口的映射关系
- 建立 MAC 地址表
- 根据目标 MAC 地址转发到对应端口
2. 路由器(Router)
功能:
- 工作在网络层(Layer 3)
- 根据 IP 地址转发数据包
- 连接不同网络
工作原理:
- 维护路由表
- 根据目标 IP 地址查找路由表
- 转发到下一跳路由器或目标网络
3. 网关(Gateway)
功能:
- 连接不同协议的网络
- 通常指默认网关(Default Gateway)
- 本地网络访问外网的出口
五、常见网络问题
1. 网络延迟(Latency)
定义: 数据从源到目的地所需的时间
影响因素:
- 物理距离
- 网络拥塞
- 路由跳数
- 传输介质
优化方法:
- 使用 CDN
- 减少路由跳数
- 优化网络路径
2. 带宽(Bandwidth)
定义: 网络传输数据的能力
单位:
- bps(bits per second)
- Kbps、Mbps、Gbps
带宽 vs 延迟:
- 带宽 - 管道宽度(能同时传输多少数据)
- 延迟 - 数据到达时间(数据到达需要多长时间)
3. 丢包(Packet Loss)
原因:
- 网络拥塞
- 硬件故障
- 网络错误
影响:
- TCP 会重传,增加延迟
- UDP 不会重传,数据丢失
4. 网络拥塞
原因:
- 流量超过网络容量
- 路由选择不当
- 网络设备性能瓶颈
解决方案:
- 流量控制
- 拥塞控制(TCP)
- 增加带宽
- 优化路由
六、网络协议栈
1. 应用层协议
- HTTP/HTTPS - 网页浏览
- FTP - 文件传输
- SMTP - 邮件发送
- POP3/IMAP - 邮件接收
- DNS - 域名解析
- SSH - 远程登录
- Telnet - 远程登录(不安全)
2. 传输层协议
- TCP - 可靠传输
- UDP - 快速传输
3. 网络层协议
- IP - 网络寻址
- ICMP - 错误报告(ping)
- ARP - IP 到 MAC 地址映射
4. 数据链路层协议
- Ethernet - 以太网
- PPP - 点对点协议
- Wi-Fi - 无线网络
七、常见面试题
Q1: OSI 七层模型和 TCP/IP 模型的区别?
| 特性 | OSI 模型 | TCP/IP 模型 |
|---|---|---|
| 层数 | 7 层 | 4 层 |
| 设计目的 | 理论模型 | 实际应用 |
| 使用 | 教学、理论 | 实际网络通信 |
| 对应关系 | 严格分层 | 灵活对应 |
Q2: 为什么需要子网划分?
- 提高网络效率 - 减少广播域
- 安全隔离 - 不同子网隔离
- IP 地址管理 - 合理分配 IP 地址
- 路由优化 - 简化路由表
Q3: DNS 查询为什么使用 UDP?
原因:
- DNS 查询数据包小,UDP 开销小
- 查询速度快
- 如果 UDP 失败,可以回退到 TCP
DNS over TCP:
- 响应数据包超过 512 字节
- 区域传输(Zone Transfer)
Q4: 如何判断两个 IP 是否在同一网段?
方法:
- 获取 IP 地址和子网掩码
- 计算网络地址:
IP & 子网掩码 - 比较网络地址是否相同
示例:
IP1: 192.168.1.100
IP2: 192.168.1.200
子网掩码: 255.255.255.0
网络地址1: 192.168.1.100 & 255.255.255.0 = 192.168.1.0
网络地址2: 192.168.1.200 & 255.255.255.0 = 192.168.1.0
相同,在同一网段Q5: 公网 IP 和私网 IP 的区别?
| 特性 | 公网 IP | 私网 IP |
|---|---|---|
| 唯一性 | 全球唯一 | 局域网内唯一 |
| 路由 | 可在互联网路由 | 不可在互联网路由 |
| 获取 | 向 ISP 申请 | 局域网内分配 |
| 用途 | 访问互联网 | 局域网通信 |
| NAT | 不需要 | 需要 NAT 转换 |
八、网络工具
1. ping
功能: 测试网络连通性
bash
ping www.example.com
ping 192.168.1.1
ping -c 4 www.example.com # Linux/Mac,发送 4 个包
ping -n 4 www.example.com # Windows,发送 4 个包2. traceroute / tracert
功能: 追踪数据包路径
bash
traceroute www.example.com # Linux/Mac
tracert www.example.com # Windows3. netstat
功能: 显示网络连接、路由表、接口统计
bash
netstat -an # 显示所有连接
netstat -rn # 显示路由表
netstat -i # 显示接口统计
netstat -p tcp # 显示 TCP 连接4. ifconfig / ipconfig
功能: 显示和配置网络接口
bash
ifconfig # Linux/Mac
ipconfig # Windows
ipconfig /all # Windows,显示详细信息5. nslookup / dig
功能: DNS 查询工具
bash
nslookup www.example.com
dig www.example.com6. tcpdump / Wireshark
功能: 网络数据包捕获和分析
bash
tcpdump -i eth0 -n host 192.168.1.1九、网络安全基础
1. 防火墙
功能:
- 控制网络流量
- 阻止未授权访问
- 基于规则过滤数据包
类型:
- 包过滤防火墙 - 基于 IP 和端口
- 状态检测防火墙 - 跟踪连接状态
- 应用层防火墙 - 基于应用协议
2. VPN(虚拟专用网络)
功能:
- 加密通信
- 远程访问
- 绕过地理限制
协议:
- PPTP
- L2TP/IPSec
- OpenVPN
- WireGuard
3. 端口
常见端口:
- 20, 21 - FTP
- 22 - SSH
- 23 - Telnet
- 25 - SMTP
- 53 - DNS
- 80 - HTTP
- 443 - HTTPS
- 3306 - MySQL
- 5432 - PostgreSQL
- 6379 - Redis
- 8080 - HTTP 代理
端口范围:
- 0-1023 - 系统端口(需要 root 权限)
- 1024-49151 - 注册端口
- 49152-65535 - 动态/私有端口
十、最佳实践
- ✅ 合理规划网络 - 使用子网划分
- ✅ 配置防火墙 - 只开放必要端口
- ✅ 使用 HTTPS - 加密通信
- ✅ 监控网络 - 及时发现异常
- ✅ 备份配置 - 网络设备配置备份
- ✅ 文档记录 - 记录网络拓扑和配置
- ✅ 定期更新 - 更新网络设备固件
- ✅ 访问控制 - 限制网络访问权限
- ❌ 不要使用默认密码 - 修改默认配置
- ❌ 不要忽略日志 - 定期查看网络日志