课程背景
计算机网络是程序员的一门必修课,在工作中无论是应对日常开发、日常排查,还是解决突发的网络问题(网络调试、网络优化)都离不开计算机网络。
要想成为优秀的工程师、架构师,朝着更高阶、更高薪的岗位去晋升,补足编程必备基础知识计算机网络是绕不过去的一关。
你会学到什么?
本专栏分为 5 个模块,帮助你系统地学习计算机网络相关的知识点,每个模块对应一个热门的面试方向,每一讲都会以高频面试题为引,介绍这个方向上涉及的重点内容,引出很多在工作中关心的问题和技术难点。
模块一:互联网和传输层协议
这个模块会介绍互联网的体系和整体框架,参与的硬件设备,以及它们的作用。还会介绍传输层协议 TCP 和 UDP,重点讨论它们的的工作原理、算法和优化策略。这部分知识是计算机网络的基础,也最能体现网络设计的精髓。
模块二:网络层
这个模块会围绕局域网和 IP 协议展开,包括 ARP、IPv4、IPv6、NAT 等基本概念,探讨 IPv6 的工作原理,以及 IPv6 和 IPv4 的兼容策略。IP 协议几乎是网络层的唯一协议,是大厂面试最为热门的内容之一。模块一和模块二属于基础篇,是计算机网络最底层的基础知识。
模块三:网络编程
这个模块会围绕 Socket 讨论网络编程,介绍各种网络 I/O 模型和编程方式的优缺点,并以 RPC 框架设计为题去落地学到的这些知识和实现。讨论在不同的并发量、针对不同服务特性选择不同的 I/O 模型,等等,进而帮助你学习如何优化自己系统的网络,这部分内容会为企业带来实际价值,因此面试官会重点提问。
模块四:Web 技术
这个模块会讨论平时使用最多且最重要的应用层协议——HTTP 协议(包括 HTTP 2.0),并扩大讨论范围到 Web 技术生态,比如从 DNS 看缓存、从 CDN 看负载均衡、从 HTTP 协议看开发规范、从流媒体技术看协议选择,以及从爬虫技术看网络安全。
模块五:网络安全
这个模块会讨论网络安全技术,一部分是基础设施,比如证书、加解密、公私钥体系等;另一部分是具体的攻击手段,比如 DDoS、XSS、SQL 注入、中间人攻击等,以及它们的防御手段。安全是所有互联网公司的高压线,学完这块内容能够帮助你屏蔽掉一些高危操作,在工作中避免出现安全问题。
课程目录
开篇词
开篇词 | 一次搞定计算机网络,高效修炼程序员内功
课前导读 | 程序员如何打好计算机领域的基础?
模块一:互联网和传输层协议
01 | 漫游互联网:什么是蜂窝移动网络?
02 | 传输层协议 TCP:TCP 为什么握手是 3 次、挥手是 4 次?
03 | TCP 的封包格式:TCP 为什么要粘包和拆包?
04 | TCP 的稳定性:滑动窗口和流速控制是怎么回事?
05 | UDP 协议:TCP 协议和 UDP 协议的优势和劣势?
加餐 | 模块一思考题解答
模块二:网络层协议
06 | IPv4 协议:路由和寻址的区别是什么?
07 | IPv6 协议:Tunnel 技术是什么?
08 | 局域网:NAT 是如何工作的?
09 | TCP 实战:如何进行 TCP 抓包调试?
加餐 | 模块二思考题解答
模块三:网络编程
10 | Socket 编程:epoll 为什么用红黑树?
11 | 流和缓冲区:缓冲区的 flip 是怎么回事?
12 | 网络 I/O 模型:BIO、NIO 和 AIO 有什么区别?
13 | 面试中如何回答“怎样实现 RPC 框架”的问题?
加餐 | 模块三思考题解答
模块四:Web 技术
14 | DNS 域名解析系统:CNAME 记录的作用是?
15 | 内容分发网络:请简述 CDN 回源如何工作?
16 | HTTP 协议面试通关:强制缓存和协商缓存的区别是?
17 | 流媒体技术:直播网站是如何实现的?
18 | 爬虫和反爬虫:如何防止黑产爬取我的数据?
加餐 | 模块四思考题解答
模块五:网络安全
19 | 网络安全概述:对称、非对称加密的区别是?
20 | 信任链:为什么可以相信一个 HTTPS 网站?
21 | 攻防手段介绍:如何抵御 SYN 拒绝攻击?
加餐 | 模块五思考题解答
结束语
结束语 | 未来需要怎样的工程师
讲师介绍
林䭽,前阿里高级技术专家(P8)
10 年互联网研发和团队管理经验,主导过亿级 PV 的 C 端产品架构、中型大数据集群,以及商业智能分析建设。曾担任多家 Top 级互联网公司架构师/Leader,参与过大型复杂系统(排期上万人天 )架构,精通多个方向和多门计算机语言,主攻中台建设、领域驱动开发和大型系统架构。