如果你写过后端服务,却说不清一次 connect() 背后到底发生了什么;或者面试被问到 TCP 三次握手、阻塞与非阻塞的区别,只能背个大概——这门课针对的就是这类「会用但不懂」的状态。它讲的是 Linux 下的系统编程与网络编程基础,重点落在 socket 编程、TCP/IP 协议栈的行为,以及文件与磁盘 IO 这些天天打交道、却容易被跳过的底层环节。

它解决的是哪类工作场景

最直接的一类,是排查线上问题。服务连不上、连接队列溢出、大量 TIME_WAIT、读写阻塞导致线程卡死,这些问题靠日志往往看不出根因,得回到系统调用和协议状态去看。另一类是性能调优,比如为什么小包写入频繁会拖慢吞吐、为什么缓冲区大小设置不当会让延迟飙升,这些都需要对 IO 模型有基本判断力。

还有一类偏开发本身:要自己实现一个简易的服务端、写一个客户端工具、处理并发连接,而不是只调用现成的框架。学完这些内容,你至少能独立写出一个基于 socket 的 C 语言服务端与客户端,能自己处理连接的建立、收发和关闭,并大致判断它在哪里可能出问题。

内容的重心在哪

课程把系统编程和网络编程放在一起讲,这个组合是合理的:网络编程里的读写最终都落到文件描述符和 IO 系统调用上,脱离 IO 讲 socket 会浮在表面。

  • 基础部分:文件描述符、常用 IO 系统调用、阻塞与非阻塞的行为差异,这是后面所有内容的底座。
  • 协议部分:TCP/IP 的关键机制,重点不是背协议字段,而是理解连接建立与断开时双方各自处于什么状态。
  • socket 编程:从创建、绑定、监听到收发数据的完整流程,配合可运行的示例,而不是只给接口说明。
  • IO 与磁盘部分:缓冲区、读写模式对性能的影响,这部分对做存储或高并发服务的人更实用。

需要说明的是,它是「基础」定位,不会带你实现一个完整的网络框架,也不会深入内核源码。指望学完就能做架构设计,预期会落空。

适合什么基础的人

比较合适的是:已经会 C 语言基本语法,能在 Linux 上用命令行编译和运行程序,但没系统接触过系统调用和网络编程的人。有后端开发经验、想补底层认知的,学起来会更快,因为很多概念你在实际项目里已经碰过,只是没串起来。

不太合适的是两类:完全没写过 C、只熟悉 Python 或 Java 的人,前期会卡在指针和内存管理上,建议先补语言基础;以及已经在做内核或网络协议开发的人,内容深度不够,收获有限。

怎么用这份资料

建议按「先跑通、再追问」的节奏。每讲到一个示例,先自己编译运行一遍,观察输出,然后改参数看行为变化——比如把阻塞改成非阻塞、把发送数据量调大,看结果有什么不同。这类课光看不动手,等于没学。

其次,把示例当成起点而不是终点。学完 socket 部分后,可以试着给自己定个小目标:写一个能同时处理多个连接的回显服务。过程中遇到的具体问题,往往才是真正记住知识的地方。

最后提醒一句:底层知识的特点是前期见效慢,但一旦理解,排查和设计问题时的心态会完全不同。它不适合突击,适合在项目里边用边补。

课程目录

课程目录16 集
  • 016.16 滑动窗口算法.mp4
  • [22.9 MB] 014.14 TCP三次握手.mp4
  • [17.5 MB] 013.13 TCP与UDP的应用mp4 [72.0 MB] 012.12 socket通讯函数详解.mp4
  • [30.3 MB] 010.10 磁盘读写音频采集.mp4
  • [71.2 MB] 009.09 文件读写IO.mp4
  • [28.5 MB] 008.08 CMake详解.mp4
  • [51.9 MB] 007.07 linux线程锁.mp4
  • [11.3 MB] 006.06 Linux编程之信号.mp4
  • [27.3 MB] 005.05 Linux多线程.mp4
  • [19.7 MB] 004.04 进程与子进程.mp4
  • [22.9 MB] 003.03 ubuntu开发环境.mp4
  • [45.7 MB] 001.01 操作系统API以及区别.mp4
  • [20.3 MB] 015.15 深入TCP协议栈.mp4
  • [42.2 MB] 011.11 socket通讯编程概览.mp4
  • [32.6 MB] 002.02 参考书和Ubuntu环境.mp4
  • [15.7 MB] 适合人群 Linux系统管理员 软件开发者 网络工程师 学习收获 掌握Linux网络编程基础 学会使用socket编程 提升系统性能优化能力 祝您学习愉快! 学有所成,前程似锦!