**从协议原理到代码落地:C 语言网络编程实战**

这门课主要解决“懂 TCP/IP 概念但无法用 C 语言写出可运行服务端”的痛点。很多开发者在复习面试题或转岗后端时,容易卡在套接字(Socket)API 的具体行为、并发模型选择以及 HTTP 协议交互细节上。本课程跳过晦涩的纯理论推导,直接从 Linux 环境下的 C 编程实践切入,通过 UDP 简单通信入手,逐步深入 TCP 可靠传输、并发服务处理及简易 Web 服务器开发。适合具备 C 语言基础(熟悉指针、结构体、进程线程概念)且熟悉 Linux 基本操作的学习者;若从未写过 100 行以上 C 代码,建议先补强语法基础。

**先攻克 UDP 与 TCP 核心,再挑战并发与 Web**

学习路径建议分三个阶段推进。第一阶段重点突破第 2 章 UDP 编程和第 4 章前半部分的 TCP 基础。先理解 socket 接口的创建、绑定、连接及数据收发逻辑,区分 UDP 的无连接特性与 TCP 的三次握手、四次挥手细节。务必手动实现一个基本的 UDP 客户端和服务端,使用网络调试助手验证数据包收发,这是建立“数据在网络上流动”直觉的关键。

第二阶段集中火力攻克并发难题,即第 4 章的后半部分。TCP 原生单线程模型无法处理多客户端同时连接,课程深入剖析了基于多进程(fork)和多线程(pthread)的并发实现方案。这里不仅要看懂代码,更要理解“原本不是并发服务器”的原因,以及为何在实际 Web 场景中多线程更优于多进程。建议对比运行两种并发模型,观察资源占用和响应速度差异。

第三阶段是综合应用,结合 HTTP 协议知识,开发一个简易 Web 服务器。这不仅是代码堆叠,而是对前面所有知识的整合:如何解析 HTTP 请求、如何返回静态文件、如何保持连接管理。

**学完能做什么,资料怎么配合**

学完这门课,你应能独立从零搭建一个支持并发请求的简易 Web 服务框架,并清晰解释从浏览器输入 URL 到获取网页背后的完整网络通信过程(包括交换机、路由器的工作原理对代码层的影响)。你应能回答以下问题:`accept` 函数在并发中的作用机制?UDP 和 TCP 在 `send`/`recv` 上的本质区别?如何用 `fork` 或 `pthread` 让服务器同时响应多个连接?

资料包中的视频是核心,建议按章节顺序观看。第 5 章关于交换机、路由器的内容看似与 C 代码无关,实则是理解“跨网段通信”和“浏览器访问 Web 服务器”宏观视角的基础,务必配合代码调试理解。练习时,不要只抄代码,要在每章结束后删除代码,凭记忆重新敲写并运行。利用“网络调试助手”作为黑盒测试工具,监控 TCP/UDP 数据包的收发状态。若遇到 `bind` 失败或 `listen` 报错,参考视频中关于端口占用和权限配置的讲解进行排查。最后,将简易 Web 服务器扩展为支持多文件类型的版本,这是检验是否真正掌握并发与协议解析的最佳作业。

课程目录

📁 第5章_网络通信过程
📁 视频
5.07 通信过程(浏览器跨网访问Web服务器).wmv [15.3 MB]
5.06 使用路由器实现不同网段主机之间通信.wmv [71.9 MB]
5.02 交换机介绍.wmv [2.9 MB]
5.04 使用交换机实现主机之间的通信.wmv [47.9 MB]
5.01 网络通信概述.wmv [11.4 MB]
5.05 路由器介绍.wmv [7.6 MB]
5.03 交换机功能.wmv [3.5 MB]
📁 第4章_TCP网络编程
📁 视频
4.10 accept函数.wmv [18.4 MB]
4.21 web编程开发.mp4 [146.4 MB]
4.08 bind函数.wmv [4.3 MB]
4.11 TCP服务器例子.wmv [39.8 MB]
4.20 Webserver通信过程.wmv [3.9 MB]
4.05 recv函数.wmv [3.0 MB]
4.16 多进程实现并发.wmv [28.8 MB]
4.01 TCP介绍、编程流程.wmv [22.3 MB]
4.09 listen函数.wmv [3.0 MB]
4.13 三次握手.wmv [5.4 MB]
4.06 客户端code.wmv [32.8 MB]
4.07 做为TCP服务器需要具备的条件.wmv [4.2 MB]
4.15 TCP原本不是并发服务器的原因.wmv [28.6 MB]
4.17 多线程实现并发.wmv [16.5 MB]
4.02 TCP编程-socket.wmv [10.7 MB]
4.18 web服务器简介.wmv [3.6 MB]
4.03 connect函数.wmv [3.9 MB]
4.14 四次挥手.wmv [4.3 MB]
4.19 HTTP协议.wmv [4.5 MB]
4.12 close关闭套接字.wmv [5.1 MB]
4.04 send函数.wmv [4.3 MB]
📁 第2章_UDP编程
📁 视频
2.09 IPv4套接字地址结构.wmv [16.6 MB]
2.16 接收“网络调试助手”的数据.wmv [32.3 MB]
2.06 UDP编程CS架构.wmv [11.6 MB]
2.05 网络编程接口socket.wmv [9.2 MB]
2.11 发送数据—sendto函数.wmv [6.5 MB]
2.12 向“网络调试助手”发送消息.wmv [61.0 MB]
2.07 创建socket套接字.wmv [8.0 MB]
2.14 bind示例.wmv [19.6 MB]
2.03 地址转换函数.wmv [37.9 MB]
2.08 创建UDP套接字demo.wmv [13.0 MB]
2.15 接收数据—recvfrom 函数.wmv [6.5 MB]
2.04 UDP概述.wmv [5.3 MB]
2.01 字节序概述.wmv [24.4 MB]
2.13 绑定--bind函数.wmv [13.4 MB]
2.19 UDP服务器注意点.wmv [15.4 MB]
2.17 CS架构回顾.wmv [6.4 MB]
2.10 两种地址结构使用场合.wmv [2.5 MB]
2.02 字节序转换函数.wmv [18.5 MB]
2.18 UDP客户端注意点.wmv [13.8 MB]
📁 第6章_原始套接字
📁 视频
6.22 在linux与windows系统下查看ARP表的方式.wmv [16.6 MB]
6.17 用sendto发送原始套接字数据.wmv [3.7 MB]
6.01 UDP编程回顾.wmv [19.9 MB]
6.19 发送数据demo.wmv [7.1 MB]
6.13 网络数据分析图.wmv [10.1 MB]
6.04 创建原始套接字.wmv [3.8 MB]
6.02 TCP编程回顾.wmv [7.7 MB]
6.07 UDP封包格式.wmv [10.1 MB]
6.11 ICMP封包格式.wmv [2.9 MB]
6.16 代码讲解以及混杂模式.wmv [39.7 MB]
6.18 本机网络接口.wmv [5.7 MB]
6.08 IP封包格式.wmv [41.5 MB]
6.05 创建链路层的原始套接字.wmv [13.7 MB]
6.06 组装、拆解udp数据包流程.wmv [10.9 MB]
6.03 原始套接字概述.wmv [10.3 MB]
6.23 ARP协议格式.wmv [8.3 MB]
6.09 Ethernet封包格式.wmv [9.2 MB]
6.14 ARP数据解析图.wmv [7.8 MB]
6.10 TCP封包格式.wmv [39.2 MB]
6.20 通过ioctl来获取网络接口地址.wmv [10.9 MB]
6.15 IP数据解析图.wmv [10.9 MB]
6.12 编程实例—分析MAC数据包.wmv [14.2 MB]
6.24 向指定IP发送ARP请求(demo).wmv [29.6 MB]
6.21 ARP概述.wmv [7.9 MB]
📁 第3章_UDP编程-TFTP、广播、多播
📁 视频
3.01 TFTP概述.wmv [8.7 MB]
3.05 广播的概念.wmv [13.7 MB]
3.12 多播流程.wmv [3.4 MB]
3.02 TFTP通信过程.wmv [14.3 MB]
3.15 加入多播组示例.wmv [15.5 MB]
3.07 广播流程.wmv [4.2 MB]
3.11 多播工作过程.wmv [7.6 MB]
3.04 练习—TFTP客户端.wmv [53.5 MB]
3.03 TFTP协议分析.wmv [17.7 MB]
3.08 套接字选项.wmv [5.7 MB]
3.14 多播套接口选项.wmv [4.0 MB]
3.10 多播的概念.wmv [9.8 MB]
3.06 广播与单播的对比.wmv [14.9 MB]
3.09 广播示例.wmv [18.0 MB]
3.13 多播地址结构体.wmv [3.8 MB]
📁 第7章_BS开发
📁 视频
7.18 js变量、数据类型、控制语句和函数.wmv [30.0 MB]
7.33 CGI编程.wmv [14.2 MB]
7.11 超链接标签.wmv [17.8 MB]
7.12 表格标签.wmv [16.2 MB]
7.28 根据不同的浏览器创建异步请求对象.wmv [6.0 MB]
7.32 CGI处理步骤.wmv [2.1 MB]
7.06 什么是HTML.wmv [5.3 MB]
7.36 案例3:以post形式发送请求.wmv [16.4 MB]
7.35 案例2:以get形式发送请求.wmv [22.7 MB]
7.02 嵌入式web开发模型.wmv [5.7 MB]
7.31 什么是CGI.wmv [6.0 MB]
7.07 HTML语法.wmv [8.0 MB]
7.01 常见的Web技术.wmv [28.0 MB]
7.30 标准的XMLHttpRequest方法以及案例讲解.wmv [27.6 MB]
7.26 AJAX概述.wmv [17.5 MB]
7.23 内部对象(String类 对象).wmv [25.9 MB]
7.21 内部对象(Date对象).wmv [31.2 MB]
7.03 BS架构.wmv [12.6 MB]
7.17 js保留关键字(全部用小写).wmv [4.0 MB]
7.14 什么是 Javascript.wmv [2.6 MB]
7.24 其他对象.wmv [13.5 MB]
7.15 网页使用js脚本的三种方式.wmv [28.8 MB]
7.13 表单标签.wmv [29.3 MB]
7.08 html头部、主体和标题标记.wmv [22.1 MB]
7.25 全局函数.wmv [2.3 MB]
7.09 元信息标记.wmv [24.6 MB]
7.19 浏览器对象(window对象).wmv [16.8 MB]
7.20 文本对象(Document对象).wmv [13.0 MB]
7.04 Web原理.wmv [2.4 MB]
7.34 案例1:测试cgi.wmv [10.6 MB]
7.10 标题标签和文字标签.wmv [29.8 MB]
7.22 内部对象(Math对象).wmv [19.5 MB]
7.27 AJAX原理.wmv [9.3 MB]
7.05 boa web服务器移植.wmv [56.1 MB]
7.29 标准的XMLHttpRequest属性.wmv [15.0 MB]
7.16 js编程概述.wmv [4.1 MB]
📁 第1章_计算机网络概述
📁 视频
1.04 TCP协议简介.wmv [9.0 MB]
1.03 IP协议简介.wmv [7.4 MB]
1.07 ip地址.wmv [55.6 MB]
1.06 mac地址.wmv [26.7 MB]
1.12 网络层、传输层封包格式.wmv [7.8 MB]
1.01 计算机网络发展简史.wmv [51.6 MB]
1.09 端口.wmv [15.5 MB]
1.13 网络应用程序开发流程.wmv [19.4 MB]
1.10 数据包在各个层之间的传输.wmv [10.9 MB]
1.02 协议分层结构.wmv [34.8 MB]
1.08 子网掩码.wmv [9.4 MB]
1.05 UDP协议简介.wmv [6.1 MB]
1.11 链路层封包格式.wmv [9.5 MB]