1. 计算机网络基础概念速记
计算机网络是现代信息技术的基石,理解其核心原理对开发者、运维人员乃至普通用户都至关重要。今天我想分享一些在实际工作中最常遇到的网络知识点,这些内容经过我多年实践验证,能帮你快速建立网络知识框架。
先说说网络分层模型。OSI七层模型是理论标准,而TCP/IP四层模型更贴近实际应用。我常告诉团队新人:"记住TCP/IP模型就够了,但面试时得知道OSI七层分别是什么。"物理层解决的是比特流传输,数据链路层负责帧的传递,网络层处理IP寻址,传输层保障端到端通信。
关键记忆点:TCP/IP应用层对应OSI的上三层(应用层+表示层+会话层),这种对应关系经常在技术面试中被问到。
2. IP协议与子网划分实战
IP地址是网络世界的门牌号,32位的IPv4地址通常用点分十进制表示。我在配置服务器时最常操作的就是子网掩码,它决定了哪些主机在同一个局域网内。比如255.255.255.0(/24)意味着前24位是网络号,后8位是主机号。
子网划分有个实用技巧:遇到192.168.1.0/24这样的网络时,快速心算可用IP范围是192.168.1.1到192.168.1.254(0和255有特殊用途)。曾经有次线上事故就是因为有人把网关设成了.255地址,导致整个子网通信异常。
2.1 CIDR表示法详解
无类域间路由(CIDR)是现代网络的基础。像172.16.0.0/12这样的表示法,斜杠后的数字表示网络前缀长度。我整理了一个快速换算表:
| 子网掩码 | CIDR表示 | 可用主机数 |
|---|---|---|
| 255.255.255.0 | /24 | 254 |
| 255.255.254.0 | /23 | 510 |
| 255.255.252.0 | /22 | 1022 |
3. TCP协议的三次握手与四次挥手
TCP的可靠传输机制是网络编程的核心。三次握手建立连接的过程就像打电话:
- 客户端发送SYN=1, seq=x("喂,听得到吗?")
- 服务端回复SYN=1, ACK=1, seq=y, ack=x+1("听到了,你听得到我吗?")
- 客户端发送ACK=1, seq=x+1, ack=y+1("听到了,开始说吧")
四次挥手关闭连接时容易遇到TIME_WAIT状态。我曾遇到服务器大量连接处于TIME_WAIT导致端口耗尽的情况,通过调整内核参数解决了问题:
bash复制# 减少TIME_WAIT时间
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
# 启用TIME_WAIT重用
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
4. HTTP协议关键知识点
HTTP/1.1的持久连接特性显著提升了网页加载速度。在分析网站性能时,我发现这些头部字段特别重要:
- Connection: keep-alive
- Content-Length
- Transfer-Encoding: chunked
HTTP状态码需要熟记:
- 2xx 成功(200 OK,206 Partial Content)
- 3xx 重定向(301永久,302临时)
- 4xx 客户端错误(404 Not Found)
- 5xx 服务端错误(502 Bad Gateway)
4.1 HTTPS安全机制
HTTPS=HTTP+TLS/SSL,采用混合加密体系:
- 非对称加密交换对称密钥(RSA/ECDHE)
- 对称加密传输数据(AES)
- 数字证书验证身份(X.509)
配置Nginx支持HTTPS时,我推荐这样优化:
nginx复制ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
5. 常见网络设备与拓扑
交换机工作在数据链路层,根据MAC地址转发帧;路由器工作在网络层,基于IP地址路由数据包。在企业网络中,我通常这样设计拓扑:
code复制[互联网]
|
[防火墙]
|
[核心交换机]
|-------[接入交换机]---[办公PC]
|-------[服务器集群]
5.1 VLAN配置实践
虚拟局域网(VLAN)可以逻辑隔离广播域。在Cisco交换机上配置VLAN的命令序列:
cisco复制enable
configure terminal
vlan 10
name Marketing
exit
interface gigabitethernet0/1
switchport mode access
switchport access vlan 10
end
6. 网络排错实用命令
这些命令是我每天都会用到的排错工具:
ping- 测试连通性traceroute/tracert- 追踪路由netstat- 查看网络状态tcpdump- 抓包分析nslookup/dig- DNS查询
一个真实的排错案例:某次服务突然无法访问,通过以下步骤定位问题:
bash复制# 1. 测试基本连通性
ping 192.168.1.100 # 通
ping www.example.com # 不通
# 2. 检查DNS解析
nslookup www.example.com # 无响应
# 3. 更换DNS服务器测试
echo "nameserver 8.8.8.8" > /etc/resolv.conf
# 4. 确认问题根源是内网DNS服务器故障
7. 无线网络关键技术
802.11ac Wave2支持MU-MIMO技术,显著提升多设备并发性能。在部署企业WiFi时,我遵循这些原则:
- 2.4GHz频段只用1/6/11信道避免干扰
- 5GHz频段优先使用DFS信道
- 信号强度保持在-65dBm以上
WPA3相比WPA2的主要改进:
- 改用SAE替代PSK防止离线字典攻击
- 提供前向保密性
- 192位企业级安全套件
8. 云计算网络基础
VPC(虚拟私有云)是现代云架构的核心。AWS的典型网络配置包括:
- 公有子网(带Internet Gateway)
- 私有子网(通过NAT网关出站)
- 安全组(实例级防火墙)
- 网络ACL(子网级防火墙)
我在AWS上创建VPC的步骤:
bash复制# 创建VPC
aws ec2 create-vpc --cidr-block 10.0.0.0/16
# 创建子网
aws ec2 create-subnet --vpc-id vpc-123 --cidr-block 10.0.1.0/24
# 配置路由表
aws ec2 create-route-table --vpc-id vpc-123
aws ec2 associate-route-table --route-table-id rtb-123 --subnet-id subnet-456
9. 网络性能优化技巧
TCP调优参数对高并发服务至关重要。在Linux服务器上我通常会调整:
bash复制# 增大TCP窗口大小
echo "net.ipv4.tcp_window_scaling = 1" >> /etc/sysctl.conf
# 启用快速回收TIME_WAIT套接字
echo "net.ipv4.tcp_tw_recycle = 1" >> /etc/sysctl.conf
# 增大最大连接数
echo "net.core.somaxconn = 32768" >> /etc/sysctl.conf
sysctl -p
对于Web服务器,这些优化特别有效:
- 启用HTTP/2
- 开启Brotli压缩
- 合理设置缓存头
- 使用CDN分发静态资源
10. 网络安全防护要点
防火墙规则配置遵循最小权限原则。我常用的iptables示例:
bash复制# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 开放SSH端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 默认拒绝策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
防御DDoS攻击的实践方案:
- 启用SYN Cookie防护
- 配置速率限制
- 使用云防护服务
- 部署WAF过滤恶意请求
网络知识需要持续更新,我习惯每周花1小时阅读RFC文档和技术博客。最近在研究QUIC协议如何改进HTTP/3的传输效率,这可能会改变未来的网络架构设计。