网络基础回顾:OSI七层模型与TCP/IP四层模型、数据封装与解封装过程、关键性能指标
各位同学,咱们今天聊点基础,但别小看基础。我见过太多人,一上来就追着高并发、零拷贝跑,结果连数据包怎么封装都说不清楚。嗯,这就像盖楼不打地基,早晚要塌。
我个人习惯,每次接手一个新项目,第一件事就是拉出网络模型图,重新过一遍。不是为了装样子,是真的能帮你快速定位问题。今天咱们就把OSI七层、TCP/IP四层、数据封装解封装,还有那几个关键指标,一次性捋清楚。
OSI七层模型:理论上的完美蓝图
OSI七层模型,说白了就是国际标准化组织(ISO)给网络通信画的一张“理想蓝图”。它把通信过程拆成了七层,每一层只管自己的事。
| 层级 | 名称 | 核心职责 | 常见协议/设备 |
|---|---|---|---|
| 7 | 应用层 | 为用户提供网络服务接口 | HTTP、FTP、SMTP |
| 6 | 表示层 | 数据格式转换、加密、压缩 | SSL/TLS、JPEG、ASCII |
| 5 | 会话层 | 建立、管理、终止会话 | NetBIOS、RPC |
| 4 | 传输层 | 端到端可靠传输、流量控制 | TCP、UDP |
| 3 | 网络层 | 路由选择、逻辑寻址 | IP、ICMP、路由器 |
| 2 | 数据链路层 | 帧封装、MAC寻址、差错检测 | 以太网、交换机、PPP |
| 1 | 物理层 | 比特流传输、电气特性 | 网线、光纤、集线器 |
我的经验: 我在项目中遇到过一个问题,两台服务器之间丢包严重。查了半天,最后发现是物理层的网线水晶头接触不良。你想想看,应用层调得再好,物理层断了,一切白搭。所以别只盯着上层,底层往往才是坑。
TCP/IP四层模型:实战中的“瘦身版”
OSI七层虽然完美,但太复杂了。实际互联网用的是TCP/IP四层模型。它把OSI的上三层合并成了应用层,把数据链路层和物理层合并成了网络接口层。
- 应用层:HTTP、DNS、FTP 都在这一层。说白了,你写的代码大部分时间都在跟这层打交道。
- 传输层:TCP 和 UDP 的老家。TCP 可靠但慢,UDP 快但不可靠。选哪个?看业务场景。
- 网络层:IP 协议的地盘。负责把数据包从源地址送到目标地址,中间怎么走,路由器说了算。
- 网络接口层:负责把数据变成电信号或光信号,扔到网线或光纤里。
避坑指南: 我曾经在调优一个视频直播系统时,发现延迟总是忽高忽低。后来发现是传输层用了TCP,丢包重传导致卡顿。换成UDP + 应用层丢帧策略,问题直接解决。记住,不是所有场景都适合TCP。
数据封装与解封装:数据包的“俄罗斯套娃”
数据从应用层一路往下走,每经过一层,都会加上一个头部。这个过程叫封装。到了接收端,再一层层拆掉头部,叫解封装。
我画了一张图,帮你理解这个过程:
注意: 每个头部都有开销。TCP头部最少20字节,IP头部也是20字节,再加上帧头部14字节。你想想看,如果你每次只发1个字节的数据,实际传输的却是55个字节,效率只有1.8%。这就是为什么我们要用批处理、合并请求的原因。
关键性能指标:衡量网络好坏的“四大金刚”
做性能优化,你得先知道怎么衡量。我个人习惯,每次压测必看这四个指标:带宽、延迟、抖动、丢包率。
1. 带宽
带宽就是单位时间内能传输的数据量。好比水管有多粗。100Mbps的带宽,理论上每秒能传12.5MB数据。
但注意: 带宽是理论值,实际能跑多少,还得看协议开销、网络拥塞。我在项目中遇到过,买了1000M带宽,实际只能跑200M,最后发现是网卡驱动没更新。
2. 延迟
延迟是数据从源到目的地的时间。单位是毫秒。你玩游戏卡不卡,主要看延迟。
- 传播延迟: 光速限制,北京到上海大约10ms。
- 处理延迟: 路由器、交换机处理数据包的时间。
- 排队延迟: 数据包在队列里等着被处理的时间。
我的经验: 有一次做金融交易系统优化,延迟要求小于1毫秒。我们最后把服务器直接放在交易所机房里,物理距离缩短到10米以内。你想想看,光速再快,也架不住距离远啊。
3. 抖动
抖动是延迟的变化量。说白了,就是延迟忽高忽低。这对实时通信(视频会议、在线游戏)影响巨大。
为什么会有抖动?因为网络拥塞、路由变化、队列调度。我曾经优化过一个VoIP系统,平均延迟只有50ms,但抖动高达30ms,结果通话质量一塌糊涂。后来用了抖动缓冲(Jitter Buffer),才稳住。
4. 丢包率
丢包率是丢失的数据包占总发送量的比例。TCP遇到丢包会重传,但重传会导致延迟增加。UDP遇到丢包就直接丢了。
正常网络: 丢包率应低于0.1%。超过1%就要警惕了。
避坑指南: 我曾经排查过一个丢包问题,发现是交换机的缓冲区太小,流量一上来就丢包。解决办法很简单:换个大缓冲区交换机,或者做流量整形。别一上来就怀疑代码,硬件也可能背锅。
一张图总结本章核心
好了,这一章的内容就这些。记住,网络基础不是背出来的,是用出来的。下次遇到网络问题,先想想是哪个层出了问题,再对症下药。
想要更多资料,联系可可