李述铜是一位著名的计算机科学家,他从零开始手写了一个TCP/IP协议栈,并实现了它。这个协议栈是用C语言编写的,并且包含了一万行以上的代码。这个协议栈是一个非常复杂的系统,它涉及到网络通信、数据包处理、协议规范等多个方面。下面是对这个协议栈的详细介绍:

1. **网络接口层**:这是TCP/IP协议栈的最底层,负责与物理网络接口进行交互。这个层通常包括网络驱动程序、网络接口卡、网卡驱动程序等。在这个层次中,代码需要处理网络硬件设备的驱动程序和数据包接收。
2. **链路层**:链路层负责在物理网络上传输数据包。在这个层次中,代码需要处理数据包的封装和解封装、错误检测、数据包的传输控制等问题。
3. **网络层**:网络层负责将数据包从源主机发送到目标主机。在这个层次中,代码需要处理IP地址、路由、数据包转发等问题。
4. **传输层**:传输层负责在主机之间建立可靠的端到端连接,并处理数据包的传输和确认等问题。在这个层次中,代码需要实现TCP和UDP协议。
5. **应用层**:应用层负责处理应用程序的数据传输和处理。在这个层次中,代码需要实现各种应用程序协议,如HTTP、FTP、SMTP等。

在实现这个协议栈的过程中,李述铜使用了许多不同的技术和工具。例如,他使用了C语言的指针和结构体来处理数据结构,使用了操作系统提供的网络编程接口来处理网络通信,使用了调试工具来调试代码等。此外,他还参考了许多现有的协议规范和标准,以确保他的代码符合标准规范。

总的来说,实现一个完整的TCP/IP协议栈是一个非常复杂和困难的任务。这个协议栈涉及到许多不同的技术和细节问题,需要深入理解计算机网络和协议规范。因此,这个项目是一个非常有挑战性和价值的项目,它可以帮助程序员深入了解TCP/IP协议栈的工作原理和实现细节。

课程截图:

【李述铜】从0手写,用10000+行代码实现TCP_IP协议栈
├──diy-tcpip-master
| └──diy-tcpip-master.rar 53.43M
├──第10章 网络接口层设计
| ├──001.第10.00 网络接口的设计规划.mp4 18.82M
| ├──002.第10.01 添加网络接口结构_20240513222424.pptx 4.50M
| ├──002.第10.01 添加网络接口结构.mp4 32.28M
| ├──003.第10.02 初始化网络接口层.mp4 19.15M
| ├──004.第10.03 打开网络接口.mp4 26.66M
| ├──005.第10.04 添加环回接口.mp4 51.28M
| ├──006.第10.05 将地址串转换为IP地址.mp4 25.82M
| ├──007.第10.06 设置网络接口的地址.mp4 18.48M
| ├──008.第10.07 激活环回接口.mp4 16.52M
| ├──009.第10.08 显示网络接口列表.mp4 42.33M
| ├──010.第10.09 关闭和设置缺省的网络接口.mp4 22.01M
| ├──011.第10.10 增加数据包队列的写入和读取.mp4 23.77M
| └──012.第10.11 添加数据包发送接口.mp4 35.43M
├──第11章 支持以太网协议
| ├──001.第11.00 以太网协议设计简介.mp4 17.35M
| ├──002.第11.01 打开物理网络接口.mp4 50.31M
| ├──003.第11.02 接收数据并发给工作线程.mp4 50.55M
| ├──004.第11.03 将数据通过网络接口发出去.mp4 31.02M
| ├──005.第11.04 添加链路层接口.mp4 40.37M
| ├──006.第11.05 添加以太网接口.mp4 25.00M
| ├──007.第11.06 添加以太网包结构定义.mp4 30.42M
| ├──008.第11.07 网络大小端转换(1)-原理介绍.mp4 13.71M
| ├──009.第11.07 网络大小端转换(2)- 转换接口.mp4 27.91M
| ├──010.第11.07 网络大小端转换(3)- 检查大小端.mp4 17.05M
| ├──011.第11.08 以太网输入包的处理.mp4 34.89M
| ├──012.第11.09 显示以太网包结构.mp4 34.24M
| └──013.第11.10 输出以太网数据包.mp4 62.24M
├──第12章 定时器的实现
| ├──001.第12.00 定时器设计简介.mp4 7.31M
| ├──002.第12.01 添加定时器结构.mp4 16.21M
| ├──003.第12.02 增加定时器测试代码.mp4 16.68M
| ├──004.第12.03 插入定时器(简单方法).mp4 17.65M
| ├──005.第12.04 插入定时器(升序方法).mp4 36.91M
| ├──006.第12.05移除定时器.mp4 24.69M
| ├──007.第12.06 扫描定时器列表.mp4 43.45M
| └──008.第12.07 让工作线程处理定时事件.mp4 32.06M
├──第13章 支持ARP协议
| ├──001.第13.00 ARP协议简介.mp4 41.24M
| ├──002.第13.01 向指定IP地址发送数据.mp4 23.06M
| ├──003.第13.02 初始化ARP模块.mp4 23.45M
| ├──004.第13.03 发送ARP请求.mp4 46.09M
| ├──005.第13.04 生成无回报(免费)ARP.mp4 20.70M
| ├──006.第13.05 获取ARP输入包.mp4 29.34M
| ├──007.第13.06 响应发来的ARP请求.mp4 23.58M
| ├──008.第13.07 显示ARP包结构和缓存表.mp4 46.97M
| ├──009.第13.08 分配和释放缓存表项.mp4 23.38M
| ├──010.第13.09 查找和插入表项.mp4 68.83M
| ├──011.第13.10 解析IP地址并发送包.mp4 84.60M
| ├──012.第13.11 给缓存表项增加超时重新请求.mp4 67.27M
| └──013.第13.12 清空ARP表和查找ARP表.mp4 80.22M
├──第14章 初步支持IP协议
| ├──001.第14.00 IP协议简介.mp4 27.81M
| ├──002.第14.01 添加IP数据报头.mp4 25.64M
| ├──003.第14.02 接收输入的IP数据报.mp4 16.25M
| ├──004.第14.03 IP数据报的预处理检查(1).mp4 33.77M
| ├──005.第14.03 IP数据报的预处理检查(2).mp4 47.23M
| ├──006.第14.04 使用校验和检查包头正确性.mp4 37.30M
| ├──007.第14.05 IP数据报分解处理.mp4 44.26M
| ├──008.第14.06 显示IP包内容.mp4 20.23M
| ├──009.第14.07 发送IP数据报.mp4 57.06M
| └──010.第14.08 增加IP包发送检验和计算.mp4 49.78M
├──第15章 支持ICMP协议
| ├──001.第15.00 ICMP协议简介.mp4 13.51M
| ├──002.第15.01 ICMP模块初始化.mp4 15.08M
| ├──003.第15.02 ICMP输入处理.mp4 50.88M
| ├──004.第15.03 响应ping请求.mp4 53.32M
| ├──005.第15.04 用IP包更新ARP表.mp4 36.40M
| └──006.第15.05 报告端口不可达.mp4 70.78M
├──第16章 IP数据报的分片与重组
| ├──001.第16.00 IP分片与重组介绍.mp4 9.03M
| ├──002.第16.01 分片与重组的初始化.mp4 53.52M
| ├──003.第16.02 分片结构的分配与释放.mp4 26.38M
| ├──004.第16.03 分片的查找与添加.mp4 31.60M
| ├──005.第16.04 显示分片列表.mp4 37.98M
| ├──006.第16.05 插入分片.mp4 42.24M
| └──007.第16.06 数据报分片的重组.mp4 57.35M
├──第17章 设计自己的ping命令
| ├──001.第17.00 ping程序实现原理.mp4 7.98M
| ├──002.第17.01 添加ping结构与接口.mp4 27.45M
| ├──003.第17.02 实现ping的发送及响应.mp4 65.56M
| ├──004.第17.03 实现ping的响应结果输出.mp4 35.95M
| └──005.第17.04 增加超时和命令行调用.mp4 34.42M
├──第18章 原始套接字 RAW Socket接口实现
| ├──001.第18.00 socket接口设计结构简介.mp4 9.84M
| ├──002.第18.01 请求核心工作线程执行功能函数.mp4 31.61M
| ├──003.第18.02 发送消息请求执行功能.mp4 47.69M
| ├──004.第18.03 定义自己的地址转换函数接口.mp4 36.21M
| ├──005.第18.04 实现自己的地址转换函数.mp4 51.11M
| ├──006.第18.05 定义socket接口.mp4 13.93M
| ├──007.第18.06 分配socket结构.mp4 29.63M
| ├──008.第18.07 发消息给工作线程分配socket结构.mp4 33.61M
| ├──009.第18.08 sock结构定义及初始化.mp4 50.11M
| ├──010.第18.09 建立RAW结构.mp4 17.57M
| ├──011.第18.10 创建raw结构块.mp4 39.95M
| ├──012.第18.11 初始化数据发送接口.mp4 40.97M
| ├──013.第18.12 将数据包发送出去.mp4 57.79M
| ├──014.第18.13 初始化数据包接收.mp4 38.28M
| ├──015.第18.14 添加sock等待接口.mp4 17.36M
| ├──016.第18.15 实现各种等待接口.mp4 23.52M
| ├──017.第18.16 初始化sock等待结构.mp4 40.29M
| ├──018.第18.17 让接收能够等待.mp4 25.25M
| ├──019.第18.18 添加超时设置接口.mp4 27.25M
| ├──020.第18.19 开启读取超时.mp4 33.67M
| ├──021.第18.20 IP数据包输入处理.mp4 58.71M
| ├──022.第18.21 实现对ping的响应.mp4 59.15M
| ├──023.第18.22 添加close接口.mp4 22.11M
| └──024.第18.23 实现raw接口的关闭.mp4 41.69M
├──第19章 允许通过路由访问Internet
| ├──001.第19.00 访问外部网络的原理.mp4 28.40M
| ├──002.第19.01 设计基础的路由表结构.mp4 16.00M
| ├──003.第19.02 添加路由表项.mp4 27.73M
| ├──004.第19.03 删除路由.mp4 13.25M
| ├──005.第19.04 设置缺省路由.mp4 37.45M
| ├──006.第19.05 从路由表中找到合适的表项.mp4 40.85M
| └──007.第19.06 通过路由器将数据包发往外部.mp4 95.42M
├──第1章 课程概述
| ├──001.第00.00 课程特点.mp4 5.34M
| ├──002.第01.01 课程介绍.mp4 16.57M
| ├──003.第01.02 资料下载.mp4 9.32M
| └──005.第01.03 运行效果演示.mp4 24.42M
├──第20章 支持UDP协议
| ├──001.第20.00 UDP协议简介.mp4 16.37M
| ├──002.第20.01 创建UDP客户端.mp4 63.48M
| ├──003.第20.02 创建UDP回显服务器.mp4 53.90M
| ├──004.第20.03 UDP模块初始化.mp4 13.63M
| ├──005.第20.04 创建UDP套接字.mp4 29.18M
| ├──006.第20.05 UDP数据的发送处理.mp4 30.31M
| ├──007.第20.06 动态分配端口.mp4 36.90M
| ├──008.第20.07 实现UDP数据的发送.mp4 22.10M
| ├──009.第20.08 计算伪校验和.mp4 37.15M
| ├──010.第20.09 UDP输入的处理(1).mp4 55.29M
| ├──011.第20.10 UDP输入的处理(2).mp4 51.03M
| ├──012.第20.11 UDP数据读取的实现.mp4 26.13M
| ├──013.第20.12 关闭UDP套接字.mp4 13.93M
| ├──014.第20.13 增加connect接口(1).mp4 24.99M
| ├──015.第20.13 增加connect接口(2).mp4 20.11M
| ├──016.第20.13 增加connect接口(3).mp4 51.64M
| ├──017.第20.14 增加send接口(1).mp4 17.36M
| ├──018.第20.14 增加send接口(2).mp4 36.90M
| ├──019.第20.17 增加recv接口(1).mp4 10.12M
| ├──020.第20.18 增加recv接口(2).mp4 21.07M
| ├──021.第20.19 增加bind接口(1).mp4 40.67M
| ├──022.第20.20 增加bind接口(2).mp4 78.47M
| ├──023.第20.21 让原始套接字支持connectrecvsend.mp4 49.53M
| └──024.第20.22 UDP协议设计总结.mp4 79.68M
├──第21章 TCP协议之建立基本的链接
| ├──001.第21.00 TCP连接管理简介.mp4 35.44M
| ├──002.第21.00 TCP协议课程规划.mp4 11.86M
| ├──003.第21.01 TCP协议初始化.mp4 13.58M
| ├──004.第21.02 创建TCP套接字.mp4 41.60M
| ├──005.第21.03 接收输入的TCP包.mp4 54.38M
| ├──006.第21.04 发送reset复位包(1).mp4 61.22M
| ├──007.第21.04 发送reset复位包(2).mp4 46.95M
| ├──008.第21.05 几个TCP调试函数.mp4 23.81M
| ├──009.第21.06 增加connectclose回调函数.mp4 9.72M
| ├──010.第21.07 分配端口及检查连接的存在性.mp4 45.36M
| ├──011.第21.08 添加connect等待结构.mp4 23.36M
| ├──012.第21.09 收发窗口及序号初始化.mp4 51.30M
| ├──013.第21.10 发送SYN报文.mp4 54.71M
| ├──014.第21.11 设置TCP状态.mp4 39.14M
| ├──015.第21.12 寻找合适的TCP控制块.mp4 23.58M
| ├──016.第21.13 添加输入状态处理函数.mp4 27.38M
| ├──017.第21.14 响应SYN_ACK报文(1)-终止连接.mp4 41.88M
| ├──018.第21.14 响应SYN_ACK报文(2)-更新序号值.mp4 38.31M
| ├──019.第21.15 从SYN_SENT进入ESTABLISHED.mp4 33.43M
| ├──020.第21.16 从ESTABLISHED进入CLOSE-WAIT.mp4 52.77M
| ├──021.第21.17 从CLOSE_WAIT进入LAST_ACK.mp4 41.01M
| ├──022.第21.18 从LAST_ACK进入CLOSED.mp4 21.93M
| ├──023.第21.19 主动close进入FIN_WAIT_2.mp4 28.15M
| ├──024.第21.20 从FIN_WAIT_2进入TIME_WAIT.mp4 15.33M
| ├──025.第21.21 TIME_WAIT输入处理.mp4 17.65M
| ├──026.第21.22 同时关闭,进入CLOSING(1).mp4 28.36M
| ├──027.第21.22 同时关闭,进入CLOSING(2).mp4 16.61M
| └──028.第21.23 CLOSED状态处理及连接总结.mp4 28.07M
├──第22章 TCP数据传输及滑动窗口算法
| ├──001.第22.00 TCP数据发送介绍.mp4 21.57M
| ├──002.第22.01 初始化发送缓存.mp4 21.66M
| ├──003.第22.02 添加TCP发送的支持.mp4 39.47M
| ├──004.第22.03 将数据写入发送缓存.mp4 22.77M
| ├──005.第22.04 将部分数据发送出去.mp4 36.79M
| ├──006.第22.05 发送全部数据到对方.mp4 38.43M
| ├──007.第22.06 读取TCP选项(MSS).mp4 34.44M
| ├──008.第22.07 TCP数据分段发送.mp4 39.42M
| ├──009.第22.08 TCP数据发送总结(1).mp4 16.87M
| ├──010.第22.08 TCP数据发送总结(2).mp4 66.92M
| ├──011.第22.09 添加接收缓存及接收介绍.mp4 12.40M
| ├──012.第22.10 添加下载测试代码.mp4 28.54M
| ├──013.第22.11 增加TCP读取函数.mp4 26.17M
| ├──014.第22.12 往接收缓存中写数据.mp4 11.75M
| ├──015.第22.13 将数据包中的数据写入缓存.mp4 33.82M
| ├──016.第22.14 从接收缓存读取数据(1).mp4 28.24M
| ├──017.第22.14 从接收缓存读取数据(2).mp4 15.56M
| ├──018.第22.15 半关闭时接收返回EOF.mp4 35.53M
| ├──019.第22.16 连接时写入选项MSS.mp4 28.39M
| ├──020.第22.17 通知对方自己的接收窗口大小.mp4 64.93M
| ├──021.第22.18 检查序号的正确性(1).mp4 46.43M
| ├──022.第22.18 检查序号的正确性(2).mp4 76.61M
| ├──023.第22.19 FIN与数据处理的先后顺序.mp4 24.76M
| └──024.第22.20 TCP数据通信总结.mp4 24.09M
├──第23章 TCP保活机制的实现
| ├──001.第23.00 TCP保活机制简介.mp4 13.83M
| ├──002.第23.01 保活机制的具体功能演示.mp4 34.07M
| ├──003.第23.02 添加setsockopt函数支持.mp4 23.48M
| ├──004.第23.03 定义保活机制相关的变量.mp4 60.46M
| ├──005.第23.04 增加超时处理.mp4 73.94M
| └──006.第23.05 发送keepalive报文.mp4 62.42M
├──第24章 TCP的被动打开实现
| ├──001.第24.00 被动打开与服务器运行.mp4 19.51M
| ├──002.第24.01 增加bind_listen_accept调用支持.mp4 18.48M
| ├──003.第24.02 处理listen和accept回调.mp4 46.60M
| ├──004.第24.03 实现tcp的bind调用.mp4 60.27M
| ├──005.第24.04 实现tcp的listen调用.mp4 25.08M
| ├──006.第24.05 实现tcp的accept调用.mp4 25.19M
| ├──007.第24.06 实现tcp_accept.mp4 33.75M
| ├──008.第24.07 listen状态下的输入处理(1).mp4 57.29M
| ├──009.第24.07 listen状态下的输入处理(2).mp4 44.47M
| ├──010.第24.08 syn_recved状态下输入处理.mp4 51.23M
| ├──011.第24.09 强制关闭tcp连接.mp4 62.70M
| ├──012.第24.10 tcp的timewait状态处理.mp4 44.08M
| ├──013.第24.11 一些修修补补.mp4 49.94M
| └──014.第24.12 TCP补动打开总结.mp4 18.39M
├──第25章 DNS协议实现
| ├──001.第25.00 DNS协议及接口简介.mp4 24.58M
| ├──002.第25.01 添加gethostbyname接口.mp4 34.32M
| ├──003.第25.02 实现gethostbyname(1).mp4 34.32M
| ├──004.第25.02 实现gethostbyname(2).mp4 42.49M
| ├──005.第25.03 DNS模块初始化.mp4 108.06M
| ├──006.第25.04 允许解析localhost和IP地址.mp4 23.38M
| ├──007.第25.05 允许解析域名地址.mp4 143.47M
| ├──008.第25.06 构造DNS请求包(1).mp4 49.76M
| ├──009.第25.06 构造DNS请求包(2).mp4 101.99M
| ├──010.第25.08 获取DNS响应输入.mp4 38.92M
| ├──011.第25.09 添加请求id的处理.mp4 46.16M
| ├──012.第25.10 响应的基本检查.mp4 28.64M
| ├──013.第25.11 提取IP地址.mp4 67.81M
| ├──014.第25.12 通知应用与列表显示.mp4 143.62M
| ├──015.第25.13 初始化缓存表.mp4 15.95M
| ├──016.第25.14 缓存表的插入、删除与查找.mp4 70.40M
| ├──017.第25.15 刷新DNS缓存表.mp4 1.52M
| ├──018.第25.16 多次重试DNS请求.mp4 22.73M
| ├──019.第25.17 DNS程序设计上的一个问题.mp4 18.38M
| └──020.第25.18 DNS设计总结.mp4 17.42M
├──第26章 TCP重时重传处理
| ├──001.第26.00 TCP超时重传处理简介.mp4 31.25M
| ├──002.第26.01 增加重传相关数据.mp4 22.05M
| ├──003.第26.02 TCP输出状态机简介.mp4 12.70M
| ├──004.第26.03 添加不同输出状态下的事件处理函数.mp4 35.48M
| ├──005.第26.04 添加连接SYN的重传超时处理.mp4 53.89M
| ├──006.第26.05 实现SYN的重传.mp4 68.94M
| ├──007.第26.07 继续发送缓存中的数据.mp4 61.70M
| ├──008.第26.07 实现TCP数据的重传.mp4 69.20M
| └──009.第26.08 TCP协议实现总结.mp4 33.46M
├──第27章 移植到x86操作系统
| ├──001.第27.00 移植到x86操作系统.mp4 9.02M
| ├──002.第27.01 移植到x86操作系统演示.mp4 10.77M
| ├──003.第27.02 windows网络环境搭建.mp4 9.64M
| ├──004.第27.03 在操作系统中加入工程源码.mp4 16.25M
| ├──005.第27.04 操作系统接口.mp4 16.81M
| ├──006.第27.05 网络初始化.mp4 15.16M
| ├──007.第27.06 增加系统调用.mp4 17.74M
| ├──008.第27.07 调整内存布局.mp4 13.07M
| ├──009.第27.08 RTL8139驱动实现.mp4 99.49M
| └──010.第27.09 中断锁的处理.mp4 29.35M
├──第28章 移植到STM32(ARM内核)
| ├──001.第28.00 移植到STM32统简介.mp4 7.69M
| ├──002.第28.01 STM32F4移植运行效果演示.mp4 38.92M
| ├──003.第28.02 Keil工程源码组织分析.mp4 14.52M
| ├──004.第28.03 利用RTOS提供的操作系统接口.mp4 23.43M
| ├──005.第28.04 网络初始化.mp4 21.18M
| └──006.第28.05 STM32网卡驱动处理.mp4 33.86M
├──第2章 开发环境搭建
| ├──001.第02.01 开发环境概述.mp4 11.80M
| ├──002.第02.02 Windows开发环境配置.mp4 56.51M
| ├──003.第02.03 Mac开发环境搭建.mp4 59.70M
| └──004.第02.05 工程配置详解.mp4 25.52M
├──第3章 基本概念和原理
| ├──001.第03.00 基本概念和原理.mp4 6.52M
| ├──002.第03.01 向网络上发送数据包.mp4 38.24M
| ├──003.第03.02 接受数据包修改并发回.mp4 20.62M
| ├──004.第03.03 创建线程(1).mp4 11.70M
| ├──005.第03.03 创建线程(2).mp4 23.46M
| ├──006.第03.04 利用计数信号量同步线程.mp4 23.69M
| ├──007.第03.05 线程间的资源访问控制.mp4 33.48M
| ├──008.第03.06 线程间的资源访问控制实例(1)- 循环缓存.mp4 37.68M
| ├──009.第03.06 线程间的资源访问控制实例(2)- 控制读速率.mp4 21.64M
| ├──010.第03.06 线程间的资源访问控制实例(3)- 控制写速率.mp4 36.48M
| ├──011.第03.09 利用套接字设计客户机(1).mp4 13.02M
| ├──012.第03.09 利用套接字设计客户机(2).mp4 56.69M
| ├──013.第03.10 利用套接字设计服务器.mp4 45.98M
| └──014.第03.11 TCPIP体系结构简介.mp4 38.18M
├──第4章 整体结构设计
| ├──001.第04.00 整体软件结构设计.mp4 28.46M
| ├──002.第04.01 协议栈的初始化.mp4 12.06M
| ├──003.第04.02 添加核心工作线程.mp4 28.03M
| └──004.第04.03 创建数据包收发线程.mp4 18.18M
├──第5章 调试信息输出
| ├──001.第05.01 基本调试信息输出.mp4 33.82M
| ├──002.第05.02 给调试输出增加颜色.mp4 29.90M
| ├──003.第05.03 按不同等级输出信息.mp4 40.40M
| └──004.第05.04增加assert断言.mp4 22.81M
├──第6章 设计通用的链表结构
| ├──001.第06.00 通用链表简介.mp4 16.40M
| ├──002.第06.01 创建结点结构.mp4 10.37M
| ├──003.第06.02 创建链表结构.mp4 12.13M
| ├──004.第06.03 头部插入结点.mp4 29.12M
| ├──005.第06.04 遍历链表.mp4 40.67M
| ├──006.第06.06 删除头部结点.mp4 19.27M
| ├──007.第06.06尾部插入结点.mp4 16.27M
| └──008.第06.07 插入到指定结点之后.mp4 19.63M
├──第7章 定长内存块管理
| ├──001.第07.00 协议栈中的存储管理问题.mp4 8.36M
| ├──002.第07.01 创建内存块管理器结构.mp4 12.43M
| ├──003.第07.02 添加锁结构.mp4 13.13M
| ├──004.第07.03 建立内存块链.mp4 30.25M
| ├──005.第07.04 分配内存块.mp4 33.39M
| └──006.第07.05 释放内存块.mp4 15.01M
├──第8章 定长消息队列的实现
| ├──001.第08.00 定长消息队列简介.mp4 9.90M
| ├──002.第08.01 创建定长消息队列结构.mp4 30.51M
| ├──003.第08.02 初始化核心线程的消息通信.mp4 19.26M
| ├──004.第08.03 向工作线程发送消息.mp4 27.60M
| ├──005.第08.04接受网卡线程发来的消息.mp4 33.66M
| └──006.第08.05 销毁消息队列.mp4 7.27M
└──第9章 网络数据包结构设计
| ├──001.第09.00 数据包结构设计简介.mp4 19.41M
| ├──002.第09.01 添加数据包结构.mp4 30.17M
| ├──003.第09.02 分配块链.mp4 56.97M
| ├──004.第09.03 分配指定大小的数据包.mp4 29.96M
| ├──005.第09.04 显示数据包信息.mp4 44.31M
| ├──006.第09.05 释放数据包.mp4 12.03M
| ├──007.第09.06 添加连续包头.mp4 38.97M
| ├──008.第09.07 移除包头.mp4 26.88M
| ├──009.第09.08 添加非连续包头.mp4 17.37M
| ├──010.第09.09 调整包大小(1) – 包的扩大.mp4 25.18M
| ├──011.第09.09 调整包大小(2) – 包的扩大.mp4 35.50M
| ├──012.第09.10 合并两个包.mp4 17.91M
| ├──013.第09.11 调整包头的连续性.mp4 54.44M
| ├──014.第09.12 增加包访问功能.mp4 18.96M
| ├──015.第09.13 写数据包.mp4 49.87M
| ├──016.第09.14 读数据包.mp4 19.90M
| ├──017.第09.15 定位数据包.mp4 28.27M
| ├──018.第09.16 数据包的拷贝.mp4 28.66M
| ├──019.第09.17 填充数据包.mp4 20.35M
| └──020.第09.18 增加其它支持函数.mp4 56.48M

声明:本站所发布的一切视频课程仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站所有课程来自网络,版权争议与本站无关。如有侵权请联系联系客服QQ:1960026872或登录本站账号进入个人中心提交工单留言反馈,我们将第一时间处理!