计算机网络
目录概述
你发一个请求过去,数据包是怎么找到对方并安全返回的?为什么HTTP/2比HTTP/1.1快那么多?为什么重试可能会把系统打垮?
这个模块用直观类比带你穿透网络协议的层层迷雾。我们不背RFC文档,而是用真实场景讲清楚每层协议"解决什么问题"和"为什么这么设计"。
【直观类比】 网络通信就像寄快递。你把包裹交给快递员,他贴上标签,走公路/铁路/航空运到目的地,中间可能换好几次交通工具。每一层协议就是快递系统里的一个环节:包装是应用层,面单是传输层,物流路由是网络层,加油站是数据链路层。
内容范围
核心协议篇:
- 应用层:HTTP/HTTPS、WebSocket、DNS
- 传输层:TCP、UDP、QUIC
- 网络层:IP、ICMP、路由
- 数据链路层:以太网、ARP
- 安全层:TLS/SSL、数字证书
面试高频篇:
- TCP三次握手和四次挥手(为什么是三次不是两次?)
- TCP粘包和半包问题(怎么解决?)
- HTTP/1.1 vs HTTP/2 vs HTTP/3(演进逻辑)
- TCP滑动窗口和拥塞控制(慢启动、拥塞避免)
- 长连接和连接池(怎么配置才合理?)
【直观类比】 三次握手就像两个人打电话:拨电话的人说"喂,能听到吗?"——SYN;接电话的人说"能听到,你能听到我吗?"——SYN-ACK;拨电话的人说"听到了!"——ACK。三次确认才能开始聊天,四次挥手为什么要等?
学习路径指引
第一阶段:建立全局观(1周)
这个阶段要知道网络分层和每层职责。
必须掌握:
- OSI七层模型 vs TCP/IP四层模型
- 每层负责什么、交付什么给上一层
- 常见协议在哪个层(HTTP在应用层,TCP在传输层)
- 为什么需要分层,而不是一个超级协议搞定一切
生活类比:
- 寄信:写信(应用层)→ 装信封贴邮票(传输层)→ 邮局收件(网络层)→ 快递车运(数据链路层)
- 每一层只管自己的事,拆开信封的人不需要知道信纸是怎么印刷的
第二阶段:吃透TCP/UDP(2周)
这是面试中的重灾区,也是最能拉开差距的地方。
必须理解:
- TCP三次握手的状态转换(LISTEN、SYN_SENT、SYN_RCVD)
- 四次挥手的TIME_WAIT问题
- TCP怎么保证可靠传输(序列号、确认ACK、重传)
- 滑动窗口和流量控制
- 拥塞控制四个算法(慢启动、拥塞避免、快速重传、快速恢复)
UDP的适用场景:
- 实时性要求 > 可靠性(直播、视频会议、游戏)
- QUIC是怎么在UDP上实现可靠传输的
【直观类比】 TCP就像订餐电话,店家说"收到订单"你才放心;UDP就像外卖小哥放到前台,不保证100%送到,但速度快。知道什么时候用什么,才是真正的理解。
第三阶段:HTTP协议进阶(1-2周)
HTTP是面试中问得最多的协议,没有之一。
必须掌握:
- HTTP/1.1的keep-alive和管道化
- HTTP/2的多路复用和头部压缩
- HTTP/3的QUIC协议
- TLS 1.2 vs TLS 1.3 的区别
- 数字证书和CA机构
常见困惑点:
- "HTTP是无状态的"——那Cookie和Session是什么?
- "TCP是面向连接的"——那HTTP/2为什么要在一个TCP连接上开多个流?
- "UDP不可靠"——那怎么保证视频不花屏?
导航指引
网络学完后,这些相关知识等着你:
或者回到 CS首页 查看全貌。
💡
面试高频场景:在分布式系统面试中,面试官喜欢问"如果网络丢包了怎么办"。这题的关键不在于背答案,而是理解每一层协议是怎么处理丢包的——链路层重传、网络层路由切换、传输层拥塞控制、应用层重试。
⚠️
很多人背住了"TCP三次握手",但被追问"SYN半连接队列"和"backlog参数"就懵了。面试不仅考你知不知道,更考你理不理解背后的原理。