计算机网络

目录概述

你发一个请求过去,数据包是怎么找到对方并安全返回的?为什么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不可靠"——那怎么保证视频不花屏?

导航指引

网络学完后,这些相关知识等着你:

  • 操作系统 - 网络底层是操作系统怎么管理 socket 的
  • Java IO - Java 里怎么写网络编程,NIO 和 BIO 的区别
  • 分布式系统 - 网络是分布式通信的基础

或者回到 CS首页 查看全貌。

💡

面试高频场景:在分布式系统面试中,面试官喜欢问"如果网络丢包了怎么办"。这题的关键不在于背答案,而是理解每一层协议是怎么处理丢包的——链路层重传、网络层路由切换、传输层拥塞控制、应用层重试。

⚠️

很多人背住了"TCP三次握手",但被追问"SYN半连接队列"和"backlog参数"就懵了。面试不仅考你知不知道,更考你理不理解背后的原理。