计算机网络
Computer Networks
📖这门课到底讲什么
计算机网络以分层体系为主线,讲清数据如何在世界范围内可靠传递:应用层(HTTP、DNS、SMTP)、传输层(TCP 与 UDP、可靠传输、流量与拥塞控制)、网络层(IP、路由算法、NAT、ICMP)、数据链路层(以太网、交换、差错检测)与物理层基础,并涉及网络安全与移动网络概述。学完你应能解释一次网页访问从 DNS 解析到 TCP 握手再到 HTTP 请求响应的完整过程、用抓包工具分析真实报文、编写基于 Socket 的客户端服务器程序、并针对丢包与延迟问题做出合理的排查与调优。它是后端开发、运维、安全、云网络方向的核心基础。
🎯为什么必须学好
考研 408 中网络约二十五分,考点集中且套路明确;面试中 TCP 三次握手四次挥手、为什么不能两次、TIME_WAIT 的作用、HTTP 与 HTTPS、从输入网址到页面展示发生了什么,几乎是必问。后端岗位日常需要排查连接超时、丢包、DNS 解析慢等问题,网络功底直接决定排障效率。这是最容易在面试中拉开差距的一门课,也是所有系统方向共通的语言。
📌核心知识清单
- 分层模型:OSI 七层与 TCP/IP 五层、封装与解封装、协议数据单元、分层设计的优缺点
- 应用层:HTTP 请求方法与状态码、报文结构与首部、Cookie 与 Session、HTTPS 与 TLS 握手、DNS 递归与迭代查询、SMTP 与 FTP
- 传输层可靠传输:TCP 报文段结构、三次握手与四次挥手、序号与确认、超时重传与快速重传、滑动窗口、流量控制与拥塞控制(慢启动、拥塞避免、快恢复)
- 传输层对比与 UDP:UDP 的特点与适用场景、TCP 与 UDP 选择、QUIC 的动机与改进、端口与套接字编程接口
- 网络层与 IP:IPv4 报文结构、地址分类与子网划分与 CIDR、ARP 与 ICMP、DHCP、NAT 原理、IPv6 概述
- 路由与转发:路由器结构与转发流程、距离向量与链路状态算法、RIP/OSPF/BGP 概述、最长前缀匹配
- 数据链路层:成帧、差错检测(校验和、CRC)、以太网与 MAC 地址、交换机与自学习、VLAN 与生成树初步
- 网络性能与安全:带宽时延积、RTT 与吞吐量、抓包分析、常见攻击(ARP 欺骗、SYN Flood、DNS 劫持)与防护手段
✍️怎么学(可执行步骤)
- 以《计算机网络:自顶向下方法》(Kurose)为主线,从应用层往下学更有动力;再用谢希仁《计算机网络》补齐国内考点术语
- 用 Wireshark 抓一次完整网页访问的包并逐层分析:DNS 查询、TCP 三次握手、TLS 握手、HTTP 请求响应,导出分析笔记,这比背十遍分层更有效
- 用 Python socket 或 Java Socket 写客户端服务器程序(回声服务、简易文件传输、多线程聊天室),亲手处理粘包与半包问题
- 用 tcpdump 与 ping/traceroute/curl -v 做故障排查练习:人为制造端口不可达、丢包、DNS 失败场景并观察现象,训练排障直觉
📚推荐教材与书籍
从应用层开始的写法最适合入门,传输层与网络层讲解透彻,配套实验与习题质量高
国内考研主流教材,术语与考点契合,重点第3至5章传输层、网络层与数据链路层
TCP/IP 实现细节的权威著作,做协议分析与排障时反复查阅
Socket 编程圣经,做高性能服务器开发必读,重点是阻塞与非阻塞、IO 复用章节
🎬视频课程 / 公开课
推荐哈工大或电子科技大学版本,与教材考点贴合
作者官方站点,提供交互式实验 Wireshark Labs 与讲义,强烈推荐配合教材做实验
🌐网站与文档
抓包分析工具,含官方样例抓包文件,是理解协议的最好教具
Socket 编程经典免费教程,中文版流传广泛,适合照着写服务器
HTTP 首部、状态码、缓存的权威中文参考
🐙GitHub 开源资料
网络面试题系统整理,从分层到 TCP 细节覆盖全面,适合面试前一周过一遍
含计算机网络笔记与高频面试题,可用来核对知识盲区
Go 后端面试题集合,网络部分贴合工程实践,含大量 TCP/HTTP 追问
🧪动手实践任务
实践 1
用 Wireshark 抓取一次 HTTPS 访问并分析:找出 DNS 查询与响应、TCP 三次握手、TLS ClientHello 与 ServerHello、加密应用数据,写成分析报告
实践 2
实现一个支持多客户端的 TCP 聊天服务器:处理收发包粘包问题(定长或长度前缀协议),支持广播与私聊,写客户端测试
实践 3
实现一个简易 HTTP 服务器:解析请求行与首部、返回静态文件并设置正确的 Content-Type 与状态码,用 curl 与浏览器验证
实践 4
做一次子网划分练习:给定 192.168.10.0/24 与部门需求,划分子网并写清可用地址范围与掩码,再用路由器或模拟器验证
🧾考试与面试
💼 面试会怎么考
必问:TCP 三次握手与四次挥手的过程、为什么需要三次而不能两次、TIME_WAIT 状态的作用与过多时的处理;TCP 如何保证可靠传输(序号确认、重传、滑动窗口、流量控制与拥塞控制);TCP 与 UDP 的区别与适用场景;HTTP 1.1 与 2.0 的主要差别、长连接与队头阻塞、HTTPS 的握手与证书验证;输入网址到页面显示的全过程;Cookie 与 Session 的区别以及分布式下 Session 共享方案;ping 与 traceroute 的原理。
📝 期末与考研怎么过
期末重点:分层与协议对应关系、TCP 各种控制机制的过程描述与计算(窗口变化、拥塞窗口曲线)、子网划分与路由表匹配、CRC 与校验和计算、DNS 与 HTTP 报文分析。考研 408 中网络多为记忆与理解题,计算集中在子网划分与窗口。备考:把 TCP 状态机、窗口与拥塞控制曲线画熟,真题限时训练。目标期末八十五分以上,考研网络部分争取全对。
⚠️ 常见坑
- 只背分层与协议名,不理解封装与端到端过程,遇到从输入网址到显示页面这类综合题就答不完整
- 混淆流量控制与拥塞控制的作用与实现(接收方窗口 vs 网络拥塞),答面试题时被抓
- 认为 TCP 是百分之百可靠、UDP 完全不可靠的绝对化理解,忽视应用层重传与 QUIC 的出现
- 不抓包只读书,对真实报文的时序与标志位没有概念,排障时无从下手
- 子网划分只记公式不理解掩码运算,考试时地址范围与广播地址算错