软件工程本科生宝典
首页/课程学习引导/计算机网络
系统与网络 · 大三上

计算机网络

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 劫持)与防护手段

✍️怎么学(可执行步骤)

  1. 以《计算机网络:自顶向下方法》(Kurose)为主线,从应用层往下学更有动力;再用谢希仁《计算机网络》补齐国内考点术语
  2. 用 Wireshark 抓一次完整网页访问的包并逐层分析:DNS 查询、TCP 三次握手、TLS 握手、HTTP 请求响应,导出分析笔记,这比背十遍分层更有效
  3. 用 Python socket 或 Java Socket 写客户端服务器程序(回声服务、简易文件传输、多线程聊天室),亲手处理粘包与半包问题
  4. 用 tcpdump 与 ping/traceroute/curl -v 做故障排查练习:人为制造端口不可达、丢包、DNS 失败场景并观察现象,训练排障直觉

📚推荐教材与书籍

计算机网络:自顶向下方法(第7版)James F. Kurose, Keith W. Ross · 经典

从应用层开始的写法最适合入门,传输层与网络层讲解透彻,配套实验与习题质量高

计算机网络(第7版)谢希仁 · 经典

国内考研主流教材,术语与考点契合,重点第3至5章传输层、网络层与数据链路层

TCP/IP详解 卷1:协议W. Richard Stevens · 进阶

TCP/IP 实现细节的权威著作,做协议分析与排障时反复查阅

UNIX网络编程 卷1:套接字联网APIW. Richard Stevens · 进阶

Socket 编程圣经,做高性能服务器开发必读,重点是阻塞与非阻塞、IO 复用章节

🎬视频课程 / 公开课

计算机网络中国大学MOOC

推荐哈工大或电子科技大学版本,与教材考点贴合

作者官方站点,提供交互式实验 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 的出现
  • 不抓包只读书,对真实报文的时序与标志位没有概念,排障时无从下手
  • 子网划分只记公式不理解掩码运算,考试时地址范围与广播地址算错
→ 查看 大三上学期 的完整学期安排