news 2026/10/11 17:01:19

TCP/IP协议栈实战:从分层原理到网络排障全攻略

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TCP/IP协议栈实战:从分层原理到网络排障全攻略

干了十几年网络方向,从写代码到搞运维再到带项目,我越来越确认一件事:TCP/IP 协议栈根本不是一门“考完就扔”的课,而是几乎每天都要用的保命技能。你输入一个网址回车,背后就串起了 DHCP 分配地址、DNS 解析域名、TCP 建立连接、TLS 加密握手、HTTP 请求响应、TCP 挥手释放这一整条链路;你调接口发现偶尔超时,抓完包看到的往往不是业务代码的锅,而是重传、丢包、接收窗口缩零这些传输层的现象。这篇文章把 TCP/IP 协议栈从物理层到应用层完整串一遍,重点放在“为什么这么设计”和“排查时怎么用”上。适合后端开发、运维、网络工程师,也在自学计算机网络、想真正学透而不是背概念的同学。我会大量使用实际排查里的例子,尽量说人话,把课本上没讲透的坑摊开来聊。

1. 学协议栈的正确姿势:先建立分层直觉

1.1 为什么分层比背协议更重要

很多人学 TCP/IP 最大的误区,就是把七层模型背得滚瓜烂熟,真遇到问题却不知道从哪层查起。我自己的经验是,分层最大的价值不是考试,而是给你一张“排查地图”:网络出了问题,先判断是物理层没通、链路层有冲突、网络层路由不对、传输层丢包重传,还是应用层协议解析失败。定位到层,问题基本就解决了一半。

举个最典型的场景。某天线上服务告警,A 同学第一反应是看应用日志,结果发现是上游调用超时;再一层层往下查,最后在传输层看到大量 TCP 重传,才意识到是机房交换机的一个端口出现了大量丢包。如果没有分层思维,你会一直在应用日志里打转,永远找不到根因。这就是分层直觉的价值:每一层只负责自己的事,上层不需要关心下层怎么实现,排查时也按这个边界一层层切。

1.2 两个模型一张图:TCP/IP 四层模型到底对应什么

教科书上通常讲 OSI 七层,但实际工程里我们是按 TCP/IP 四层模型来思考的:链路层、网络层、传输层、应用层。链路层管同一物理网络内的帧传输,核心是 MAC 地址和以太网协议;网络层管跨网络的寻址和路由,核心是 IP 协议;传输层管端到端的连接与数据可靠性,核心是 TCP 和 UDP;应用层就是 HTTP、DNS、HTTPS 这些我们天天打交道的协议。

这四层之间靠“封装”串起来。你发一个 HTTP 请求,应用层先把报文拼好,传输层给它加上 TCP 头(源端口、目的端口、序号等),网络层再加上 IP 头(源 IP、目的 IP),链路层最后加上 MAC 头和帧尾,变成一串二进制比特流从网卡发出去。接收方再一层层解封装,像剥洋葱一样。很多人不理解为什么抓包时看到的不只是 HTTP 报文,就是因为每一层都加了各自的头。我建议初学者抓一次包,亲手把每一层的头部字段对着看一遍,比看十遍书都管用。

2. 链路层:网线、交换机与 MAC 地址的日常

2.1 MAC 地址、ARP 与数据帧:局域网是怎么找到彼此的

链路层解决的核心问题是:在同一局域网内,数据帧怎么从一台机器精确送到另一台机器。这里的“门牌号”是 MAC 地址,48 位,出厂时写在网卡上。IP 地址是逻辑地址,可以变;MAC 地址是物理地址,基本不变。数据在局域网里传输,靠的其实是 MAC 地址,而不是 IP 地址。

那问题来了:我知道对方 IP,怎么知道它的 MAC?这就轮到 ARP(地址解析协议)出场。发送方先查自己的 ARP 缓存表,没有就去广播一条“谁是 192.168.1.100,请告诉我你的 MAC”,目标机器收到后单播回复,两边把映射记到缓存里,下次直接用。我在排查时经常用一条命令查看 ARP 表,Windows 是arp -a,Linux 是ip neigh。这套机制有个常见坑:如果局域网里两台机器 IP 配置相同,ARP 缓存就会在两个 MAC 之间反复横跳,导致流量时通时断。这种问题光看应用日志根本发现不了,查 ARP 表一眼就能看出来。

2.2 交换机、广播域与 MTU:容易忽略的“看不见的手”

交换机工作在链路层,它维护一张 MAC 地址表,学到某个 MAC 从哪个端口进来,之后发往该 MAC 的帧就只从对应端口出去,不像老式集线器那样无脑广播。但交换机隔离不了广播域,ARP 请求、DHCP 发现这些广播帧还是会传遍整个二层网络。这也是为什么大型网络要划分 VLAN——把一个物理局域网切成多个逻辑广播域,广播不会互相穿透,既能减少噪音,也能降低安全风险。

链路层还有个日常排障绕不开的参数:MTU(最大传输单元)。以太网默认 1500 字节,意思是链路层帧里承载的数据部分最多 1500 字节。如果上层下来的 IP 包超过这个值,就需要分片。很多“网页打不开但 ping 得通”的诡异故障,根子就是 MTU 不一致:ping 用小包能过,真实 HTTP 请求带着大包过不去,被中间设备丢弃或者分片异常。排查方法很简单,逐步加大 ping 包大小看哪里开始不通。我处理过一个跨地域专线丢包的案例,最后发现是一条隧道链路 MTU 被设成了 1400,业务大包全部被卡住,调齐 MTU 后立刻恢复。这种问题不抓链路层,很难想到这个方向。

3. 网络层:IP 寻址、子网划分与路由转发

3.1 子网掩码与 CIDR:会算这些,你才能看懂网络规划

网络层的核心是 IP 协议。IPv4 地址 32 位,为了让网络可管理,人们把地址分成网络部分和主机部分,边界由子网掩码决定。比如 192.168.1.0/24,意味着前 24 位是网络号,后 8 位是主机号,这个子网能容纳 2 的 8 次方减 2 个可用地址(去掉网络地址和广播地址),也就是 254 个。

实际规划时经常要做子网划分。比如公司拿到一个 192.168.1.0/24 的段,要分给 4 个部门,每个部门约 50 台机器。最简单的做法是把它切成 4 个 /26 子网,每个 /26 有 64 个地址,可用 62 个。/26 的掩码是 255.255.255.192,四个子网分别是 192.168.1.0/26、192.168.1.64/26、192.168.1.128/26、192.168.1.192/26。注意每个子网的第一个地址是网络地址,最后一个广播地址,都不能配给主机。我见过不少新人在云上开 VPC 时把整个大段都填进去,结果路由表写不全,网段之间互相不通,其实就是子网划分没想清楚。

3.2 默认网关与路由表:数据包怎么走出局域网

一台机器要访问局域网外的地址,光有 IP 和掩码不够,还得知道默认网关。数据包到达网关后,由网关根据路由表决定下一跳。路由表的本质是一张“去哪个网段走哪个出口”的表,匹配规则是最长前缀匹配:同时匹配多条路由时,子网掩码最长(最精确)的那条生效。这也是为什么 0.0.0.0/0 的默认路由永远最后被选中,因为它代表任何地址,精确度最低。

排查网络不通时,我习惯按这个顺序看:先ip addr看本机 IP、掩码配没配对,再ip route看默认路由在不在,然后 ping 网关,通了再 ping 网关之外的地址。如果 ping 本网段通、ping 网关不通,大概率是二层问题,查网线、查交换机端口、查 ARP;如果 ping 网关通、ping 外网不通,问题在网络层之上的路由策略,比如网关设备没有配置 NAT 或路由没放行。这样一层层切,很少会有查不出来的问题。

3.3 ICMP 与 TTL:ping 和 traceroute 背后的原理

很多人把 ping 当成“测连通性”的黑盒工具,其实它的原理很简单:发送 ICMP 回显请求报文,对方收到后回复一个回显应答报文,通过往返时间(RTT)和丢包率判断链路质量。ICMP 不承载用户数据,它是网络层的“信使”,专门用来传递错误报告和控制信息。比如路由器发现一个 IP 包超过 TTL(生存时间)就会丢掉,并回一个 ICMP 超时报文,traceroute 正是利用这一点:从 TTL=1 开始发包,每过一跳 TTL 加 1,利用沿途路由器返回的超时报文,把每一跳的地址和延迟打出来。

实战里我常用 traceroute 判断“到底慢在哪一段”。有一次某个客户反馈跨地区访问很慢,我 traceroute 一看,前面几跳延迟都正常,到了某个中转节点延迟突然从 20ms 跳到 200ms,基本就能锁定瓶颈在那一跳。当然现在很多骨干设备出于安全策略不回 ICMP,traceroute 会显示* * *,这时候要结合多个工具交叉判断,不能单凭它就下结论。

4. 传输层:TCP 与 UDP 的信任与效率之争

4.1 三次握手与四次挥手:连接的生命周期

TCP 是面向连接的可靠传输协议,建立连接靠三次握手:客户端发 SYN(同步序列号),服务端回 SYN+ACK(同步并确认),客户端再回 ACK(确认),连接建立。为什么不是两次?因为 TCP 要确认双方的收发能力都正常,同时同步初始序列号。两次握手有个致命问题:如果客户端第一个 SYN 因为网络延迟重复到达,服务端会误以为这是新连接,白白建立一条空连接,浪费资源。三次握手能让双方都对“对方确实收到了我的报文”这件事有把握。

断开连接则是四次挥手:主动方发 FIN 表示“我没有数据要发了”,被动方回 ACK 确认,然后被动方可能还有数据要发,发完后也发 FIN,主动方回 ACK,连接关闭。要注意的是主动关闭方最后会进入 TIME_WAIT 状态,要等 2MSL(两倍最大报文生存时间)才彻底释放。这是因为最后一个 ACK 可能丢失,如果对方重发 FIN,主动方还能再响应;同时保证本次连接内迟到的报文在网络中完全消失,不会被复用同一四元组的新连接误收。很多后端同学发现服务器上有大量 TIME_WAIT,就急着改参数,其实这是 TCP 的自我保护机制,不一定需要处理。后面我会专门讲哪些情况该调、哪些情况别乱动。

4.2 滑动窗口与拥塞控制:可靠传输是如何炼成的

TCP 的可靠性不只是“发了等确认”这么简单,那样效率太低。它引入滑动窗口机制:发送方可以一次性发多个报文(窗口大小内),然后根据确认情况滑动窗口继续发。接收方会在确认报文里带上自己的接收窗口大小(rwnd),告诉发送方“你最多还能发这么多,我缓冲区快满了”。如果 rwnd 变成 0,发送方就得停下来等对方腾出空间,这就是抓包时常见的“零窗口”现象。我在排一个消息推送延迟问题时,就发现是客户端处理太慢,接收窗口反复缩零,TCP 流被卡住,跟网络质量本身没关系。

拥塞控制则是从全局网络负载角度做调节,核心算法包括慢启动、拥塞避免、快速重传和快速恢复。慢启动的意思是连接刚建立时,发送窗口从一个很小的值开始,每收到一轮确认就翻倍,指数增长到慢启动阈值后转为线性增长。如果出现丢包,TCP 会认为网络可能拥塞,大幅缩小窗口重新探测。理解这些机制对排障非常有用:如果你看到传输速度呈现“快速上升-骤降-再爬坡”的锯齿状,说明链路存在丢包,TCP 在不断降速又试探,这往往是网络质量问题的信号,而不是应用代码问题。

4.3 UDP 与 TCP 怎么选:实时性优先还是可靠性优先

UDP 无连接、不保证可靠,但头部开销小、延迟低、没有重传和拥塞控制的“拖累”。选 TCP 还是 UDP,核心看业务对可靠性和实时性的取舍。文件传输、网页请求、数据库连接这类不能丢数据的业务,无脑选 TCP;音视频通话、实时游戏、DNS 查询这类可以容忍少量丢失但不能容忍高延迟的业务,更适合 UDP。比如一个视频通话,偶尔丢一两个帧人的感知很弱,但如果因为重传导致画面卡顿,体验反而更差。

这里有个容易误解的点:很多人觉得 UDP 不可靠,业务就完全没法用。其实可靠性可以在应用层补。像 QUIC 协议就是在 UDP 之上自己实现了可靠传输和拥塞控制,把连接建立和密钥协商合并,大幅降低了连接延迟。设计系统时不要被“TCP 一定对”的思维框住,先想清楚业务对延迟和丢失的容忍度,再决定传输层方案。

5. 应用层:HTTP、DNS、HTTPS 的运行内幕

5.1 HTTP 报文与连接复用:你写的每一行请求都在这里

应用层是最贴近业务的一层,而 HTTP 又是其中的绝对主角。一个 HTTP 请求报文由请求行(方法、URL、版本)、首部字段、空行和消息体组成。响应报文则包含状态行(状态码、原因短语)、首部、空行和消息体。状态码是排障的第一线索:2xx 成功、3xx 重定向、4xx 客户端问题、5xx 服务端问题。我排查线上问题时,永远先看状态码再往下挖,比如 504 是网关超时,问题大概率在上游服务;而 400 是请求格式不对,得回头查调用方的报文。

HTTP 的连接管理也很值得聊。HTTP/1.1 默认支持 keep-alive,一个 TCP 连接上可以连续发送多个请求,避免反复握手。但 HTTP/1.1 有个著名的队头阻塞问题:同一个连接上的请求必须按顺序处理,前一个慢了,后面的都排队等。HTTP/2 用多路复用解决了一部分问题,多个请求可以并行在一个连接上交错传输;但 TCP 本身的队头阻塞还在,所以业界才会往 QUIC 方向走。理解这层演进,对你排查“为什么接口并发一高就慢”非常有帮助——有时候不是代码不行,而是协议框架的限制。

5.2 DNS 解析全流程:一条 URL 背后的“寻人启事”

你输入一个域名,浏览器第一件事不是发 HTTP 请求,而是查 DNS 拿到 IP。DNS 查询流程是:先查浏览器缓存,再查操作系统缓存和 hosts 文件,都没有就向配置的 DNS 服务器发起递归查询。递归服务器会替你去问根域名服务器“这个顶级域归谁管”,再去问顶级域服务器“这个二级域归谁管”,最后找到负责该域名的权威服务器,拿到真实 IP,一路返回并缓存。

DNS 是排查“网站打不开”时的高频故障点。比如某个域名解析出来的 IP 是旧的、已经下线的服务器,客户端访问自然失败。这类问题有一个非常有效的排查思路:用nslookup或dig手动查一遍解析结果,再对比公共解析结果,看是否一致。我曾经遇到一个诡异现象:同一域名,有的机器能访问有的不能,最后发现是两台机器的 DNS 配置指向了不同服务器,而其中一台返回了过期缓存。DNS 缓存时间(TTL)设置也很有讲究,太短会导致解析量大,太长会导致切机房后客户端仍访问旧 IP 很久。

5.3 HTTPS 握手:加密不是魔法,而是密码学的工程化

HTTPS 就是在 HTTP 和 TCP 之间加了一层 TLS(传输层安全协议)。TLS 握手的核心目标有两个:确认服务器身份(通过证书),协商出会话密钥。流程大致是:客户端发 ClientHello,带上支持的加密套件和随机数;服务器回 ServerHello、证书和随机数;客户端验证证书有效后,生成预主密钥并用服务器公钥加密发给服务器;双方各自用随机数加预主密钥算出相同的会话密钥;之后改用对称密钥加密通信。

这里有三个经常被问到的点。第一,非对称加密(如 RSA)只在握手阶段用,因为慢;数据量大的正式通信用 AES 这类对称加密,因为快。第二,证书验证非常关键,如果证书过期、域名不匹配或者由不受信任的机构签发,客户端会直接报警,这也是为什么很多老系统 HTTPS 访问失败要先看系统时间和证书链。第三,TLS 1.3 把握手往返从两次压缩到一次,明显降低了连接延迟。我在优化接口响应时间时发现,每次 HTTPS 握手大约要多出几十毫秒,对高频小请求来说,启用会话复用能省掉一大部分开销。

6. 抓包实战:用一个案例打通协议栈

6.1 抓包工具怎么用:从启动到看到三次握手

理论说再多,不如亲手抓一次包。我推荐先用图形化的抓包工具 Wireshark,界面直接,过滤语法也好上手。启动后选择正确的网卡,如果抓本机回环流量别忘了选 lo 接口。为了快速定位流量,先设置抓包过滤器,比如只抓 80 端口:tcp port 80。开始抓包后,开一个浏览器访问目标网站,然后停止抓包,输入显示过滤器http或tcp,就能看到完整的请求链路。

第一次抓包一定要做的一件事:只看 TCP 三次握手。抓包列表里找到连接的第一个 SYN 报文,按 TCP 头字段看,Source Port、Destination Port、Flags(SYN)、Sequence Number。再看服务端回的 SYN+ACK,注意这个报文的 Sequence Number 是另一个值,Acknowledgment Number 是客户端序号加一。最后看客户端的 ACK,Acknowledgment Number 是服务端序号加一。把这三个报文对着看一遍,你对握手的理解会从“背步骤”变成“看懂了”。我还习惯看时间列,记录三次握手各报文之间的间隔,如果在局域网里这个间隔超过几十毫秒,就要怀疑中间有设备在做安全过滤或负载均衡转发。

6.2 典型故障复盘:网页加载慢的完整定位过程

用一个真实场景串一遍排查流程。某次业务反馈“首页加载特别慢,有时候要十几秒”,但后台监控显示 CPU、内存都正常。我先在浏览器按 F12 看到资源加载时间线,发现有个静态资源卡了很久。于是我用抓包工具抓这个资源的整个请求链路,结果看到 TCP 三次握手很慢,而且中间出现 SYN 重传。正常局域网内握手应该在一秒内完成,现在 SYN 发出去没有响应,隔了大概 3 秒重传才建立连接——这基本就锁定是链路问题而不是应用慢。

顺着这个线索去查网络层,我 ping 目标服务器,发现丢包率高达 20%,接着一层层往上查,最后定位到是一条跨机房的专线链路晚上带宽被打满,产生了严重拥塞丢包。把流量切到备用链路后,加载时间立刻恢复正常。这个案例想说明的其实是一套通用方法:先看应用层表现,再用抓包工具缩小到传输层握手或重传,接着用 ping 和 traceroute 定位网络层路径,最后找链路层和物理层的瓶颈。方向对了,定位只是时间问题。

6.3 几个必须知道的抓包结论:重传、乱序、零窗口

抓包看得多了,你会形成一套“快速读图”的能力。看到 TCP Spurious Retransmission,说明网络存在延迟波动,导致确认报文迟到,发送方误判超时重发;看到大量 Duplicate ACK,大概率是中间丢了一个包,触发快速重传;看到零窗口,说明接收方处理不过来,与应用代码性能相关而非网络。每种现象对应的排查方向完全不同,这也是抓包比看监控有价值的地方。

我建议每个后端团队都建立一个“抓包问题速查库”,把线上遇到过的典型抓包截图和结论存下来,新人排查时对照查,效率比翻书高得多。我自己就攒了不少这类案例:有因为 MTU 导致大包丢失的,有因为 TCP 延迟确认与禁用算法冲突导致小包延迟的,还有因为连接数太多把系统文件描述符耗尽、新建连接全部失败的。每一个案例单独看都是一个小知识点,放在一起来看,你会发现 TCP/IP 的工程智慧全都体现在这些“异常”里。

7. 常见问题速查与避坑实录

7.1 高频问题排查速查表

现象优先检查方向常用手段
局域网内互通但无法上外网默认网关、NAT 配置ip route、ping 网关
ping 通但网页打不开传输层到应用层:端口、HTTP、DNS抓包看 TCP 握手是否完成
网页偶发超时,时好时坏链路丢包、ARP 冲突、TCP 重传抓包统计重传率、看 ARP 表
接口响应慢但 CPU 正常下游依赖、TCP 排队、接收窗口追踪每个耗时环节、抓包看零窗口
服务器大量异常连接文件描述符耗尽、半连接队列溢出ss -s、ss -lnt、查看系统日志
跨地域传输速度上不去拥塞控制、链路 RTT、丢包iperf 测速结合抓包看窗口

这张表是我日常排障的习惯浓缩。特别提醒一句:查问题不要一上来就抓包,先看现象、先看日志、先看监控,确定大致方向再用抓包验证。抓包是“最后一块拼图”,不是第一步工具。

7.2 参数调优的边界:哪些该动,哪些别瞎动

TCP 协议栈有一堆内核参数,很多人遇到性能问题就想去改。我见过最危险的操作是随手把tcp_tw_reuse和tcp_tw_recycle打开想解决 TIME_WAIT 过多的问题。tcp_tw_recycle在 NAT 环境下会导致非常隐蔽的连接失败,因为它依赖时间戳判断旧报文,而不同机器的时钟不同步时会把正常连接误杀。这个参数在现代内核里已经被移除,但旧系统上还在,踩过坑的人都知道它的厉害。TIME_WAIT 多本身不一定是个问题,除非是连接数实在太大、端口不够用,才考虑调tcp_fin_timeout或者让业务侧改用连接池、长连接,从源头减少建连次数。

更值得动的是这些:somaxconn决定全连接队列大小,高并发下调大它能显著减少连接被拒的情况;tcp_keepalive_time控制 TCP 保活探测的间隔,对清理死连接很有用;net.ipv4.ip_local_port_range决定本地可用端口范围,主动外呼连接多的服务要适当扩大。任何调优都要先在测试环境压测验证,并且把改了什么记录下来,否则线上出了新问题你都不知道是不是自己改出来的。

7.3 一些掏心窝子的经验

最后分享几个这些年沉淀下来的习惯。第一,学协议栈一定要配合抓包,光看书会很快忘记,亲手抓到一次重传、一次乱序,记忆会保留很久。第二,排障时心里始终装着一句话:没有玄学,只有还没看到的层。所有“莫名其妙就好了”的问题,都是没有找到真正的根因。第三,给团队做分享时不要只讲原理,拿一个真实故障从头到尾复盘,大家吸收得最快。

我个人在面试和带新人时最看重的一点,是遇到问题能不能说出自己的排查路径。TCP/IP 协议栈的每一个层、每一个字段,最终都会映射到某个真实故障上。当你把原理和实战串成一条线,再复杂的网络问题也不过是沿着这条线找断点而已。希望这篇长文能把这条线给你串起来,剩下的,就是多在真实现场里摸爬滚打。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/11 17:01:09

全国省市县三级逐日最低气温数据处理与GIS应用指南

拿到这类数据包,我最怕的不是文件太大,而是打开之后“看起来正常、用起来全错”。1980-2024年全国省市县三级逐日最低气温数据,听上去就是一张干干净净的Excel表加几个Shapefile,但真放进GIS里操作,编码、单位、日期格…

作者头像 李华
网站建设 2026/10/11 16:57:07

Python开发者必会的Linux命令:从项目初始化到线上排障

1. 开篇:为什么Python开发者离不开Linux命令 说实话,我接触过不少Python开发者,有人写Python两年了,还是习惯在Windows上做开发,一提到Linux就有点抵触。但真正开始部署项目、处理线上问题之后,几乎所有人都…

作者头像 李华
网站建设 2026/10/11 16:49:36

CNN卷积神经网络实战:MNIST手写识别从零到99%准确率

简介:面向深度学习初学者、TensorFlow入门者以及需要完成图像识别课程设计的读者,这份资源以经典MNIST手写数字识别为切入点,用一个紧凑的CNN实现展示从数据输入、卷积层、池化层、全连接层到softmax分类的完整流程。zip压缩包内共2个Python脚…

作者头像 李华
网站建设 2026/10/11 16:48:57

计算机网络物理层详解:从编码、带宽到光纤与信道复用

很多人做网络排障时有个惯性:先看IP、再查网关、最后才想起物理层。可真正干过几年网络运维的人都知道,百分之七十的“灵异问题”都出在物理层——网线没打对、光纤弯折过大、设备端口协商失败,这些才是让业务断断续续的元凶。这一章讲的物理…

作者头像 李华
网站建设 2026/10/11 16:48:13

AI原生的MDM平台到底有多强大?

很多集团企业在主数据治理上反复踩坑:投入预算上线 MDM 平台,但长期依赖 IT 人员维护,客商、物料主数据重复问题依然层出不穷;业务人员觉得操作复杂不愿使用,主数据标准更新滞后,跨系统口径不一致问题难以根…

作者头像 李华
网站建设 2026/10/11 16:46:40

RAID 0/1/5/6/10全解析:选型、建阵列与故障恢复实战指南

如果你跟我一样整天和存储设备打交道,那“RAID 0/1/5/6/10”这几个数字绝对不陌生。很多人刚接触服务器时,第一课就是背RAID级别的概念:0要性能,1要安全,5折中,10又安全又性能。可真到了选型、建阵列、坏盘…

作者头像 李华